@slorenzot/mcp-azure
@slorenzot/mcp-azure
用于 Azure DevOps 的 MCP (Model Context Protocol) 服务器。它允许从任何兼容的 MCP 客户端与工作项、Git 仓库、Pull Request、冲刺、区域、评论和附件进行交互。
安装
npm install -g @slorenzot/mcp-azure或者直接使用 npx:
npx @slorenzot/mcp-azure配置
环境变量
服务器使用以下环境变量自动配置:
变量 | 替代方案 | 描述 | 必需 |
|
| 组织 URL (例如: | 是 |
|
| 个人访问令牌 (Personal Access Token) | 是 |
|
| 项目名称 | 否 |
在 Claude Desktop 中配置
在你的 claude_desktop_config.json 文件中添加以下配置:
{
"mcpServers": {
"azure-devops": {
"command": "npx",
"args": ["-y", "@slorenzot/mcp-azure"],
"env": {
"AZURE_DEVOPS_ORG": "https://dev.azure.com/tu-organizacion",
"AZURE_DEVOPS_PAT": "tu-pat-aqui",
"AZURE_DEVOPS_PROJECT": "tu-proyecto"
}
}
}
}在 OpenCode 中配置
OpenCode 使用相同的 MCP,但可以通过两种方式进行配置:
选项 1:使用环境变量进行初始配置
在你的系统或 OpenCode 配置中设置环境变量:
export AZURE_DEVOPS_ORG="https://dev.azure.com/tu-organizacion" export AZURE_DEVOPS_PAT="tu-pat-aqui" export AZURE_DEVOPS_PROJECT="tu-proyecto"或者在你的 OpenCode 配置中添加 MCP 服务器:
{ "mcpServers": { "azure-devops": { "command": "npx", "args": ["-y", "@slorenzot/mcp-azure"], "env": { "AZURE_DEVOPS_ORG": "https://dev.azure.com/tu-organizacion", "AZURE_DEVOPS_PAT": "tu-pat-aqui", "AZURE_DEVOPS_PROJECT": "tu-proyecto" } } } }
选项 2:使用 ado_configure 进行动态配置
OpenCode 允许在会话期间使用 ado_configure 命令直接配置连接:
{
"organization": "https://dev.azure.com/tu-organizacion",
"project": "tu-proyecto",
"pat": "tu-pat-aqui"
}此选项适用于在不同组织或项目之间切换,而无需修改配置文件。
注意:当你使用 ado_configure 时,连接在当前的 OpenCode 会话期间保持有效。
获取个人访问令牌 (PAT)
前往你的 Azure DevOps 组织
点击你的头像(右上角)
选择 Personal Access Tokens
创建一个具有以下权限的新令牌:
Work Items: Read & Write
Code: Read & Write (用于仓库和 Pull Request 操作)
Project and Team: Read (可选)
可用工具
身份验证
工具 | 描述 |
| 配置组织、项目和 PAT 的连接 |
工作项 (Work Items)
工具 | 描述 |
| 通过 ID 获取工作项 |
| 创建新的工作项 (用户故事、Bug、任务等) |
| 更新现有的工作项 |
| 获取类型的可用/必需字段 |
查询
工具 | 描述 |
| 查询特定冲刺的工作项 |
| 查询特定区域的工作项 |
| 执行自定义 WIQL 查询 |
项目结构
工具 | 描述 |
| 列出项目的迭代/冲刺 |
| 列出项目的区域 |
Git 仓库
工具 | 描述 |
| 列出项目的所有 Git 仓库 |
| 通过名称或 ID 获取特定仓库的详细信息 |
| 列出仓库的分支 |
Pull Requests
工具 | 描述 |
| 列出带有可选过滤器 (状态、分支、创建者、审阅者) 的 Pull Request |
| 获取 Pull Request 的完整详细信息 |
| 创建新的 Pull Request |
| 更新 Pull Request 的属性 (标题、描述、草稿) |
| 使用可配置策略完成 (合并) Pull Request |
| 放弃 Pull Request |
Pull Request 审阅
工具 | 描述 |
| 批准 Pull Request (投票: 10) |
| 拒绝 Pull Request (投票: -10) |
| 获取 Pull Request 的所有审阅者及其投票 |
| 向 Pull Request 添加审阅者 |
Pull Request 评论
工具 | 描述 |
| 获取 Pull Request 的所有评论线程 |
| 创建新的评论线程 (通用或代码相关) |
| 回复现有的评论线程 |
Pull Request 信息
工具 | 描述 |
| 获取 Pull Request 的所有提交 |
| 获取链接到 Pull Request 的工作项 |
| 更新评论线程的状态 (Fixed, WontFix 等) |
评论与讨论
工具 | 描述 |
| 向工作项添加评论 (支持 Markdown) |
| 获取工作项的评论 |
附件
工具 | 描述 |
| 上传文件并返回附件 URL |
| 将附件添加到工作项 |
| 列出工作项的附件 |
使用示例
创建用户故事
{
"title": "Implementar login con OAuth",
"type": "User Story",
"description": "Como usuario quiero poder iniciar sesión con mi cuenta de Google",
"areaPath": "MiProyecto\\Backend",
"iterationPath": "MiProyecto\\Sprint 5",
"fields": {
"Custom.OKR": "Seguridad",
"Custom.Prioridad": "Alta"
}
}自定义 WIQL 查询
{
"wiql": "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.State] = 'Active' AND [System.AssignedTo] = @Me ORDER BY [System.CreatedDate] DESC",
"getDetails": true
}添加 Markdown 评论
{
"id": 12345,
"comment": "## Análisis completado\n\n- Revisado el código\n- Identificados 3 issues\n\n**Próximo paso:** Corregir validaciones"
}上传并附加文件
{
"workItemId": 12345,
"filePath": "/ruta/al/archivo.pdf",
"comment": "Documento de especificaciones",
"name": "Especificaciones Funcionales v2.0"
}链接现有附件
{
"workItemId": 12345,
"attachmentUrl": "https://dev.azure.com/org/proj/_apis/wit/attachments/abc123",
"comment": "Diseño de arquitectura",
"name": "Arquitectura del Sistema"
}列出仓库
{
"includeHidden": false,
"top": 50
}列出活跃的 Pull Request
{
"status": "Active",
"top": 20
}创建 Pull Request
{
"repositoryId": "mi-repo",
"sourceRefName": "refs/heads/feature-login",
"targetRefName": "refs/heads/main",
"title": "Implementar login con OAuth",
"description": "Esta PR agrega soporte para login con Google OAuth",
"reviewerIds": ["12345678-1234-1234-1234-1234567890ab"],
"isDraft": false
}批准 Pull Request
{
"pullRequestId": 12345,
"repositoryId": "mi-repo"
}完成 (合并) Pull Request
{
"pullRequestId": 12345,
"repositoryId": "mi-repo",
"mergeStrategy": "Squash",
"deleteSourceBranch": true,
"mergeCommitMessage": "Merge de feature-login"
}创建代码评论
{
"pullRequestId": 12345,
"repositoryId": "mi-repo",
"content": "Por favor extraer esto en una función separada",
"filePath": "/src/components/Login.tsx",
"startLine": 45,
"endLine": 52
}可用提示词 (Prompts)
服务器包含预定义的提示词,以简化常见任务:
提示词 | 描述 |
| 连接到 Azure DevOps 的指南 |
| 分析冲刺状态 |
| 创建结构化的用户故事 |
| 生成每日站会报告 |
| 协助规划冲刺 |
| 批量更新工作项 |
| 生成项目报告 |
| 创建结构化的 Bug 报告 |
资源
资源 | URI | 描述 |
连接状态 |
| 当前连接状态信息 |
开发
要求
Node.js 18+
npm 或 yarn
本地安装
git clone https://github.com/slorenzot/mcp-azure.git
cd mcp-azure
npm install
npm run build可用脚本
npm run build # Compila TypeScript
npm run start # Inicia el servidor
npm run dev # Modo desarrollo con watch许可证
MIT
作者
Soulberto Lorenzo - @slorenzot
版本
2.4.1 - 34 个可用于 Azure DevOps 的工具 (工作项、Git 仓库、Pull Request 等)
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/soulberto/mcp-azure'
If you have feedback or need assistance with the MCP directory API, please join our Discord server