Cursor Azure DevOps MCP服务器
  ](https://github.com/maximtitovich/cursor-azure-devops-mcp/actions/workflows/version-bump.yml) ](https://www.npmjs.com/package/cursor-azure-devops-mcp) 
用于将Azure DevOps与Cursor IDE集成的模型上下文协议(MCP)服务器。该工具允许Cursor中的Claude AI与Azure DevOps交互,提供对项目、工作项、存储库和拉取请求的访问。
特性
- 获取Azure DevOps项目
- 按ID检索工作项
- 获取多个工作项
- 列出项目中的存储库
- 获取存储库的拉取请求
- 查看拉取请求详细信息和线程
- 检索工作项附件(图像、PDF和其他文件)
- 使用元数据获取工作项注释(包括提及和反应)
- 获取拉取请求的详细代码更改(查看更改前后的文件内容)
- 在pull请求上创建评论(支持回复现有评论)
- 测试计划管理:
- 列出项目中的所有测试计划 - 按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/游标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 | 日志记录级别(错误、警告、信息、调试) |
--help | -? | 显示帮助 |
VSCode/光标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服务器的方法:命令模式和SSE模式。
选项1:命令模式(推荐)
命令模式直接从Cursor将MCP服务器作为进程运行。这就是 最可靠的方法 应该是你的第一选择:
- 打开光标IDE
- 前往“设置”>“功能”>“MCP服务器”
- 点击“添加新MCP服务器”
- 输入服务器的名称(例如,“Azure DevOps”)
- 从下拉菜单中选择“命令”
- 输入运行服务器的命令:
cursor-azure-devops-mcp如果你还没有全局安装,你可以使用npx:
npx cursor-azure-devops-mcp- 点击“添加”
重要:使用命令模式时,服务器将自动使用系统或 .env 您当前工作目录中的文件。确保你的 .env 文件已使用您的Azure DevOps凭据正确设置。
故障排除命令模式:
如果遇到错误“server.setRequestHandler不是函数”或类似错误:
- 确保您安装了最新版本的软件包
- 尝试重新安装软件包:
npm install -g cursor-azure-devops-mcp - 检查你的
.env文件已使用您的Azure DevOps凭据正确设置
选项2:SSE模式(备选)
备注:SSE模式更容易出现连接问题。如果您遇到问题,请改用命令模式。
SSE模式通过服务器发送事件连接到HTTP服务器:
- 首先,启动支持SSE的HTTP服务器:
npm run sse-server或
npx cursor-azure-devops-mcp-sse默认情况下,这将在端口3000上启动服务器。
- 打开光标IDE
- 前往“设置”>“功能”>“MCP服务器”
- 点击“添加新MCP服务器”
- 输入服务器的名称(例如,“Azure DevOps SSE”)
- 从下拉列表中选择“sse”
- 输入SSE端点URL:
http://localhost:3000/sse- 点击“添加”
windows用户
如果您使用的是Windows,并且在命令模式下遇到问题,请尝试以下格式:
cmd /k npx cursor-azure-devops-mcpmcp.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 | 从pull请求中获取线程 | 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 (string),可选: returnPlainText (布尔值), startPosition (数字), length (编号) |
azure_devops_branch_file_content | 直接从分支获取文件内容 | repositoryId (字符串), branchName (字符串), filePath (字符串), project (string),可选: returnPlainText (布尔值), startPosition (数字), length (编号) |
azure_devops_create_pr_comment | 对pull请求创建评论 | repositoryId (字符串), pullRequestId (数字), project (字符串), content (string)和其他可选参数 |
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."
}