AkilLabs/QA-MCP-Server
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
-
Clone the repository
git clone <repository-url> cd MCP
-
Install dependencies
pip install -r requirements.txt
-
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
Method | Endpoint | Description |
---|---|---|
GET | /github/repos/{username} | Get user's repositories |
GET | /github/issues/{repo_name} | Get repository issues |
Jira Endpoints
Method | Endpoint | Description |
---|---|---|
GET | /jira/issues | Get Jira issues (optional project filter) |
POST | /jira/issues | Create a new Jira issue |
Slack Endpoints
Method | Endpoint | Description |
---|---|---|
GET | /slack/channels | Get Slack channels |
POST | /slack/messages | Send a message to Slack |
GET | /slack/messages/{channel} | Get messages from a channel |
General Endpoints
Method | Endpoint | Description |
---|---|---|
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
Variable | Description | Required |
---|---|---|
GITHUB_TOKEN | GitHub Personal Access Token | Yes |
JIRA_URL | Your Jira instance URL | Yes |
JIRA_USERNAME | Your Jira username/email | Yes |
JIRA_API_TOKEN | Jira API token | Yes |
SLACK_BOT_TOKEN | Slack Bot User OAuth Token | Yes |
SLACK_APP_TOKEN | Slack App-Level Token | Yes |
PORT | Server port (default: 8000) | No |
HOST | Server host (default: 0.0.0.0) | No |
Setting Up API Tokens
GitHub
- Go to GitHub Settings > Developer settings > Personal access tokens
- Generate a new token with appropriate scopes (repo, read:user)
Jira
- Go to Jira Settings > Products > Application access
- Create an API token for your account
Slack
- Create a new Slack app at https://api.slack.com/apps
- Enable necessary scopes (channels:read, chat:write, etc.)
- Install the app to your workspace
๐ Deployment
Render Deployment
This project includes a render.yaml
file for easy deployment to Render:
- Connect your GitHub repository to Render
- Set up environment variables in Render dashboard
- 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
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - 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
- Authentication Errors: Verify your API tokens are correct and have sufficient permissions
- CORS Issues: The server includes CORS middleware; check your client configuration
- 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