使用说明
Azure DevOps MCP服务器
一 MCP(模型上下文协议) 暴露的服务器 41个Azure DevOps工具 AI助手——涵盖管道、Git存储库、拉取请求、发布、板、工作项、测试管理和wiki。
认证:Azure Entra设备代码流--无需应用程序注册。
它能做什么
| 类别 | 工具 | 亮点 |
|---|---|---|
| 管道和建筑 | 6 | 列出管道、查看运行/日志、触发构建、浏览构建工件 |
| 发布和批准 | 6 | 列出/创建发布,查看发布详细信息,列出/批准/拒绝批准 |
| Git存储库 | 6 | 列出存储库、浏览分支、查看提交、读取文件内容、比较分支 |
| 拉取请求 | 6 | 列出/创建/更新PR,阅读评论线程,添加评论(内联或通用) |
| 板和工作项目 | 10 | 列出板、获取/创建/更新/删除工作项、注释、WIQL查询、保存的查询 |
| 测试管理 | 3 | 列出测试运行,查看测试结果,获取代码覆盖率 |
| 维基 | 3 | 列出Wiki、阅读页面、创建/更新页面 |
| 总计41 |
先决条件
- Python 3.10+
- 访问Azure DevOps组织(dev.ai.com)
安装
来自PyPI(推荐)
pip install azure-devops-mcp-server
或与 紫外线:
uv pip install azure-devops-mcp-server
来源
git clone <your-repo-url>
cd azure-devops-mcp
pip install -e .
快速开始
安装后,请执行以下3个步骤:
步骤1:安装
pip install azure-devops-mcp-server
步骤2:添加到您的AI编辑器
打开编辑器的MCP配置文件并添加服务器。以下是VS Code作为示例(.vscode/mcp.json):
选项A——使用PAT(最简单,无浏览器提示):
{
"servers": {
"azure-devops": {
"command": "azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/YOUR-ORG",
"AZURE_DEVOPS_PAT": "YOUR-PERSONAL-ACCESS-TOKEN"
}
}
}
}
要创建PAT,请执行以下操作: Azure DevOps→ 用户设置→ 个人访问令牌→ 新令牌.
选项B——带设备代码流(不需要PAT):
首先,从您的终端登录一次:
export AZURE_DEVOPS_ORG_URL=https://dev.azure.com/YOUR-ORG
azure-devops-mcp auth login
这将打开您的浏览器,您登录,令牌将在本地缓存。然后添加到编辑器中——不需要PAT:
{
"servers": {
"azure-devops": {
"command": "azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/YOUR-ORG"
}
}
}
}
令牌缓存在
~/.azure-devops-mcp/token_cache.json自动刷新(约90天)。 跑azure-devops-mcp auth status检查您的登录状态。
第三步:使用它
打开你的人工智能助手(Copilot Chat、Claude等),问:
List all pipelines in my project
服务器处理身份验证和API调用-AI工具自动看到41个Azure DevOps命令。
配置
设置这些环境变量(通过shell, .env 文件或MCP客户端配置):
| 变量 | 必填 | 描述 |
|---|---|---|
AZURE_DEVOPS_ORG_URL |
是 | 您的Azure DevOps组织URL(例如。, https://dev.azure.com/your-organization) |
AZURE_DEVOPS_PROJECT |
否 | 默认项目(可根据每次工具调用进行覆盖) |
认证
服务器支持 4种身份验证方法,从环境变量中自动检测到:
方法1:个人访问令牌(PAT)——最简单
最适合:脚本、个人使用、CI/CD管道。
| 变量 | 描述 |
|---|---|
AZURE_DEVOPS_PAT |
你的 个人访问令牌 |
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/my-org",
"AZURE_DEVOPS_PAT": "your-pat-here"
}
方法2:服务主体(客户端凭据)——适用于应用程序
最适合:注册的Azure AD应用程序、服务到服务、自动化工作流。
| 变量 | 描述 |
|---|---|
AZURE_CLIENT_ID |
Azure AD应用注册中的应用程序(客户端)ID |
AZURE_CLIENT_SECRET |
应用程序的客户端机密 |
AZURE_TENANT_ID |
Azure AD租户ID |
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/my-org",
"AZURE_CLIENT_ID": "your-app-id",
"AZURE_CLIENT_SECRET": "your-secret",
"AZURE_TENANT_ID": "your-tenant-id"
}
方法3:托管身份——适用于Azure托管环境
最适合:在Azure虚拟机、应用服务、Azure功能、AKS上运行。没有要管理的凭据。
pip install azure-devops-mcp-server[managed-identity]
| 变量 | 描述 |
|---|---|
AZURE_USE_MANAGED_IDENTITY |
设置为 true 以启用 |
AZURE_CLIENT_ID |
(可选) 用户分配的托管身份的客户端ID |
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/my-org",
"AZURE_USE_MANAGED_IDENTITY": "true"
}
方法4:设备代码流——交互式(默认)
最适合:本地运行的开发人员。无需PAT或应用程序注册。
推荐: 在配置AI编辑器之前,从终端进行预身份验证:
export AZURE_DEVOPS_ORG_URL=https://dev.azure.com/my-org
azure-devops-mcp auth login # Opens browser, caches token
azure-devops-mcp auth status # Verify login state
浏览器会自动打开。登录后,令牌将缓存在 ~/.azure-devops-mcp/token_cache.json 自动刷新(约90天)。
如果你跳过 auth login,服务器将在第一次API调用时通过stderr进行提示,但大多数AI编辑器不显示stderr,因此强烈建议进行预验证。
优先:帕特→ 客户端凭据→ 管理身份→ 设备代码。第一种方法检测到获胜。
设置环境变量
有三种方法可以传递您的配置:
选项A——在AI编辑器的MCP配置中 (推荐)
每个MCP兼容编辑器都有一个 "env" 块在其配置中。这是最简单的方法——只需在那里添加变量。请参阅 整合 下面的部分提供了特定于编辑器的示例。
选项B——通过a .env 文件
创建一个 .env 工作目录中的文件(使用 .env.example 作为模板):
AZURE_DEVOPS_ORG_URL=https://dev.azure.com/my-org
AZURE_DEVOPS_PAT=my-pat-token
服务器在启动时通过以下方式自动加载 python-dotenv.
选项C——通过shell环境 (CI/CD、Docker、手动运行)
export AZURE_DEVOPS_ORG_URL=https://dev.azure.com/my-org
export AZURE_DEVOPS_PAT=my-pat-token
azure-devops-mcp
整合
通过pip安装后 azure-devops-mcp 命令在PATH中可用。配置您的AI工具:
VS代码(GitHub复制/复制聊天)
添加 .vscode/mcp.json 在您的工作区中(或用户设置下的JSON) mcp.servers):
{
"servers": {
"azure-devops": {
"command": "azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
"AZURE_DEVOPS_PROJECT": "your-default-project"
}
}
}
}
克劳德桌面
添加到您的Claude Desktop配置文件中:
- 视窗:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"azure-devops": {
"command": "azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
"AZURE_DEVOPS_PROJECT": "your-default-project"
}
}
}
}
克劳德码(Cortex码)
claude mcp add azure-devops -- azure-devops-mcp
然后在shell或Claude配置中设置环境变量。
光标
添加 .cursor/mcp.json 在您的工作空间中:
{
"mcpServers": {
"azure-devops": {
"command": "azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
"AZURE_DEVOPS_PROJECT": "your-default-project",
"AZURE_TENANT_ID": "your-tenant-id-or-organizations"
}
}
}
}
帆板运动
添加 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"azure-devops": {
"command": "azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
"AZURE_DEVOPS_PROJECT": "your-default-project"
}
}
}
}
任何兼容MCP的客户端
服务器通过以下方式进行通信 标准.将任何MCP客户端指向:
azure-devops-mcp
从源代码运行(备选)
如果你克隆了仓库而不是通过pip安装:
{
"servers": {
"azure-devops": {
"command": "uv",
"args": ["run", "python", "-m", "azure_devops_mcp"],
"cwd": "/path/to/azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
"AZURE_DEVOPS_PROJECT": "your-default-project"
}
}
}
}
全部41个工具
管道和建筑文物
| 工具 | 说明 |
|---|---|
list_pipelines |
列出项目中的所有YAML管道 |
get_pipeline_runs |
获取管道的最近运行记录 |
get_pipeline_run_logs |
获取管道运行的完整日志 |
trigger_pipeline |
使用可选模板参数触发新的管道运行 |
list_build_artifacts |
列出构建产生的工件 |
get_artifact_download_url |
获取特定构建工件的下载URL |
发布和批准
| 工具 | 说明 |
|---|---|
list_release_definitions |
列出经典的发布定义(发布管道) |
list_releases |
列表发布,可根据定义进行筛选 |
get_release |
获取发布详细信息,包括环境/阶段状态 |
create_release |
创建具有可选工件版本覆盖的版本 |
list_release_approvals |
列出待定(或其他状态)的发布批准 |
update_release_approval |
批准或拒绝发布批准 |
Git存储库
| 工具 | 说明 |
|---|---|
list_repositories |
列出项目中的所有Git存储库 |
get_repository |
获取有关存储库的详细信息(URL、默认分支等) |
list_branches |
列出分支,可选择按前缀过滤 |
get_commits |
获取最近的提交,可选择按分支或作者进行筛选 |
get_file_content |
从存储库读取文件内容 |
compare_branches |
比较两个分支(前/后计数+更改的文件) |
拉取请求
| 工具 | 说明 |
|---|---|
list_pull_requests |
按状态列出PR(活动/完成/放弃) |
get_pull_request |
获取PR详细信息(审阅者、合并状态等) |
create_pull_request |
使用可选审阅者和草稿模式创建新的PR |
update_pull_request |
更新PR状态、标题、描述、自动完成、合并策略 |
get_pull_request_threads |
获取PR上的所有评论帖子 |
create_pull_request_comment |
添加注释(常规注释或特定文件/行上的内联注释) |
板和工作项目
| 工具 | 说明 |
|---|---|
list_boards |
列出项目/团队的公告板 |
get_board_work_items |
在带有列信息的板上获取工作项 |
get_work_item |
获取完整的工作项详细信息(字段、关系、估计) |
create_work_item |
创建Bug、用户故事、任务、史诗或功能 |
update_work_item |
更新字段和/或添加关系链接 |
delete_work_item |
删除工作项(回收站或永久) |
query_work_items |
执行任意WIQL查询 |
get_work_item_comments |
获取工作项的评论 |
add_work_item_comment |
向工作项添加注释 |
list_saved_queries |
列出已保存的查询文件夹和查询 |
run_saved_query |
按ID执行已保存的查询 |
测试管理
| 工具 | 说明 |
|---|---|
list_test_runs |
列出测试运行,可选择按状态筛选 |
get_test_run_results |
获取运行的测试结果(通过/失败/错误详细信息) |
get_code_coverage |
获取构建的代码覆盖率摘要 |
维基
| 工具 | 说明 |
|---|---|
list_wikis |
列出项目中的所有Wiki |
get_wiki_page |
按路径获取wiki页面的内容 |
create_or_update_wiki_page |
创建或更新包含markdown内容的wiki页面 |
示例提示
List all pipelines in the "MyProject" project
Show me the last 5 runs for pipeline 42
List all active pull requests in the "backend-api" repository
Create a pull request from feature/login to main titled "Add login page"
Show me pending release approvals
Approve release approval 1234 with comment "Looks good, deploying to prod"
Query all active bugs assigned to me:
SELECT [System.Id], [System.Title] FROM workitems
WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'Active'
AND [System.AssignedTo] = @Me
Get the wiki page at /Runbooks/Deployment from the project wiki
Show test results for test run 567 — only failures
Compare the main and develop branches in the "frontend" repo
发展
运行MCP开发检查器以交互方式测试工具:
uv run mcp dev src/azure_devops_mcp/server.py
建筑
azure-devops-mcp/
├── src/azure_devops_mcp/
│ ├── __init__.py # Package init + version
│ ├── __main__.py # CLI entry point (azure-devops-mcp command)
│ ├── server.py # MCP server — registers all 41 tools
│ ├── auth.py # MSAL device-code auth (no app registration needed)
│ └── clients/
│ ├── pipelines.py # Pipeline + build artifact API calls
│ ├── releases.py # Classic release + approval API calls
│ ├── git.py # Git repos, branches, commits, PRs
│ ├── boards.py # Boards, work items, comments, saved queries
│ ├── tests.py # Test runs, results, code coverage
│ └── wiki.py # Wiki pages
├── .env.example # Environment variable template
├── pyproject.toml # Python project config (PyPI metadata + build)
└── README.md
所有客户端模块都包括具有指数回退的重试逻辑 429 Too Many Requests 和 5xx 服务器错误。
