返回市场
游标AzureDevOps MCP

游标AzureDevOps MCP

作者:maximtitovich8 星标更新:2025-04-07

项目介绍

Cursor Azure DevOps MCP Server

CI Publish Version Bump npm version License: MIT

这是一个用于集成Azure DevOps与Cursor IDE的Model Context Protocol (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

配置

服务器可以通过多种来源进行配置,优先级如下:

  1. 命令行参数
  2. VSCode/Cursor IDE设置
  3. 环境变量 / .env 文件
  4. 默认值

命令行参数

你可以使用命令行参数来配置服务器:

npx cursor-azure-devops-mcp --azure-org-url=https://dev.azure.com/your-organization --azure-token=your-token --azure-project=YourProject

可用选项:

选项别名描述
--azure-org-url--orgAzure DevOps 组织 URL
--azure-token--tokenAzure 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设置中配置服务器:

  1. 全局设置:~/.vscode/settings.json~/.cursor/settings.json
  2. 工作区设置:.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运行

最简单的方式是使用npx来运行这个MCP服务器:

npx cursor-azure-devops-mcp

在Cursor IDE中设置(版本0.46.9及以上)

Cursor IDE支持两种连接到MCP服务器的方法:命令模式和SSE模式。

选项1:命令模式(推荐)

命令模式直接从Cursor运行MCP服务器作为进程。这是最可靠的方法,应该作为首选:

  1. 打开Cursor IDE

  2. 转到设置 > 功能 > MCP服务器

  3. 点击“添加新MCP服务器”

  4. 输入服务器名称(例如,“Azure DevOps”)

  5. 从下拉菜单中选择“command”

  6. 输入运行服务器的命令:

    cursor-azure-devops-mcp
    

    如果你没有全局安装它,可以使用npx:

    npx cursor-azure-devops-mcp
    
  7. 点击“添加”

重要提示:当使用命令模式时,服务器会自动使用系统环境变量或当前工作目录下的.env文件中的Azure DevOps凭证。确保你的.env文件已正确设置。

命令模式故障排除

如果你遇到“server.setRequestHandler不是函数”或其他类似错误:

  1. 确保你已经安装了最新版本的包
  2. 尝试重新安装包:npm install -g cursor-azure-devops-mcp
  3. 检查你的.env文件是否正确设置了Azure DevOps凭证

选项2:SSE模式(替代方案)

注意:SSE模式更容易出现连接问题。如果遇到问题,请改用命令模式。

SSE模式通过Server-Sent Events连接到HTTP服务器:

  1. 首先,启动具有SSE支持的HTTP服务器:

    npm run sse-server
    

    npx cursor-azure-devops-mcp-sse
    

    这将默认在3000端口启动服务器。

  2. 打开Cursor IDE

  3. 转到设置 > 功能 > MCP服务器

  4. 点击“添加新MCP服务器”

  5. 输入服务器名称(例如,“Azure DevOps SSE”)

  6. 从下拉菜单中选择“sse”

  7. 输入SSE端点URL:

    http://localhost:3000/sse
    
  8. 点击“添加”

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');

// 创建MCP服务器
const server = new McpServer({
  name: 'cursor-azure-devops-mcp',
  version: '1.0.0'
});

// 注册Azure DevOps工具到服务器
registerTools(server, azureDevOpsService);

// 连接到你选择的传输方式
// ...

可用工具

工具名称描述必需参数
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
}

在使用测试管理工具时,你应该:

  1. 首先使用azure_devops_test_plans检索项目的测试计划
  2. 使用特定的测试计划ID获取测试套件,使用azure_devops_test_suites
  3. 最后,使用azure_devops_test_cases获取特定套件中的测试用例

响应格式在必要时包括截断元数据:

{
  "items": [...],
  "totalCount": 100,
  "isTruncated": true,
  "truncatedCount": 80,
  "message": "响应已被截断。显示100项中的20项。"
}