使用说明
多业务MCP服务器
一个全面的模型上下文协议(MCP)服务器,提供对多种服务的统一API访问,包括GitHub、Jira和Slack。使用FastAPI构建,专为现代应用程序集成而设计。
🚀 特性
- GitHub集成:存储库管理、问题跟踪等
- Jira集成:问题创建、检索和项目管理
- Slack集成:频道管理、消息发送和聊天记录
- RESTful API:所有服务的干净、有记录的端点
- 异步支持:使用FastAPI构建,用于高性能异步操作
- CORS已启用:已准备好进行web应用程序集成
- 基于环境的配置:安全的凭据管理
- Docker就绪:包括渲染部署配置
📋 先决条件
- Python 3.11+
- 以下各项的活动帐户和API令牌:
- GitHub(个人访问令牌)
- Jira(API代币)
- Slack(机器人令牌和应用令牌)
🛠️ 安装
-
克隆存储库
git clone <repository-url> cd MCP -
安装依赖项
pip install -r requirements.txt -
设置环境变量
创建一个
.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
- 前往GitHub设置>开发者设置>个人访问令牌
- 生成具有适当作用域的新令牌(repo,read:user)
Jira
- 转到Jira设置>产品>应用程序访问
- 为您的帐户创建API令牌
Slack
- 在以下位置创建新的Slack应用程序https://api.slack.com/apps
- 启用必要的范围(通道:读取、聊天:写入等)
- 将应用程序安装到您的工作区
🚀 部署
渲染部署
该项目包括 render.yaml 文件,便于部署到Render:
- 将您的GitHub存储库连接到Render
- 在Render仪表板中设置环境变量
- 使用提供的配置进行部署
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"
🤝 贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📝 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
🔒 安全
- 永远不要承诺你的
.env文件或API令牌到版本控制 - 对所有敏感配置使用环境变量
- 定期轮换您的API代币
- 遵循API令牌作用域的最小权限原则
🐛 故障排除
常见问题
- 身份验证错误:验证您的API令牌是否正确并具有足够的权限
- CORS 问题:服务器包括CORS中间件;检查您的客户端配置
- 速率限制:外部API可能有速率限制;实施适当的重试逻辑
调试模式
集 DEBUG=True 在您的环境中启用详细的错误消息。
📞 支持
对于问题、疑问或贡献,请在GitHub存储库中打开问题。
内置于❤️ 使用FastAPI和现代Python
