Azure DevOps MCP服务器Docker封装

为官方Azure DevOps MCP服务器提供的Docker封装,支持HTTP/SSE和stdio传输协议,适用于Claude Desktop、Claude Code等MCP客户端。

  • by jonhill90
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 jonhill90/Azure-DevOps-MCP

使用说明

Azure DevOps MCP服务器(Docker包装器)

Docker官方包装器 微软Azure DevOps MCP服务器 它提供HTTP/SSE和stdio传输,供Claude Desktop、Claude Code和其他MCP客户端使用。

概述

此包装:

  • 克隆官方 @azure-devops/mcp 包裹
  • 提供HTTP/SSE传输层(最初仅使用stdio)
  • 将所有内容打包到Docker中,以便于部署
  • 支持直接stdio访问和HTTP/SSE端点

快速开始

1.先决条件

  • Docker和Docker Compose
  • Azure DevOps组织
  • 来自Azure DevOps的个人访问令牌(PAT)

2.获取Azure DevOps PAT

  1. 首选https://dev.azure.com/YOUR_ORG/_usersSettings/tokens
  2. 点击“新建令牌”
  3. 所需范围:
    • 代码:阅读
    • 工作项:读写
    • 构建:阅读
    • 发布:阅读
    • 维基:读写(如果使用维基功能)
    • 图:读取(用于身份查找)
  4. 复制令牌(您将不会再看到它!)

3.设置

# Clone this wrapper
cd ~/source/repos/Personal
git clone <this-repo> Azure-DevOps-MCP
cd Azure-DevOps-MCP

# Create .env file from example
cp .env.example .env

# Edit .env and set your values
nano .env

4.配置 .env

ADO_ORGANIZATION=your-org-name
ADO_PAT=your-personal-access-token
ADO_AUTH_TYPE=envvar
ADO_MCP_PORT=8055

重要提示: 使用 ADO_AUTH_TYPE=envvar 用于基于PAT的身份验证。

5.启动服务器

# Build and start
docker-compose up -d

# Check logs
docker-compose logs -f

# Check health
curl http://localhost:8055/health

使用Claude Desktop

选项1:HTTP/SSE传输(建议用于生产环境)

增添 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "azure-devops": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8055/mcp"
      ]
    }
  }
}

优势:

  • 适用于MCP网关(LiteLLM、Microsoft MCP网关)
  • 已准备好使用HTTPS部署K8s
  • 更适合生产环境

选项2:Docker stdio(本地开发)

对于没有HTTP层的直接stdio访问:

{
  "mcpServers": {
    "azure-devops": {
      "command": "docker",
      "args": ["exec", "-i", "azure-devops-mcp", "node", "/app/azure-devops-mcp/dist/index.js", "YOUR_ORG_NAME", "-a", "envvar"]
    }
  }
}

替换 YOUR_ORG_NAME 使用您的Azure DevOps组织名称。

更新配置后:

  1. 完全重新启动Claude Desktop(退出并重新打开)
  2. Azure DevOps工具将在聊天中提供
  3. 尝试:“列出我的Azure DevOps项目”或“显示我组织中的仓库”

使用Claude代码

选项1:HTTP/SSE传输(推荐)

添加到您的Claude Code MCP设置中:

{
  "mcpServers": {
    "azure-devops": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8055/mcp"
      ]
    }
  }
}

选项2:Docker stdio

添加到您的Claude Code MCP设置中:

{
  "mcpServers": {
    "azure-devops": {
      "command": "docker",
      "args": ["exec", "-i", "azure-devops-mcp", "node", "/app/azure-devops-mcp/dist/index.js", "YOUR_ORG_NAME", "-a", "envvar"]
    }
  }
}

可用工具

连接后,您将可以访问80多个Azure DevOps工具:

核心

  • 列出项目、团队
  • 获取身份ID

工作项

  • 创建、更新、查询工作项
  • 添加评论,链接工作项
  • 管理积压和迭代
  • 将工作项链接到PR和构建

仓库

  • 列出仓库、分支、拉取请求
  • 创建PR和分支
  • 搜索提交
  • 管理公关评论、审阅者和帖子
  • 回复并解决PR意见

管道

  • 列表构建和定义
  • 获取构建日志和状态
  • 运行管道
  • 创建管道定义

维基

  • 列出Wiki和页面
  • 创建/更新wiki页面
  • 获取页面内容

测试计划

  • 创建测试计划和案例
  • 管理测试套件
  • 查看测试结果

搜索

  • 搜索代码、wiki、工作项

高级安全性

  • 获取安全警报
  • 查看警报详细信息

请参阅 官方文件 查看完整的工具列表。

建筑

双重运输支持

┌─────────────────────────────────────┐
│  Claude Desktop / MCP Client        │
└───────────────┬─────────────────────┘
                │ stdio OR HTTP/SSE
                ▼
┌─────────────────────────────────────┐
│  Docker Container                   │
│                                     │
│  ┌───────────────────────────────┐  │
│  │  http-wrapper.js (port 8055)  │  │  ← HTTP/SSE endpoint
│  └──────────┬────────────────────┘  │
│             │ stdio                 │
│             ▼                        │
│  ┌───────────────────────────────┐  │
│  │  @azure-devops/mcp            │  │  ← Direct stdio access
│  │  (Official MCP Server)        │  │
│  └──────────┬────────────────────┘  │
│             │                        │
└─────────────┼────────────────────────┘
              │ HTTPS + PAT
              ▼
┌─────────────────────────────────────┐
│  Azure DevOps (dev.azure.com)       │
└─────────────────────────────────────┘

认证

支持的身份验证类型

类型 描述 用例 Docker支持
envvar PAT通过 ADO_MCP_AUTH_TOKEN 推荐使用Docker ✅ 满
env 通过环境凭据访问Azure AD Azure身份验证环境 ⚠️ 复杂的设置
azcli Azure CLI凭据 使用Azure CLI进行本地开发 ⚠️ 受限于Docker
interactive 基于浏览器的登录 仅限本地开发 ❌ Docker不支持

身份验证的工作原理

  1. 你的 .env 文件集 ADO_PAT
  2. Docker Compose将其传递给容器,如下所示:
    • ADO_MCP_AUTH_TOKEN (为 envvar 身份验证)
    • AZURE_DEVOPS_EXT_PAT (为 env 身份验证)
  3. MCP服务器为Azure DevOps API调用使用适当的凭据

故障排除

身份验证错误

错误: ChainedTokenCredential authentication failed

  • 解决方案: 使用 ADO_AUTH_TYPE=envvar 而不是 env
  • 这 env 类型需要Azure AD凭据,而 envvar 直接使用您的PAT

错误: Environment variable 'ADO_MCP_AUTH_TOKEN' is not set

  • 解决方案: 重新启动容器: docker-compose down && docker-compose up -d
  • 验证PAT是否处于 .env: cat .env | grep ADO_PAT

错误: Claude Desktop中的身份验证错误

  • 解决方案: 检查容器是否有PAT: docker exec azure-devops-mcp env | grep ADO_MCP_AUTH_TOKEN
  • 确保您正在使用 -a envvar 在Claude桌面配置中

常见问题

检查服务器运行状况

curl http://localhost:8055/health

预期响应:

{
  "status": "starting",
  "organization": "YourOrg",
  "authType": "envvar"
}

查看日志

docker-compose logs -f azure-devops-mcp

测试MCP直接连接

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \
  docker exec -i azure-devops-mcp node /app/azure-devops-mcp/dist/index.js YOUR_ORG -a envvar

验证环境变量

docker exec azure-devops-mcp env | grep -E "ADO_|AZURE_"

应显示:

ADO_ORGANIZATION=YourOrg
ADO_PAT=your-pat-token
ADO_AUTH_TYPE=envvar
ADO_MCP_AUTH_TOKEN=your-pat-token
AZURE_DEVOPS_EXT_PAT=your-pat-token

容器无法启动

# Check environment variables
docker-compose config

# Rebuild from scratch
docker-compose down
docker-compose build --no-cache
docker-compose up -d

PAT范围问题

如果您遇到权限错误,请验证您的PAT是否包括以下范围:

  • 代码(读取)
  • 工作项(读写)
  • 构建(读取)
  • 发布(阅读)
  • 图表(已读)
  • Wiki(读写)-如果使用Wiki功能

发展

更新至最新的azure devops mcp

Dockerfile在构建时克隆了官方仓库。要更新,请执行以下操作:

docker-compose build --no-cache
docker-compose up -d

修改包装器行为

编辑 src/http-wrapper.js 重建:

docker-compose build
docker-compose up -d

本地测试更改

# Test direct stdio connection
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"core_list_projects","arguments":{}}}' | \
  docker exec -i azure-devops-mcp node /app/azure-devops-mcp/dist/index.js YOUR_ORG -a envvar | jq .

# Test HTTP endpoint
curl -s http://localhost:8055/health | jq .

示例提示

配置后,在Claude Desktop中尝试以下操作:

  • “列出我的Azure DevOps项目”
  • “显示[ProjectName]项目中的所有存储库”
  • “我目前的工作项目是什么?”
  • “在[ProjectName]中创建一个名为“修复登录问题”的bug工作项”
  • “在[RepoName]中显示最近的拉取请求”
  • “获取[ProjectName]中版本#123的生成状态”
  • 在代码中搜索“身份验证”
  • “列出[ProjectName]中的所有wiki页面”

文件结构

.
├── Dockerfile              # Builds container with official MCP server
├── docker-compose.yml      # Container orchestration with env vars
├── start.sh               # Startup script with auth handling
├── package.json           # Wrapper package definition
├── src/
│   └── http-wrapper.js    # HTTP/SSE transport layer
├── .env                   # Your configuration (not in git)
├── .env.example          # Configuration template
└── README.md             # This file

许可证

这个包装器是麻省理工学院授权的。根本的 @azure-devops/mcp 该软件包由微软公司授权。

鸣谢