多服务API集成服务器

一个基于FastAPI的多服务集成服务器,提供GitHub、Jira和Slack的统一API访问,适用于现代应用集成。

  • by AkilLabs
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 akillabs/qa-mcp-server

使用说明

多业务MCP服务器

一个全面的模型上下文协议(MCP)服务器,提供对多种服务的统一API访问,包括GitHub、Jira和Slack。使用FastAPI构建,专为现代应用程序集成而设计。

🚀 特性

  • GitHub集成:存储库管理、问题跟踪等
  • Jira集成:问题创建、检索和项目管理
  • Slack集成:频道管理、消息发送和聊天记录
  • RESTful API:所有服务的干净、有记录的端点
  • 异步支持:使用FastAPI构建,用于高性能异步操作
  • CORS已启用:已准备好进行web应用程序集成
  • 基于环境的配置:安全的凭据管理
  • Docker就绪:包括渲染部署配置

📋 先决条件

  • Python 3.11+
  • 以下各项的活动帐户和API令牌:
    • GitHub(个人访问令牌)
    • Jira(API代币)
    • Slack(机器人令牌和应用令牌)

🛠️ 安装

  1. 克隆存储库

    git clone <repository-url>
    cd MCP
    
  2. 安装依赖项

    pip install -r requirements.txt
    
  3. 设置环境变量

    创建一个 .env 项目根目录中的文件:

    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
    

🚦 运行服务器

发展模式

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

生产模式

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

服务器将在以下时间可用 http://localhost:8000

📚 API文档

服务器运行后,您可以访问:

  • 交互式API文档: http://localhost:8000/docs
  • ReDoc文档: http://localhost:8000/redoc
  • OpenAPI架构: http://localhost:8000/openapi.json

🔌 API终点

GitHub端点

方法 端点 描述
得到 /github/repos/{username} 获取用户的存储库
得到 /github/issues/{repo_name} 获取存储库问题

Jira端点

方法 端点 描述
得到 /jira/issues 获取Jira问题(可选项目筛选器)
职位 /jira/issues 创建新的Jira问题

松弛端点

方法 端点 描述
得到 /slack/channels 获取Slack频道
职位 /slack/messages 向Slack发送消息
得到 /slack/messages/{channel} 从频道获取消息

一般终点

方法 端点 描述
得到 / 服务器状态和信息

🏗️ 项目结构

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

🔧 配置

环境变量

变量 描述 必填
GITHUB_TOKEN GitHub个人访问令牌 是
JIRA_URL 您的Jira实例URL 是
JIRA_USERNAME 您的Jira用户名/电子邮件 是
JIRA_API_TOKEN Jira API令牌 是
SLACK_BOT_TOKEN Slack Bot用户OAuth令牌 是
SLACK_APP_TOKEN Slack应用级别令牌 是
PORT 服务器端口(默认值:8000) 否
HOST 服务器主机(默认值:0.0.0.0) 否

设置API令牌

GitHub

  1. 前往GitHub设置>开发者设置>个人访问令牌
  2. 生成具有适当作用域的新令牌(repo,read:user)

Jira

  1. 转到Jira设置>产品>应用程序访问
  2. 为您的帐户创建API令牌

Slack

  1. 在以下位置创建新的Slack应用程序https://api.slack.com/apps
  2. 启用必要的范围(通道:读取、聊天:写入等)
  3. 将应用程序安装到您的工作区

🚀 部署

渲染部署

该项目包括 render.yaml 文件,便于部署到Render:

  1. 将您的GitHub存储库连接到Render
  2. 在Render仪表板中设置环境变量
  3. 使用提供的配置进行部署

Docker部署

# 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"]

🧪 测试

您可以使用以下方法测试API端点:

  • 卷曲:命令行HTTP客户端
  • 邮递员:API开发环境
  • httpx:Python HTTP客户端

例子:

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

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

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📝 许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

🔒 安全

  • 永远不要承诺你的 .env 文件或API令牌到版本控制
  • 对所有敏感配置使用环境变量
  • 定期轮换您的API代币
  • 遵循API令牌作用域的最小权限原则

🐛 故障排除

常见问题

  1. 身份验证错误:验证您的API令牌是否正确并具有足够的权限
  2. CORS 问题:服务器包括CORS中间件;检查您的客户端配置
  3. 速率限制:外部API可能有速率限制;实施适当的重试逻辑

调试模式

集 DEBUG=True 在您的环境中启用详细的错误消息。

📞 支持

对于问题、疑问或贡献,请在GitHub存储库中打开问题。


内置于❤️ 使用FastAPI和现代Python