Azure DevOps集成服务

一个用于Cursor IDE与Azure DevOps集成的模型上下文协议(MCP)服务器,提供项目、工作项、仓库和拉取请求的访问功能。

  • by maximtitovich
  • TypeScript
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 maximtitovich/cursor-azure-devops-mcp

使用说明

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

配置

服务器可以使用多个源进行配置,优先级如下:

  1. 命令行参数
  2. VSCode/游标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 --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设置中配置服务器:

  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运行

使用此MCP服务器的最简单方法是使用npx:

npx cursor-azure-devops-mcp

在Cursor IDE中设置(版本0.46.9+)

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

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

命令模式直接从Cursor将MCP服务器作为进程运行。这就是 最可靠的方法 应该是你的第一选择:

  1. 打开光标IDE

  2. 前往“设置”>“功能”>“MCP服务器”

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

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

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

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

    cursor-azure-devops-mcp
    

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

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

重要:使用命令模式时,服务器将自动使用系统或 .env 您当前工作目录中的文件。确保你的 .env 文件已使用您的Azure DevOps凭据正确设置。

故障排除命令模式:

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

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

选项2:SSE模式(备选)

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

SSE模式通过服务器发送事件连接到HTTP服务器:

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

    npm run sse-server
    

    或

    npx cursor-azure-devops-mcp-sse
    

    默认情况下,这将在端口3000上启动服务器。

  2. 打开光标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');

// 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
}

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

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

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

{
  "items": [...],
  "totalCount": 100,
  "isTruncated": true,
  "truncatedCount": 80,
  "message": "Response was truncated. Showing 20 of 100 items."
}