DevOps MCP调查员
MCP服务器+AI代理,用于调查Azure DevOps构建失败,将失败映射到本地代码,并在可能的情况下提出/修复问题。
这个repo做什么
- 通过MCP服务器公开Azure DevOps调查工具
- 运行AI调查代理(CLI或GUI)
- 将构建失败连接到磁盘上的本地存储库
- 支持构建分类、日志/时间线分析和后续行动
项目结构
src/server/--MCP服务器和Azure DevOps工具实现src/agent/--AI代理循环、工具执行、本地文件工具src/gui/--用于运行调查的本地web UIsrc/tools/repo-index.ts--构建的回购扫描仪configs/repo-index.jsonconfigs/repo-index.json--代理使用的可编辑存储库查找索引
先决条件
- Node.js 20+
- 访问Azure DevOps项目和PAT
- 本地源存储库可用(默认根:
C:\Repo)
环境变量
必修的:
ADO_PAT--Azure DevOps个人访问令牌AZURE_OPENAI_KEYAZURE_OPENAI_BASE_URL
可选:
ADO_ORG(默认值:fictional-org)ADO_PROJECT(默认值:FictionalProject)ADO_PROJECT_URL(默认值:https://dev.azure.com///)AZURE_OPENAI_EXPERT_URL(可选专家配置文件URL)AZURE_OPENAI_DEFAULT_REASONING(base|expert,默认值:base)AOAI_DIAGNOSTICS(true/false,默认值:false;记录Azure OpenAI响应元数据以进行缓存诊断)AZURE_OPENAI_ENDPOINT(专家配置文件的可选回退)AZURE_OPENAI_DEPLOYMENT(专家配置文件的可选回退)AZURE_OPENAI_API_VERSION(默认值:2024-05-01-preview)REPO_BASE_PATH(默认值:C:\Repo)REPO_INDEX_PATH(默认值:configs/repo-index.json)GUI_PORT(默认值:4230)GUI_FOLLOWUP_CONTEXT_CHARS(默认值:12000,将之前的总结包含在后续提示中)AGENT_MAX_CONTEXT_CHARS(默认值:120000)AGENT_MAX_TOOL_RESULT_CHARS(默认值:12000)AGENT_MAX_ASSISTANT_CHARS(默认值:20000)AGENT_MAX_TOOL_CALL_ARGS_CHARS(默认值:4000)AGENT_BASE_MAX_CONTEXT_CHARS(选择基础时的默认值:80000)AGENT_BASE_MAX_TOOL_RESULT_CHARS(选择基础时的默认值:8000)AGENT_BASE_MAX_ASSISTANT_CHARS(选择基础时的默认值:12000)AGENT_BASE_MAX_TOOL_CALL_ARGS_CHARS(选择基础时的默认值:2500)AGENT_EXPERT_MAX_CONTEXT_CHARS(选择专家时可选择覆盖)AGENT_EXPERT_MAX_TOOL_RESULT_CHARS(选择专家时可选择覆盖)AGENT_EXPERT_MAX_ASSISTANT_CHARS(选择专家时可选择覆盖)AGENT_EXPERT_MAX_TOOL_CALL_ARGS_CHARS(选择专家时可选择覆盖)
安装
npm install构建
npm run build生成/刷新回购索引
扫描 C:\Repo 并写道 configs/repo-index.json:
npm run index:repo运行选项
1) GUI(推荐)
npm run dev:gui打开 http://localhost:4230
截图
GUI功能:
- 选择一个失败的构建或调查最新的失败
- 直播调查输出
- 停止运行调查
- 后续选项按钮(编号,可点击)
- 推理配置文件切换(基础/专家)
- 回购索引状态/操作(加载信息、设置回购位置、重新扫描)
快速演示流程
- 启动GUI:
npm run dev:gui- 打开
http://localhost:4230
- 点击 刷新失败
- 从下拉列表中选择失败的构建
- 点击 调查所选版本
- 观看实时输出 结果
- 如果出现后续选项,请单击编号选项继续
- 使用 停止 取消正在进行的调查
- (可选)更改 回购地点 在顶部面板中
- 点击 重新扫描C:\\Repo (或您的新路径)以在更改位置后刷新查找根
2) CLI代理
npx tsx src/agent/index.ts --latest-failure示例:
npx tsx src/agent/index.ts --build 244683
npx tsx src/agent/index.ts --latest-failure --pipeline "ERP AL Incremental"
npx tsx src/agent/index.ts --investigate "Why did the last full build fail?"3) 仅限MCP服务器
npm run dev:serverNPM脚本
build--TypeScript编译start:server--运行内置MCP服务器start:agent--运行内置代理start:gui--运行构建的GUIdev:server--从源代码运行服务器tsxdev:agent--从源代码运行代理tsxdev:gui--从源代码运行GUItsxindex:repo--从本地回购根重新生成回购索引
回购查找的工作原理
代理人使用 configs/repo-index.json 确定本地工具的查找根(read, grep, search等等)。
- 编辑
configs/repo-index.json如果需要,直接 - 您还可以从GUI顶部面板设置仓库位置
- 更改仓库位置后,需要重新扫描以刷新查找路径
- 跑
npm run index:repo从磁盘刷新 - 工具
local_get_repo_index可供代理进行运行时检查
备注
- UI和CLI旨在用于迭代调查和后续行动
- 构建日志可能很大;时间线+摘要工具首先用于分诊
- 在合并之前,应在源代码仓库中验证根本原因修复
- 如果达到上下文/令牌限制,请降低
AGENT_MAX_*_CHARS值和首选日志摘要或行范围日志调用
