多组织Azure DevOps MCP服务器

这是一个专为Azure DevOps设计的模型上下文协议(MCP)服务器,支持多组织动态路由和上下文优化。

  • by nikydobrev
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 nikydobrev/mcp-server-azure-devops-multi

使用说明

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 build

4.克劳德桌面配置(本地-标准)

将服务器添加到您的 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一起使用:

  1. 打开VS代码设置(JSON)
  2. 增添 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-server

Azure容器应用

az containerapp create \
  --name azdo-mcp-server \
  --resource-group <your-rg> \
  --environment <your-env> \
  --image <your-acr>.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:从具有版本控制选项的存储库中获取文件或文件夹内容。