使用说明
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
- 首选https://dev.azure.com/YOUR_ORG/_usersSettings/tokens
- 点击“新建令牌”
- 所需范围:
- 代码:阅读
- 工作项:读写
- 构建:阅读
- 发布:阅读
- 维基:读写(如果使用维基功能)
- 图:读取(用于身份查找)
- 复制令牌(您将不会再看到它!)
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组织名称。
更新配置后:
- 完全重新启动Claude Desktop(退出并重新打开)
- Azure DevOps工具将在聊天中提供
- 尝试:“列出我的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不支持 |
身份验证的工作原理
- 你的
.env文件集ADO_PAT - Docker Compose将其传递给容器,如下所示:
ADO_MCP_AUTH_TOKEN(为envvar身份验证)AZURE_DEVOPS_EXT_PAT(为env身份验证)
- 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 该软件包由微软公司授权。
鸣谢
- 官方MCP服务器: 微软/天蓝色devops mcp