QA-MCP-Server

AkilLabs/QA-MCP-Server

3.2

If you are the rightful owner of QA-MCP-Server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A comprehensive Model Context Protocol (MCP) server that provides unified API access to multiple services including GitHub, Jira, and Slack.

Multi-Service MCP Server

A comprehensive Model Context Protocol (MCP) server that provides unified API access to multiple services including GitHub, Jira, and Slack. Built with FastAPI and designed for modern application integrations.

๐Ÿš€ Features

  • GitHub Integration: Repository management, issue tracking, and more
  • Jira Integration: Issue creation, retrieval, and project management
  • Slack Integration: Channel management, message sending, and chat history
  • RESTful API: Clean, documented endpoints for all services
  • Async Support: Built with FastAPI for high-performance async operations
  • CORS Enabled: Ready for web application integrations
  • Environment-based Configuration: Secure credential management
  • Docker Ready: Includes Render deployment configuration

๐Ÿ“‹ Prerequisites

  • Python 3.11+
  • Active accounts and API tokens for:
    • GitHub (Personal Access Token)
    • Jira (API Token)
    • Slack (Bot Token and App Token)

๐Ÿ› ๏ธ Installation

  1. Clone the repository

    git clone <repository-url>
    cd MCP
    
  2. Install dependencies

    pip install -r requirements.txt
    
  3. Set up environment variables

    Create a .env file in the project root:

    GITHUB_TOKEN=your_github_personal_access_token
    
    JIRA_URL=https://your-domain.atlassian.net
    JIRA_USERNAME=your_email@example.com
    JIRA_API_TOKEN=your_jira_api_token
    
    SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
    SLACK_APP_TOKEN=xapp-your-slack-app-token
    
    PORT=8000
    HOST=0.0.0.0
    

๐Ÿšฆ Running the Server

Development Mode

uvicorn main:app --reload --host 0.0.0.0 --port 8000

Production Mode

uvicorn main:app --host 0.0.0.0 --port 8000

The server will be available at http://localhost:8000

๐Ÿ“š API Documentation

Once the server is running, you can access:

  • Interactive API Docs: http://localhost:8000/docs
  • ReDoc Documentation: http://localhost:8000/redoc
  • OpenAPI Schema: http://localhost:8000/openapi.json

๐Ÿ”Œ API Endpoints

GitHub Endpoints

MethodEndpointDescription
GET/github/repos/{username}Get user's repositories
GET/github/issues/{repo_name}Get repository issues

Jira Endpoints

MethodEndpointDescription
GET/jira/issuesGet Jira issues (optional project filter)
POST/jira/issuesCreate a new Jira issue

Slack Endpoints

MethodEndpointDescription
GET/slack/channelsGet Slack channels
POST/slack/messagesSend a message to Slack
GET/slack/messages/{channel}Get messages from a channel

General Endpoints

MethodEndpointDescription
GET/Server status and information

๐Ÿ—๏ธ Project Structure

MCP/
โ”œโ”€โ”€ main.py              # FastAPI application and routes
โ”œโ”€โ”€ config.py            # Configuration and settings
โ”œโ”€โ”€ models.py            # Pydantic models for API requests/responses
โ”œโ”€โ”€ services.py          # Service classes for external API integrations
โ”œโ”€โ”€ requirements.txt     # Python dependencies
โ”œโ”€โ”€ render.yaml          # Render deployment configuration
โ”œโ”€โ”€ .env                 # Environment variables (not in version control)
โ””โ”€โ”€ README.md           # Project documentation

๐Ÿ”ง Configuration

Environment Variables

VariableDescriptionRequired
GITHUB_TOKENGitHub Personal Access TokenYes
JIRA_URLYour Jira instance URLYes
JIRA_USERNAMEYour Jira username/emailYes
JIRA_API_TOKENJira API tokenYes
SLACK_BOT_TOKENSlack Bot User OAuth TokenYes
SLACK_APP_TOKENSlack App-Level TokenYes
PORTServer port (default: 8000)No
HOSTServer host (default: 0.0.0.0)No

Setting Up API Tokens

GitHub
  1. Go to GitHub Settings > Developer settings > Personal access tokens
  2. Generate a new token with appropriate scopes (repo, read:user)
Jira
  1. Go to Jira Settings > Products > Application access
  2. Create an API token for your account
Slack
  1. Create a new Slack app at https://api.slack.com/apps
  2. Enable necessary scopes (channels:read, chat:write, etc.)
  3. Install the app to your workspace

๐Ÿš€ Deployment

Render Deployment

This project includes a render.yaml file for easy deployment to Render:

  1. Connect your GitHub repository to Render
  2. Set up environment variables in Render dashboard
  3. Deploy using the provided configuration

Docker Deployment

# Example Dockerfile (create as needed)
FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .
EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

๐Ÿงช Testing

You can test the API endpoints using:

  • curl: Command-line HTTP client
  • Postman: API development environment
  • httpx: Python HTTP client

Example:

# Test server status
curl http://localhost:8000/

# Get GitHub repositories
curl "http://localhost:8000/github/repos/octocat"

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ”’ Security

  • Never commit your .env file or API tokens to version control
  • Use environment variables for all sensitive configuration
  • Regularly rotate your API tokens
  • Follow the principle of least privilege for API token scopes

๐Ÿ› Troubleshooting

Common Issues

  1. Authentication Errors: Verify your API tokens are correct and have sufficient permissions
  2. CORS Issues: The server includes CORS middleware; check your client configuration
  3. Rate Limiting: External APIs may have rate limits; implement appropriate retry logic

Debug Mode

Set DEBUG=True in your environment to enable detailed error messages.

๐Ÿ“ž Support

For issues, questions, or contributions, please open an issue in the GitHub repository.


Built with โค๏ธ using FastAPI and modern Python