Azure DevOps多组织MCP服务器
这是Azure DevOps的专用模型上下文协议(MCP)服务器,旨在克服标准实现中单个组织绑定的局限性。
🚀 价值主张与比较
这种实现的主要价值是 多组织支持 和 上下文优化.
| 功能 | 标准/官方AzDO MCP | 此实现 | 用户价值 |
|---|---|---|---|
| 范围 | 单一组织(通过绑定 AZURE_DEVOPS_ORG ) 。 多组织 (动态路由) | 无缝工作 org-1, org-2,以及在单个聊天会话中的其他组织,而无需重新启动服务器。 | |
| 认证 | 单PAT输入 .env | 多个PAT 在 config.json | 安全地管理不同组织的不同凭据。 |
| 上下文用法 | 返回原始、详细的API响应 | LLM优化响应 | 积极简化JSON输出(例如,从列表视图中删除巨大的日志对象),以防止Claude中的“最大长度”错误。 |
| 工具签名 | (project, ...args) | (organization, project, ...args) | 对每个行动的目标组织进行明确控制。 |
🛠 建筑
1.连接管理器模式
此服务器使用 ConnectionManager 类。
- 延迟加载:只有在请求工具时,才会建立与Azure DevOps的连接。
- 缓存:缓存经过身份验证的连接,以确保后续请求的性能。
- 路由:每个工具模式都包含一个
organization争论。管理员使用此功能从以下位置查找相应的个人访问令牌(PAT)config.json.
2.模块化工具结构
为了便于维护,工具被组织成单独的模块:
tools/organizations.ts:组织和项目发现工具tools/pipelines.ts:CI/CD管道操作(构建、定义、运行、日志)tools/repositories.ts:Git存储库和拉取请求管理tools/common.ts:用于枚举处理和类型转换的共享实用程序tools/index.ts:中央注册协调器
3.上下文窗口优化
标准Azure DevOps API响应非常详细,通常包含完整的编排计划、日志和深度嵌套。此实现在以下工具中拦截这些响应 pipelines_get_builds 和 pipelines_get_build_definitions 致:
- 限制结果:默认为前20/50项,而不是数百项。
- 压平物体:将复杂对象映射到简单的键值对(例如。,
{ requestedFor: { displayName: "User" } }仅变为显示名称)。 - 条形噪声:删除未使用的URL、大型配置blob和系统元数据。
4.双重运输支持
- 标准运输:用于本地使用Claude Desktop和VS Code(默认)
- 苏格兰和南方能源公司运输:用于具有HTTP端点的云部署(通过激活
PORT任何人)
📦 配置
1.先决条件
- Node.js(v18或更高版本)
- 具有适当权限的Azure DevOps个人访问令牌(PAT):
- 代码(读取):用于存储库和拉取请求操作 - 构建(读取并执行):用于管道和建筑作业 - 项目和团队(阅读):用于组织和项目列表
2.设置 config.json
创建 config.json 根目录中的文件。此文件映射您的组织名称(如URL中显示的名称,例如。, dev.azure.com/{org})他们的PAT。
{
"org-1": "your-pat-token-here",
"org-2": "another-pat-token-here"
}3.构建和运行
npm install
npm run build4.克劳德桌面配置(本地-标准)
将服务器添加到您的 claude_desktop_config.json 本地使用:
{
"mcpServers": {
"azure-devops-multi": {
"command": "node",
"args": [
"/absolute/path/to/mcp-server-azure-devops-multi/dist/index.js"
]
}
}
}5.VS代码配置(本地-标准)
将服务器添加到您的VS代码设置中,以便与GitHub Copilot Chat一起使用:
- 打开VS代码设置(JSON)
- 增添
github.copilot.chat.mcp.servers:
{
"github.copilot.chat.mcp.servers": {
"Azure DevOps Multi": {
"command": "node",
"args": [
"/absolute/path/to/mcp-server-azure-devops-multi/dist/index.js"
]
}
}
}6.云部署(HTTP/SSE)
服务器支持用于云部署的SSE(服务器发送事件)传输:
Docker构建与运行
docker build -t azdo-mcp-server .
docker run -p 3000:3000 -v /path/to/config.json:/app/config.json azdo-mcp-serverAzure容器应用
az containerapp create \
--name azdo-mcp-server \
--resource-group \
--environment \
--image .azurecr.io/azdo-mcp-server:latest \
--target-port 3000 \
--ingress external \
--env-vars PORT=3000当发生以下情况时,服务器会自动切换到SSE传输 PORT 设置环境变量,暴露:
GET /sse-SSE连接端点POST /messages-消息处理端点
🧰 可用工具(共18个)
组织和项目(2个工具)
list_organizations:查看中的所有已配置组织config.json.list_projects:列出特定组织内的所有项目。
管道和建筑(13个工具)
pipelines_get_builds:列出带有过滤选项的最新版本(针对上下文进行了优化)。pipelines_get_build_definitions:列出带有查询选项的构建定义(针对上下文进行了优化)。pipelines_get_build_status:获取特定版本的详细报告。pipelines_get_build_log:检索特定版本的日志。pipelines_get_build_timeline:获取构建的时间线条目。pipelines_run_pipeline:使用参数和变量触发新的管道运行。pipelines_get_run:获取特定管道运行的详细信息。pipelines_list_runs:列出带有过滤选项的管道运行。pipelines_get_run_stage:获取有关管道运行中特定阶段的信息。pipelines_get_run_log:获取特定管道运行的日志内容。pipelines_update_build_stage:更新构建中的阶段(占位符-尚未实现)。pipelines_get_definition:按ID获取特定的构建定义。pipelines_get_definition_yaml:获取管道定义的YAML内容。
Git仓库和拉取请求(5个工具)
git_list_repositories:列出项目中的所有Git存储库。git_get_repository:获取特定存储库的详细信息。git_get_pull_requests:使用过滤选项搜索和列出拉取请求。git_create_pull_request:创建一个包含标题、描述和审阅者的新拉取请求。git_get_item:从具有版本控制选项的存储库中获取文件或文件夹内容。
