关于 Azure DevOps On-Premises
Azure DevOps On-Premises 是供使用自托管 Azure DevOps Server 或 TFS 的团队使用的 MCP 服务。它支持基于域凭据的 NTLM 身份验证,也支持 PAT 和 OAuth,并提供仓库、拉取请求、工作项和 Wiki 工具。
主要功能
- 01支持 NTLM、PAT 和 OAuth 身份验证
- 02浏览仓库与提交内容
- 03审查拉取请求和逐行差异
- 04搜索与管理工作项
- 05读取和更新 Wiki 页面
- 06支持 DevOps 数据的读写操作
适用场景
- 01将 AI 工具连接到本地部署的 DevOps 项目
- 02审查拉取请求讨论和文件更改
- 03在项目工作中查找并更新工作项
- 04搜索或维护项目 Wiki 文档
MCP 相关
该 MCP 服务提供工具,用于浏览和管理本地部署的 Azure DevOps 与 TFS 仓库、拉取请求、工作项和 Wiki。它支持 NTLM、PAT 和 OAuth Bearer Token 身份验证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx mcp-devops-onpremiseDEVOPS_API_URLFull Azure DevOps Server project URL, e.g. https://server/org/projectDEVOPS_USERNAMENTLM username, usually DOMAIN\usernameDEVOPS_PASSWORD密钥NTLM passwordDEVOPS_PAT密钥Personal Access Token for PAT authenticationDEVOPS_TOKEN密钥OAuth bearer token for bearer-token authentication本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP DevOps 本地部署版
面向本地部署的 Azure DevOps 的 Model Context Protocol MCP 服务,让 AI 助手能够浏览代码库、审查拉取请求、管理工作项并与 Wiki 交互。
概述
许多组织在项目中使用 TFS 或 Azure DevOps Server 等本地部署的 DevOps 解决方案。将这些系统与现代 Agentic AI 工具和大模型集成可能比较困难。Microsoft 官方的 Azure DevOps MCP 服务不支持这些环境,而且未来也不太可能支持。
此 MCP 服务弥补了这一缺口,能够与本地部署的 DevOps 系统顺畅集成。
本项目正积极开发中,并持续添加功能以满足当前需求。我们高度重视社区需求——如果你需要的功能尚未提供,请提交 Issue。用户请求的功能会优先处理,并尽快确定优先级和添加。
主要优势
此 MCP 服务最重要的功能之一是支持 NTLM 身份验证。许多本地部署和企业环境都需要 NTLM,用户可直接使用 Windows 域凭据或通过 VPN 进行身份验证。大多数面向 Azure DevOps 的 MCP 服务仅支持基于令牌身份验证的云端 Azure DevOps Services,无法连接到这些环境。
- 支持 NTLM 身份验证(Windows 域凭据),适用于没有其他身份验证方式可用的本地部署和 VPN 环境。
- 可选用 PAT 和 OAuth Bearer 令牌身份验证。
- 支持通过 GitHub Copilot、Claude Desktop、Cursor、Windsurf 等兼容 MCP 的 AI 工具安全访问本地部署的 DevOps 系统。
- 可在受限或离线环境中运行,无需向外部服务暴露敏感数据。
- 获取提交差异,并清晰显示添加和删除的行,类似 DevOps UI。
- 帮助将项目文档与代码更改一同保存和跟踪。
- 自动处理工作项管理和代码审查等常见任务。
快速开始
前提条件
需要安装 Python 3.10+ 和 uv。如果尚未安装,请参阅安装指南。
快速安装
点击下面的按钮,即可直接在 IDE 中安装。系统会提示你输入凭据:
其他平台请参阅入门指南中的手动安装。
手动安装
MCP 服务可以手动安装到以下 AI 工具中:VS Code、Visual Studio、Cursor、Goose、LM Studio、Amp、Claude Code、Claude Desktop、Codex、Gemini CLI、OpenCode、Qodo Gen、Warp、Windsurf、GitHub Copilot CLI、GitHub Copilot Coding Agent 等。
分步说明请参阅入门指南中的手动安装。
配置
DEVOPS_API_URL 必须指向完整的项目 URL:
https://<your-devops-server>/<organization>/<project>
该服务支持三种身份验证方式。如果不确定该使用哪种方式,请先选择 NTLM,因为它在本地部署/VPN 配置中最常见。
| 方式 | 说明 |
|---|---|
| NTLM(用户名 + 密码) | 本地部署/VPN 中最常见。通常是最简单的初始配置,也是其他方式无法使用时的最佳备用方案。 |
| PAT(个人访问令牌) | 在启用并允许使用 PAT 时选择。令牌可能会过期,基于令牌的身份验证也可能受到策略限制。优点:无需在配置中存储账户密码。 |
| OAuth Bearer Token | 适用于 CI/CD 流水线的高级选项。需要在 DevOps Server 上配置 OAuth 2.0,并由管理员定义令牌来源。 |
各方式的详细设置说明请参阅入门指南中的身份验证。
使用 NTLM(用户名 + 密码)
{
"mcpServers": {
"devops-onprem": {
"command": "uvx",
"args": ["mcp-devops-onpremise@latest"],
"env": {
"DEVOPS_API_URL": "https://your-devops-server/your-organization/your-project",
"DEVOPS_USERNAME": "DOMAIN\\your-username",
"DEVOPS_PASSWORD": "your-password"
}
}
}
}
使用 PAT
{
"mcpServers": {
"devops-onprem": {
"command": "uvx",
"args": ["mcp-devops-onpremise@latest"],
"env": {
"DEVOPS_API_URL": "https://your-devops-server/your-organization/your-project",
"DEVOPS_PAT": "your-personal-access-token"
}
}
}
}
如果你使用的是永久安装,请将
"command": "uvx"替换为"command": "mcp-devops-onpremise",并删除"args"行。
更新
所有配置示例都使用 mcp-devops-onpremise@latest,这会指示 uvx 在每次运行时自动获取最新版本。
有关永久安装和发行说明,请参阅入门指南中的更新。
可用工具
拉取请求
| 工具 | 描述 | 只读 |
|---|---|---|
devops_pull_request_get | 按 ID 获取拉取请求,包括关联的工作项和用于比较差异的提交 SHA | ✅ |
devops_pull_request_write | 创建或更新拉取请求、更新审阅者,或投票表决你的 PR | ❌ |
devops_pull_request_list_threads | 返回未删除评论线程及其文本评论的分层列表 | ✅ |
devops_pull_request_list_thread_comments | 列出特定线程中未删除的文本评论 | ✅ |
devops_pull_request_create_comment | 创建包含初始评论的新线程(常规评论或针对文件/行的行内评论) | ❌ |
devops_pull_request_reply_comment | 回复现有评论线程 | ❌ |
devops_pull_request_update_thread | 更新评论线程的状态 | ❌ |
devops_pull_request_update_comment | 更新现有评论的文本 | ❌ |
devops_pull_request_delete_comment | 删除拉取请求线程中的评论 | ❌ |
仓库
| 工具 | 描述 | 只读 |
|---|---|---|
devops_repository_list | 列出项目中的所有仓库 | ✅ |
devops_repository_get | 按名称或 ID 获取仓库详情 | ✅ |
devops_repository_commit_changes | 列出特定提交中发生更改的文件 | ✅ |
devops_repository_diffs_commits | 获取两个提交之间的差异(已更改的文件路径) | ✅ |
devops_repository_item_content | 获取特定提交或分支中的原始文件内容 | ✅ |
devops_get_item_content_diff | 获取文件在两个提交之间的逐行文本差异(新增行以 + 为前缀,删除行以 - 为前缀) | ✅ |
工作项
| 工具 | 描述 | 只读 |
|---|---|---|
devops_work_item_get | 按数字 ID 获取工作项(PBI、bug、任务)。返回包含关键字段、附件(文件和行内图像)以及关联项(工作项、拉取请求、提交)的精简对象 | ✅ |
devops_work_item_attachment_get | 按 GUID 下载工作项附件,可保存到本地或返回 Base64 编码的内容 | ✅ |
devops_work_item_type_get | 按名称获取工作项类型的定义(例如 Bug、User Story) | ✅ |
devops_work_item_query_by_wiql | 执行 WIQL(工作项查询语言)查询并返回匹配的工作项 | ✅ |
devops_work_item_create | 使用指定类型的字段创建工作项;默认格式为 Html | ❌ |
devops_work_item_update | 使用 JSON Patch(add / replace / remove)更新工作项字段 | ❌ |
devops_work_item_delete | 删除工作项,默认移至回收站;使用 destroy=True 可永久删除(需要项目权限) | ❌ |
devops_work_item_undelete | 从回收站恢复软删除的工作项 | ❌ |
devops_work_item_link_update | 添加或移除两个工作项之间的关联链接(父项、子项、相关项、后继项、前置项等) | ❌ |
devops_work_item_artifact_link_update | 在工作项上添加或移除制品链接(拉取请求、构建、提交、分支、变更集) | ❌ |
devops_work_item_comment_list | 列出工作项评论,可配置页面大小和格式 | ✅ |
devops_work_item_comment_add | 向工作项添加评论 | ❌ |
devops_work_item_comment_update | 更新工作项中的现有评论 | ❌ |
devops_work_item_comment_delete | 删除工作项中的评论 | ❌ |
搜索
| 工具 | 描述 | 只读 |
|---|---|---|
devops_code_search | 搜索源代码,可选用仓库、路径和分支进行筛选 | ✅ |
devops_work_item_search | 搜索工作项,可选用区域、类型、状态和分配对象进行筛选 | ✅ |
devops_wiki_search | 搜索 Wiki 页面,可选用 Wiki 进行筛选 | ✅ |
Wiki
| 工具 | 描述 | 只读 |
|---|---|---|
devops_wiki_page_get | 根据 Wiki ID 和页面 ID 获取 Wiki 页面元数据及可选内容 | ✅ |
devops_wiki_page_create_or_update | 在指定的父页面下创建或更新 Wiki 页面 | ❌ |
devops_wiki_page_update | 根据 ID 更新现有 Wiki 页面 | ❌ |
devops_wiki_page_delete | 根据 ID 删除现有 Wiki 页面 | ❌ |
开发
# Install dev dependencies
uv sync --group dev
# Run linting
uv run ruff check src/
uv run black --check src/
# Run tests
uv run pytest tests/
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。