DevOpsMCP-模型上下文协议API
DevOpsMCP 是一种可用于生产的MCP(模型上下文协议)API服务,使用 快速API 和 python,专为DevOps分析、错误跟踪和自动化工作流程而设计。它与 Azure SQL数据库 用于云原生数据存储。
🚀 特性
- FastAPI框架 -高性能异步API
- Azure SQL数据库 -云原生数据库集成
- 模块化架构 -清晰地分离关注点
- OpenAPI文档 -自动生成的API文档
- MCP合规性 -完整的模型上下文协议支持
- Docker就绪 -集装箱化部署
- 生产就绪 -错误处理、日志记录和验证
📋 当前操作
1.GetBugFixTrends
端点: POST /api/bugs/get_bug_fix_trends
分析指定时间段内的错误修复趋势。
输入:
days_back(整数,默认值:10)-要分析的天数project_id(字符串,可选)-按项目ID筛选
输出:
- 已修复的错误总数
- 每日汇总明细
- 用于可视化的趋势图数据
- SQL查询详细信息
- 期间开始/结束日期
🛠️ 技术栈
- Python 3.11
- 快速API -现代web框架
- 派丹蒂克 -数据验证
- pyodbc -Azure SQL连接
- 乌维科恩 -ASGI服务器
- 码头工人 -集装箱化
📦 项目结构
DevOpsMCP/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI application entry point
│ ├── config.py # Configuration management
│ ├── database.py # Database connection management
│ ├── models/
│ │ ├── __init__.py
│ │ └── bug.py # Bug database models
│ ├── routers/
│ │ ├── __init__.py
│ │ └── bugs.py # Bug-related endpoints
│ ├── schemas/
│ │ ├── __init__.py
│ │ └── bug_schemas.py # Request/response schemas
│ └── services/
│ ├── __init__.py
│ └── bug_service.py # Business logic layer
├── tests/
│ ├── __init__.py
│ └── test_bugs.py # Unit tests
├── .env.example # Environment variables template
├── .gitignore
├── Dockerfile # Docker configuration
├── requirements.txt # Python dependencies
├── schema.sql # Database schema
├── mcp.json # MCP configuration
└── README.md🔧 本地设置
先决条件
- Python 3.11或更高版本
- Azure SQL数据库实例
- SQL Server的ODBC驱动程序18
安装步骤
- 克隆或下载项目:
cd C:\DevOpsMCP- 创建虚拟环境:
python -m venv venv
.\venv\Scripts\Activate.ps1- 安装依赖项:
pip install -r requirements.txt- 配置环境变量:
cp .env.example .env编辑 .env 使用您的Azure SQL凭据:
DB_HOST=your-server.database.windows.net
DB_NAME=your-database-name
DB_USER=your-username
DB_PASS=your-password
DB_PORT=1433- 设置数据库架构:
连接到Azure SQL数据库并运行:
# Using Azure Data Studio or SQL Server Management Studio
# Execute the contents of schema.sql或者使用sqlcmd:
sqlcmd -S your-server.database.windows.net -d your-database-name -U your-username -P your-password -i schema.sql- 运行应用程序:
python -m app.main或者直接使用uvicorn:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000- 访问API:
- APIhttp://localhost:8000
- Swagger文档:http://localhost:8000/docs
- 重新记录:http://localhost:8000/redoc
- OpenAPI JSON:http://localhost:8000/openapi.json
🐳 Docker部署
构建Docker镜像
docker build -t devopsmcp:latest .运行容器
docker run -d `
--name devopsmcp `
-p 8000:8000 `
-e DB_HOST=your-server.database.windows.net `
-e DB_NAME=your-database-name `
-e DB_USER=your-username `
-e DB_PASS=your-password `
-e DB_PORT=1433 `
devopsmcp:latestDocker编写(可选)
创建 docker-compose.yml:
version: "3.8"
services:
api:
build: .
ports:
- "8000:8000"
env_file:
- .env
restart: unless-stopped运行:
docker-compose up -d☁️ Azure部署
选项1:Azure应用服务
- 创建应用服务:
az webapp create `
--resource-group your-rg `
--plan your-plan `
--name devopsmcp `
--runtime "PYTHON:3.11"- 配置环境变量:
az webapp config appsettings set `
--resource-group your-rg `
--name devopsmcp `
--settings `
DB_HOST=your-server.database.windows.net `
DB_NAME=your-database-name `
DB_USER=your-username `
DB_PASS=your-password- 部署代码:
az webapp up --name devopsmcp选项2:Azure容器实例
- 构建映像并将其推送到Azure容器注册表:
az acr build `
--registry your-acr `
--image devopsmcp:latest `
--file Dockerfile .- 部署容器:
az container create `
--resource-group your-rg `
--name devopsmcp `
--image your-acr.azurecr.io/devopsmcp:latest `
--cpu 1 `
--memory 1 `
--ports 8000 `
--environment-variables `
DB_HOST=your-server.database.windows.net `
DB_NAME=your-database-name选项3:Azure Kubernetes服务(AKS)
创建Kubernetes清单并使用 kubectl.
🌐 公开曝光选项
选项1:ngrok(开发/测试)
- 安装ngrok:
choco install ngrok- 暴露本地服务器:
ngrok http 8000- 更新
mcp.json使用ngrok URL:
{
"url": "https://your-subdomain.ngrok.io/openapi.json"
}选项2:Azure应用服务(生产)
您的应用服务将有一个公共URL:
https://devopsmcp.azurewebsites.net更新 mcp.json:
{
"url": "https://devopsmcp.azurewebsites.net/openapi.json"
}选项3:自定义域
在Azure中配置自定义域并更新DNS设置。
🔌 ChatGPT MCP连接器设置
步骤1:确保API可公开访问
您的API必须可以通过公共URL(ngrok、Azure等)访问
步骤2:更新mcp.json
确保 mcp.json 包含正确的公共URL:
{
"name": "DevOpsMCP",
"version": "1.0.1",
"type": "openapi",
"url": "https://your-public-url/openapi.json",
"actions": [
{
"name": "get_bug_fix_trends",
"endpoint": "/api/bugs/get_bug_fix_trends",
"method": "POST"
}
]
}步骤3:在ChatGPT中配置
- 打开ChatGPT
- 转到“设置”→ Beta功能
- 启用“MCP连接器”(如果可用)
- 添加新的MCP连接:
- 姓名: DevOpsMCP - 类型: 开放API - 网址: https://your-public-url/openapi.json - 环境变量: 从配置 .env 价值观
步骤4:测试连接
在ChatGPT中,尝试:
"Use DevOpsMCP to get bug fix trends for the last 14 days"ChatGPT应调用 get_bug_fix_trends 操作并返回结果。
🧪 测试
运行单元测试
pytest tests/ -v跑步有保障
pytest tests/ --cov=app --cov-report=htmlAPI测试手册
使用curl:
curl -X POST http://localhost:8000/api/bugs/get_bug_fix_trends `
-H "Content-Type: application/json" `
-d '{"days_back": 14, "project_id": "PROJ001"}'使用PowerShell:
$body = @{
days_back = 14
project_id = "PROJ001"
} | ConvertTo-Json
Invoke-RestMethod -Uri http://localhost:8000/api/bugs/get_bug_fix_trends `
-Method POST `
-Body $body `
-ContentType "application/json"📊 示例数据库数据
若要使用示例数据测试API,请运行以下SQL:
INSERT INTO Bugs (Title, ProjectId, CreatedAt, ClosedAt, Status)
VALUES
('Login page crash', 'PROJ001', DATEADD(DAY, -15, GETDATE()), DATEADD(DAY, -10, GETDATE()), 'Closed'),
('API timeout error', 'PROJ001', DATEADD(DAY, -12, GETDATE()), DATEADD(DAY, -8, GETDATE()), 'Closed'),
('UI alignment issue', 'PROJ001', DATEADD(DAY, -9, GETDATE()), DATEADD(DAY, -5, GETDATE()), 'Closed'),
('Database connection', 'PROJ002', DATEADD(DAY, -7, GETDATE()), DATEADD(DAY, -3, GETDATE()), 'Closed'),
('Memory leak', 'PROJ001', DATEADD(DAY, -5, GETDATE()), DATEADD(DAY, -2, GETDATE()), 'Closed'),
('Security vulnerability', 'PROJ001', DATEADD(DAY, -3, GETDATE()), DATEADD(DAY, -1, GETDATE()), 'Closed'),
('Performance degradation', 'PROJ002', DATEADD(DAY, -2, GETDATE()), NULL, 'Open');📝 API验证检查表
- \[\]API可通过公共URL访问
- \[ \]
/openapi.json返回有效的OpenAPI架构 - \[ \]
/docs显示Swagger用户界面 - \[\]数据库连接成功
- \[\]职位
/api/bugs/get_bug_fix_trends返回数据 - \[ \]
mcp.json已正确配置 - \[\]已设置环境变量
- \[\]ChatGPT可以连接到MCP端点
🔒 安全考虑
- 永不承诺
.env文件 -使用.env.example作为模板 - 使用Azure密钥库 -在生产中安全地存储机密
- 启用SSL/TLS -在生产环境中始终使用HTTPS
- 限制CORS来源 -不要使用
allow_origins=["*"]生产中 - 使用托管身份 -用于Azure服务身份验证
- 启用SQL防火墙规则 -限制数据库访问
📚 额外资源
🤝 贡献
未来的增强功能:
- 其他错误分析端点
- 与Azure DevOps API集成
- 实时bug跟踪webhooks
- 认证和授权
- 速率限制
- 缓存层
📄 许可证
MIT许可证-可根据需要自由使用和修改。
👤 作者
DevOpsMCP开发团队
______________________________________________________________________
版本: 1.0.1\ 最后更新时间: 2025年11月20日
