DevOps聊天机器人

一个基于Python的聊天机器人,集成了Azure OpenAI的GPT-5模型和Azure DevOps的MCP协议,用于查询和交互Azure DevOps资源。

  • by yazimi2
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 yazimi2/devops_mcp

使用说明

Azure DevOps聊天机器人与GPT-5

基于Python的聊天机器人,由Azure OpenAI的GPT-5模型提供支持,并通过模型上下文协议(MCP)集成了Azure DevOps功能。

🌟 特性

  • Azure OpenAI GPT-5集成 -GPT-5驱动的高级对话式人工智能
  • Azure DevOps MCP支持 -查询Azure DevOps资源并与之交互
  • 自动分页 -检索超出默认100个项目限制的所有结果
  • 对话历史 -在多个交互中维护上下文
  • 丰富多彩的CLI界面 -易于使用的命令行界面,带有彩色输出
  • 安全配置 -基于环境的凭证管理
  • 异步架构 -高效处理API调用和MCP操作

🏗️ 建筑

┌─────────────────┐
│   User Input    │
└────────┬────────┘
         │
         ▼
┌─────────────────────────┐
│   chatbot.py            │
│  ┌──────────────────┐   │
│  │ Azure OpenAI     │   │
│  │ Client (GPT-5)   │◄──┼── Azure OpenAI Service
│  └──────────────────┘   │
│  ┌──────────────────┐   │
│  │ MCP Client       │◄──┼── Azure DevOps MCP Server
│  └──────────────────┘   │
└─────────────────────────┘

📋 先决条件

  • Python 3.8或更高版本
  • Node.js(适用于Azure DevOps MCP服务器)
  • 部署GPT-5的Azure OpenAI资源
  • 带有个人访问令牌(PAT)的Azure DevOps帐户

🚀 快速开始

1.克隆或设置项目

cd c:\Users\U742292\devops_mcp

2.创建虚拟环境

python -m venv .venv
.venv\Scripts\activate

3.安装依赖项

pip install -r requirements.txt

4.配置环境变量

复制 .env.example 到 .env 并填写您的凭据:

copy .env.example .env

编辑 .env 根据您的实际值:

# Azure OpenAI Configuration
AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com/
AZURE_OPENAI_API_KEY=your-api-key-here
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-5

# Azure DevOps Configuration (for MCP)
AZURE_DEVOPS_ORG_URL=https://dev.azure.com/your-organization
AZURE_DEVOPS_PAT=your-personal-access-token-here

5.运行聊天机器人

python chatbot.py

📖 用法

交互式命令

  • 正常聊天 -只需键入您的信息,然后按Enter键
  • help -显示可用命令
  • clear -清除对话历史记录
  • history -显示对话历史记录
  • quit 或 exit -退出聊天机器人

对话示例

You: Hello! How are you?
Assistant: Hello! I'm doing great, thank you for asking...

You: What work items are assigned to me in Azure DevOps?
Assistant: Let me check your Azure DevOps work items...

You: clear
✓ Conversation history cleared

🔧 配置文件

.env

包含敏感的凭据和配置。 永远不要提交此文件!

.env.example

显示所需环境变量但没有敏感数据的模板。

mcp_config.json

Azure DevOps集成的MCP服务器配置:

  • 服务器命令和参数
  • 环境变量映射
  • 客户端超时和重试设置

requirements.txt

Python包依赖关系:

  • openai -Azure OpenAI SDK
  • mcp -模型上下文协议客户端
  • python-dotenv -环境变量加载
  • colorama -彩色端子输出
  • azure-devops -Azure DevOps API客户端

🏗️ 项目结构

devops_mcp/
├── .env                  # Environment variables (git-ignored)
├── .env.example          # Environment template
├── .gitignore           # Git ignore rules
├── chatbot.py           # Main chatbot application
├── mcp_config.json      # MCP server configuration
├── requirements.txt     # Python dependencies
├── README.md           # This file
└── .venv/              # Virtual environment (git-ignored)

🔐 安全最佳实践

  1. 永不承诺 .env 文件 -包含敏感凭据
  2. 使用个人访问令牌(PAT) -限制范围和到期
  3. 定期旋转API键 -定期更新Azure OpenAI API密钥
  4. 限制权限 -授予Azure DevOps PAT的最低访问权限
  5. 保持依赖关系更新 -定期更新安全补丁包

🛠️ 故障排除

错误:缺少环境变量

解决方案:确保在中设置了所有必需的变量 .env 文件

错误:初始化MCP失败

解决方案:

  • 验证是否安装了Node.js
  • 检查Azure DevOps PAT是否有效,是否具有所需权限
  • 确保 mcp_config.json 已正确配置

错误:Azure OpenAI API错误

解决方案:

  • 验证端点URL是否正确
  • 检查API密钥是否有效
  • 确保GPT-5部署存在于Azure OpenAI资源中
  • 确认API版本兼容

MCP功能不工作

解决方案:

  • 确保Azure DevOps MCP服务器包可访问
  • 检查与Azure DevOps的网络连接
  • 验证组织URL格式: https://dev.azure.com/your-org

🔄 发展

添加新功能

  1. 扩展对话功能 -修改 chat() 方法in chatbot.py
  2. 添加新的MCP工具 -在中配置 mcp_config.json
  3. 自定义系统提示 -编辑 get_system_prompt() 方法
  4. 添加新命令 -扩展命令处理 main() 循环

测试

使用测试查询运行聊天机器人:

python chatbot.py

📚 资源

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试
  5. 提交拉取请求

📝 许可证

本项目按原样提供,用于教育和发展目的。

💡 提示

  • 从简单的查询开始测试连接
  • 使用 clear 重置新主题上下文的命令
  • 检查 history 查看对话流程
  • Azure DevOps查询在特定情况下效果最佳(例如,“显示项目X中的工作项”)

🔄 自动分页

聊天机器人自动处理返回大型结果集的Azure DevOps MCP工具的分页。默认情况下,Azure DevOps API每次请求仅返回100个项目。聊天机器人现在:

  • 自动检索所有结果 用于分页工具(团队、项目、工作项等)
  • 显示进度 带有分页状态消息
  • 支持两种分页方法:基于偏移(top/skip)基于令牌(continuationToken)
  • 有安全限制 防止无限循环(最多5000个项目)

分页工具

以下工具会自动检索所有结果:

  • core_list_project_teams -项目中的所有团队
  • core_list_projects -您组织中的所有项目
  • wit_list_backlogs -所有积压的工作项
  • work_list_team_iterations -所有团队迭代
  • testplan_list_test_plans -所有测试计划
  • wiki_list_wikis -所有wiki

输出示例

[PAGINATION] Retrieving all results for core_list_project_teams...
[PAGINATION] Retrieved 100 items (total: 100)...
[PAGINATION] Retrieved 100 items (total: 200)...
[PAGINATION] Retrieved 50 items (total: 250)...
[PAGINATION] Complete! Retrieved 250 total items.

手动分页控制

如果你需要手动控制分页(例如,只想要前100个项目),你可以显式传递 top 和 skip 查询中的参数,自动分页将被绕过。

🐛 已知问题

  • MCP初始化需要Node.js环境
  • 大型对话历史记录可能会影响响应时间
  • Azure DevOps PAT必须具有适当的MCP操作范围

🔮 未来的增强功能

  • []添加流式响应以实现实时输出
  • []实现对话持久性(保存/加载历史记录)
  • []添加对多个MCP服务器的支持
  • []基于Web的用户界面
  • []增强的错误处理和重试逻辑
  • []支持Azure DevOps webhooks
  • []与其他Azure服务集成

创建于❤️ 使用Azure OpenAI GPT-5和模型上下文协议