这是一个强大的集成工具,通过模型上下文协议(MCP)服务器提供对工作项、仓库、项目、看板和冲刺的无缝访问。
此服务器提供了一个方便的API,用于与Azure DevOps服务进行交互,使AI助手和其他工具能够管理工作项、代码仓库、看板、冲刺等。它基于模型上下文协议构建,提供了与Azure DevOps通信的标准接口。

集成被组织成八个主要工具类别:
最简单的方式是通过NPX使用Azure DevOps MCP服务器:
npx @ryancardin/azuredevops-mcp-server@latest
无需安装或构建步骤!只需设置环境变量并运行即可。
点击下方按钮直接在Cursor中安装Azure DevOps MCP服务器:
重要: 在Cursor中安装后,必须在Cursor MCP配置中更新实际的Azure DevOps详细信息。
了解更多关于Cursor深度链接的信息,请访问https://docs.cursor.com/deeplinks
npm install -g @ryancardin/azuredevops-mcp-server
azuredevops-mcp-server
npx -y @smithery/cli install @RyanCardin15/azuredevops-mcp --client claude
为了开发或定制:
克隆仓库:
git clone https://github.com/RyanCardin15/AzureDevOps-MCP.git
cd AzureDevOps-MCP
安装依赖:
npm install
构建项目:
npm run build
本地运行:
npm start
通过环境变量配置服务器。可以在shell、.env文件或MCP客户端配置中设置这些变量:
AZURE_DEVOPS_ORG_URL=https://dev.azure.com/your-organization
AZURE_DEVOPS_PROJECT=your-default-project
AZURE_DEVOPS_IS_ON_PREMISES=false
AZURE_DEVOPS_AUTH_TYPE=pat
AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN=your-personal-access-token
AZURE_DEVOPS_ORG_URL=https://your-server/tfs
AZURE_DEVOPS_PROJECT=your-default-project
AZURE_DEVOPS_IS_ON_PREMISES=true
AZURE_DEVOPS_COLLECTION=your-collection
AZURE_DEVOPS_API_VERSION=6.0
AZURE_DEVOPS_AUTH_TYPE=pat
AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN=
# NTLM身份验证
AZURE_DEVOPS_AUTH_TYPE=ntlm
AZURE_DEVOPS_USERNAME=your-username
AZURE_DEVOPS_PASSWORD=your-password
AZURE_DEVOPS_DOMAIN=your-domain
# 基本身份验证
AZURE_DEVOPS_AUTH_TYPE=basic
AZURE_DEVOPS_USERNAME=your-username
AZURE_DEVOPS_PASSWORD=your-password
# Entra ID身份验证(需要az CLI)
AZURE_DEVOPS_AUTH_TYPE=entra
在Cursor MCP设置中添加以下内容:
{
"mcpServers": {
"azure-devops": {
"command": "npx",
"args": ["@ryancardin/azuredevops-mcp-server@latest"],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
"AZURE_DEVOPS_PROJECT": "your-project",
"AZURE_DEVOPS_IS_ON_PREMISES": "false",
"AZURE_DEVOPS_AUTH_TYPE": "pat",
"AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN": "your-personal-access-token"
}
}
}
}
在Claude桌面MCP配置文件中添加以下内容:
{
"mcpServers": {
"azure-devops": {
"command": "npx",
"args": ["@ryancardin/azuredevops-mcp-server@latest"],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
"AZURE_DEVOPS_PROJECT": "your-project",
"AZURE_DEVOPS_IS_ON_PREMISES": "false",
"AZURE_DEVOPS_AUTH_TYPE": "pat",
"AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN": "your-personal-access-token"
}
}
}
}
对于Azure DevOps服务(云),你需要创建一个具有适当权限的个人访问令牌:
对于Azure DevOps服务器(本地部署),按照类似的步骤在本地实例中创建PAT。
| 变量 | 描述 | 是否必需 | 默认值 |
|---|---|---|---|
| AZURE_DEVOPS_ORG_URL | 你的Azure DevOps组织或服务器的URL | 是 | - |
| AZURE_DEVOPS_PROJECT | 默认使用的项目 | 是 | - |
| AZURE_DEVOPS_IS_ON_PREMISES | 是否使用Azure DevOps服务器 | 否 | false |
| AZURE_DEVOPS_COLLECTION | 本地部署的集合名称 | 否* | - |
| AZURE_DEVOPS_API_VERSION | 本地部署的API版本 | 否 | - |
| AZURE_DEVOPS_AUTH_TYPE | 身份验证类型(pat/ntlm/basic/entra) | 否 | pat |
| AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN | 个人访问令牌(适用于'pat'身份验证) | 否** | - |
| AZURE_DEVOPS_USERNAME | NTLM/基本身份验证用户名 | 否** | - |
| AZURE_DEVOPS_PASSWORD | NTLM/基本身份验证密码 | 否** | - |
| AZURE_DEVOPS_DOMAIN | NTLM身份验证域 | 否 | - |
| ALLOWED_TOOLS | 逗号分隔的工具方法列表,以启用 | 否 | 所有工具 |
* 如果AZURE_DEVOPS_IS_ON_PREMISES=true则必需
** 根据所选的身份验证类型而定
ALLOWED_TOOLS环境变量允许你限制哪些工具方法可用。这是完全可选的——如果不指定,默认情况下所有工具都将启用。
格式:无空格的逗号分隔的方法名列表。
示例:
ALLOWED_TOOLS=listWorkItems,getWorkItemById,searchWorkItems,createWorkItem
这将仅启用指定的工作项方法,同时禁用其他所有方法。
对于Entra ID身份验证,确保已安装并认证了Azure CLI:
az login
服务器支持AZ CLI、AZD和Azure PowerShell模块,只要您已认证。
一旦服务器运行,就可以使用MCP协议与其交互。服务器公开了多个工具,用于不同的Azure DevOps功能。
注意: 默认情况下,只有部分工具在
index.ts文件中注册,以保持初始实现简单。有关如何注册更多工具的信息,请参阅工具注册部分。
{
"tool": "listWorkItems",
"params": {
"query": "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.State] = 'Active' ORDER BY [System.CreatedDate] DESC"
}
}
{
"tool": "createWorkItem",
"params": {
"workItemType": "用户故事",
"title": "实现新功能",
"description": "作为用户,我希望能够导出PDF格式的报告。",
"assignedTo": "john@example.com"
}
}
{
"tool": "listRepositories",
"params": {
"projectId": "MyProject"
}
}
{
"tool": "createPullRequest",
"params": {
"repositoryId": "repo-guid",
"sourceRefName": "refs/heads/feature-branch",
"targetRefName": "refs/heads/main",
"title": "添加新功能",
"description": "此PR添加了导出到PDF的功能"
}
}
项目结构如下:
src/
Interfaces/: 参数和响应的类型定义Services/: 与Azure DevOps API交互的服务类Tools/: 向客户端暴露功能的工具实现index.ts: 注册工具并启动服务器的主要入口点config.ts: 配置处理服务层负责与Azure DevOps API的直接通信:
WorkItemService: 工作项操作BoardsSprintsService: 看板和冲刺操作ProjectService: 项目管理操作GitService: Git仓库操作TestingCapabilitiesService: 测试能力操作DevSecOpsService: DevSecOps操作ArtifactManagementService: 构件管理操作AIAssistedDevelopmentService: AI辅助开发操作工具层封装了服务,并为MCP协议提供了一致的接口:
WorkItemTools: 工作项操作工具BoardsSprintsTools: 看板和冲刺操作工具ProjectTools: 项目管理操作工具GitTools: Git操作工具TestingCapabilitiesTools: 测试能力操作工具DevSecOpsTools: DevSecOps操作工具ArtifactManagementTools: 构件管理操作工具AIAssistedDevelopmentTools: AI辅助开发操作工具MCP服务器要求工具在index.ts文件中显式注册。默认情况下,只注册了一部分可能的工具,以保持初始实现的可管理性。
要注册更多工具:
src/index.ts文件在存储库中的TOOL_REGISTRATION.md文件中有详细的工具注册指南。
注意: 注册工具时,请小心使用正确的参数类型,特别是枚举值。
Interfaces目录中的类型定义指定了每个参数的预期类型。使用错误的类型(例如,使用z.string()而不是z.enum()来表示枚举值)将在构建期间导致TypeScript错误。
注册新工具的示例:
server.tool("searchCode",
"搜索仓库中的代码",
{
searchText: z.string().describe("要搜索的文本"),
repositoryId: z.string().optional().describe("仓库ID")
},
async (params, extra) => {
const result = await gitTools.searchCode(params);
return {
content: result.content,
rawData: result.rawData,
isError: result.isError
};
}
);
npm run build:ignore-errors跳过TypeScript错误欢迎贡献!以下是贡献方式:
git checkout -b feature/amazing-feature)git commit -m '添加一些精彩的功能')git push origin feature/amazing-feature)请确保您的代码通过了代码检查,并包含了适当的测试。
[](https://