关于 Cursor Azure DevOps MCP Server
Cursor Azure DevOps MCP Server 将 Azure DevOps 项目数据接入 Cursor 中的 AI 工作流,提供工作项、仓库、拉取请求和测试管理能力,并会截断过大的响应。
主要功能
- 01获取项目和工作项
- 02浏览仓库和拉取请求
- 03查看拉取请求变更和评论
- 04访问测试计划、套件和用例
- 05截断大型响应并保留关键字段
- 06使用已配置的默认项目
适用场景
- 01在 Cursor 中查看工作项
- 02检查拉取请求差异和讨论串
- 03为拉取请求添加评论
- 04浏览测试计划和用例
MCP 相关
此 MCP 服务将 Azure DevOps 项目、工作项、仓库、拉取请求和测试管理数据作为工具提供。它可通过命令模式或 SSE 模式连接 Cursor。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Cursor Azure DevOps MCP 服务
用于将 Azure DevOps 与 Cursor IDE 集成的模型上下文协议(MCP)服务。此工具可让 Cursor 中的 Claude AI 与 Azure DevOps 交互,访问项目、工作项、代码库和拉取请求。
功能
- 获取 Azure DevOps 项目
- 按 ID 获取工作项
- 获取多个工作项
- 列出项目中的代码库
- 获取代码库的拉取请求
- 查看拉取请求详情和讨论串
- 获取工作项附件(图片、PDF 和其他文件)
- 获取包含元数据的工作项评论(包括提及和回应)
- 获取拉取请求的详细代码更改(查看更改前后的文件内容)
- 在拉取请求上创建评论(支持回复现有评论)
- 测试计划管理:
- 列出项目中的所有测试计划
- 按 ID 获取测试计划详情
- 列出测试计划中的测试套件
- 按 ID 获取测试套件详情
- 列出测试套件中的测试用例
- 智能响应处理:
- 自动截断大型响应,以符合 AI 模型的限制
- 截断响应时保留关键字段
- 提供截断状态和原始大小的元数据
- 项目配置:
- 支持从配置中指定默认项目
- 未指定项目时回退到配置中的项目
- 妥善处理缺少项目信息的情况
更新日志
版本 1.0.3
新增
- 支持测试计划管理:
- 新工具:
azure_devops_test_plans- 列出项目中的所有测试计划 - 新工具:
azure_devops_test_plan- 按 ID 获取测试计划 - 新工具:
azure_devops_test_suites- 列出测试计划中的所有测试套件 - 新工具:
azure_devops_test_suite- 按 ID 获取测试套件 - 新工具:
azure_devops_test_cases- 列出测试套件中的所有测试用例
- 新工具:
增强
- 响应大小管理:
- 新增智能响应截断功能(默认最大 50KB)
- 截断响应时保留关键字段
- 在响应中添加截断元数据
- 项目配置:
- 新增从配置中指定默认项目的支持
- 改进所有测试相关方法中的项目参数处理
- 妥善处理缺少项目信息的情况
修复
- 调整测试套件方法中的参数顺序,以符合 TypeScript 要求
- 改进测试相关 API 调用中的错误处理
- 优化大型测试套件响应的格式
安装
全局安装
npm install -g cursor-azure-devops-mcp
本地安装
npm install cursor-azure-devops-mcp
配置
服务可通过多种来源进行配置,优先级如下:
- 命令行参数
- VSCode/Cursor IDE 设置
- 环境变量 /
.env文件 - 默认值
命令行参数
你可以使用命令行参数配置服务器:
npx cursor-azure-devops-mcp --azure-org-url=https://dev.azure.com/your-organization --azure-token=your-token --azure-project=YourProject
可用选项:
| 选项 | 别名 | 描述 |
|---|---|---|
--azure-org-url | --org | Azure DevOps 组织 URL |
--azure-token | --token | Azure DevOps 个人访问令牌 |
--azure-project | --project | 默认 Azure DevOps 项目名称 |
--port | -p | 服务器端口(HTTP 模式) |
--host | -h | 服务器主机名(HTTP 模式) |
--log-level | --log | 日志级别(error、warn、info、debug) |
--help | -? | 显示帮助 |
VSCode/Cursor IDE 设置
你可以在 VSCode 或 Cursor IDE 设置中配置服务器:
- 全局设置:
~/.vscode/settings.json或~/.cursor/settings.json - 工作区设置:
.vscode/settings.json或.cursor/settings.json
设置示例:
{
"azureDevOps.organization": "your-organization",
"azureDevOps.token": "your-personal-access-token",
"azureDevOps.project": "YourProject",
"cursor-azure-devops-mcp": {
"port": 3000,
"logLevel": "info"
}
}
环境变量
在项目根目录中创建 .env 文件,并添加以下变量:
AZURE_DEVOPS_ORG_URL=https://dev.azure.com/your-organization
AZURE_DEVOPS_TOKEN=your-personal-access-token
AZURE_DEVOPS_PROJECT=YourProject
PORT=3000
LOG_LEVEL=info
你也可以复制提供的 .env.example 文件:
cp .env.example .env
然后编辑该文件,填写你的 Azure DevOps 凭据。
使用方法
使用 npx 运行
使用此 MCP 服务最简单的方法是通过 npx:
npx cursor-azure-devops-mcp
在 Cursor IDE 中设置(版本 0.46.9+)
Cursor IDE 支持通过两种方式连接到 MCP 服务:Command 模式和 SSE 模式。
选项 1:Command 模式(推荐)
Command 模式会直接在 Cursor 中以进程的形式运行 MCP 服务。这是最可靠的方法,应作为首选:
-
打开 Cursor IDE
-
前往 Settings > Features > MCP Servers
-
点击“Add New MCP Server”
-
输入服务名称(例如,“Azure DevOps”)
-
从下拉菜单中选择“command”
-
输入运行服务的命令:
cursor-azure-devops-mcp如果尚未全局安装,可以使用 npx:
npx cursor-azure-devops-mcp -
点击“Add”
重要提示:使用 Command 模式时,服务会自动使用系统环境变量,或使用当前工作目录中的 .env 文件。请确保 .env 文件已正确配置 Azure DevOps 凭据。
Command 模式故障排除:
如果遇到“server.setRequestHandler is not a function”或类似错误:
- 确保已安装最新版本的软件包
- 尝试重新安装软件包:
npm install -g cursor-azure-devops-mcp - 检查
.env文件是否已正确配置 Azure DevOps 凭据
选项 2:SSE 模式(备选)
注意:SSE 模式更容易出现连接问题。如果遇到问题,请改用 Command 模式。
SSE 模式通过 Server-Sent Events 连接到 HTTP 服务:
-
首先,启动支持 SSE 的 HTTP 服务:
npm run sse-server或
npx cursor-azure-devops-mcp-sse默认情况下,这会在端口 3000 上启动服务。
-
打开 Cursor IDE
-
前往 Settings > Features > MCP Servers
-
点击“Add New MCP Server”
-
输入服务名称(例如,“Azure DevOps SSE”)
-
从下拉菜单中选择“sse”
-
输入 SSE 端点 URL:
http://localhost:3000/sse -
点击“Add”
Windows 用户
如果你使用 Windows 且遇到命令模式问题,请尝试使用以下格式:
cmd /k npx cursor-azure-devops-mcp
mcp.json 安装
{
"azure-devops": {
"command": "cmd",
"args": [
"/c",
"npx",
"cursor-azure-devops-mcp",
"--azure-org-url",
"https://your-organization.visualstudio.com",
"--azure-token",
"your-personal-access-token",
"--azure-project",
"your-project"
]
}
}
在代码中使用
const { McpServer } = require('@modelcontextprotocol/sdk/server/mcp.js');
const { registerTools } = require('cursor-azure-devops-mcp');
const azureDevOpsService = require('cursor-azure-devops-mcp/lib/azure-devops-service');
// Create MCP server
const server = new McpServer({
name: 'cursor-azure-devops-mcp',
version: '1.0.0'
});
// Register Azure DevOps tools with the server
registerTools(server, azureDevOpsService);
// Connect to your transport of choice
// ...
可用工具
| 工具名称 | 描述 | 必需参数 |
|---|---|---|
azure_devops_projects | 获取所有项目 | 无 |
azure_devops_work_item | 获取特定工作项 | id(数字) |
azure_devops_work_items | 获取多个工作项 | ids(数字数组) |
azure_devops_repositories | 获取项目的存储库 | project(字符串) |
azure_devops_pull_requests | 获取存储库中的拉取请求 | repositoryId(字符串)、project(字符串) |
azure_devops_pull_request_by_id | 获取特定拉取请求 | repositoryId(字符串)、pullRequestId(数字)、project(字符串) |
azure_devops_pull_request_threads | 获取拉取请求中的讨论串 | repositoryId(字符串)、pullRequestId(数字)、project(字符串) |
azure_devops_work_item_attachments | 获取工作项的附件 | id(数字) |
azure_devops_work_item_comments | 获取工作项的评论 | id(数字) |
azure_devops_pull_request_changes | 获取 PR 代码更改的详细信息 | repositoryId(字符串)、pullRequestId(数字)、project(字符串) |
azure_devops_pull_request_file_content | 获取拉取请求中特定文件的内容 | repositoryId(字符串)、pullRequestId(数字)、filePath(字符串)、objectId(字符串)、project(字符串)、可选:returnPlainText(布尔值)、startPosition(数字)、length(数字) |
azure_devops_branch_file_content | 直接从分支获取文件内容 | repositoryId(字符串)、branchName(字符串)、filePath(字符串)、project(字符串)、可选:returnPlainText(布尔值)、startPosition(数字)、length(数字) |
azure_devops_create_pr_comment | 在拉取请求中创建评论 | repositoryId(字符串)、pullRequestId(数字)、project(字符串)、content(字符串)以及其他可选参数 |
azure_devops_test_plans | 列出项目的所有测试计划 | project(字符串) |
azure_devops_test_plan | 根据 ID 获取测试计划 | project(字符串)、testPlanId(数字) |
azure_devops_test_suites | 列出测试计划的所有测试套件 | project(字符串)、testPlanId(数字) |
azure_devops_test_suite | 根据 ID 获取测试套件 | project(字符串)、testPlanId(数字)、testSuiteId(数字) |
azure_devops_test_cases | 列出测试套件的所有测试用例 | project(字符串)、testPlanId(数字)、testSuiteId(数字) |
测试管理工具
测试管理工具可全面访问 Azure DevOps 测试计划、测试套件和测试用例:
- 自动处理项目:所有测试工具都支持使用配置中的默认项目
- 智能截断响应:大型响应会自动截断,以适配 AI 模型限制,同时保留必要信息
- 保留元数据:即使响应经过截断,重要元数据(如 ID、名称和关联关系)仍会保留
- 错误处理:提供全面的错误处理,并附带详细的错误消息
使用示例:
列出项目中的所有测试计划:
{
"project": "YourProject"
}
获取特定测试套件:
{
"project": "YourProject",
"testPlanId": 185735,
"testSuiteId": 186771
}
列出测试套件中的测试用例:
{
"project": "YourProject",
"testPlanId": 185735,
"testSuiteId": 186771
}
使用测试管理工具时,应当:
- 首先使用
azure_devops_test_plans获取项目的测试计划 - 使用特定测试计划 ID,通过
azure_devops_test_suites获取测试套件 - 最后,使用
azure_devops_test_cases获取特定测试套件的测试用例
必要时,响应格式会包含截断元数据:
{
"items": [...],
"totalCount": 100,
"isTruncated": true,
"truncatedCount": 80,
"message": "Response was truncated. Showing 20 of 100 items."
}
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。