Azure DevOps集成工具

提供与Azure DevOps服务的API交互,支持工作项、代码仓库、看板和冲刺等管理的开发效率工具。

  • by Deshnni-22
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Deshnni-22/devops-mcp-server

使用说明

Azure DevOps MCP集成

概述

该服务器为与Azure DevOps服务交互提供了一个方便的API,使人工智能助手和其他工具能够管理工作项、代码存储库、板、疾跑等。它基于模型上下文协议构建,为与Azure DevOps通信提供了一个标准化的接口。

演示

特性

集成分为八个主要工具类别:

工作项工具

  • 使用WIQL查询列出工作项
  • 按ID获取工作项详细信息
  • 搜索工作项
  • 获取最近更新的工作项
  • 获取分配的工作项
  • 创建新工作项
  • 更新现有工作项
  • 向工作项添加注释
  • 更新工作项状态
  • 分配工作项
  • 在工作项之间创建链接
  • 批量创建/更新工作项

板子和Sprints工具

  • 获取团队公告板
  • 获取板柱
  • 获取板项
  • 移动板上的卡片
  • 冲刺
  • 获取当前冲刺
  • 获取sprint工作项
  • 获得冲刺能力
  • 获取团队成员

项目工具

  • 列出项目
  • 获取项目详细信息
  • 创建新项目
  • 获取区域
  • 获取迭代
  • 创建区域
  • 创建迭代
  • 获取流程模板
  • 获取工作项类型
  • 获取工作项类型字段

Git工具

  • 列出存储库
  • 获取存储库详细信息
  • 创建存储库
  • 列出分支
  • 搜索代码
  • 浏览存储库
  • 获取文件内容
  • 获取提交历史记录
  • 列出拉取请求
  • 创建拉取请求
  • 获取拉取请求详细信息
  • 获取pull请求注释
  • 批准拉取请求
  • 合并拉取请求

测试能力工具

  • 运行自动化测试
  • 获取测试自动化状态
  • 配置测试代理
  • 创建测试数据生成器
  • 管理测试环境
  • 获取测试片状分析
  • 获取测试差距分析
  • 运行测试影响分析
  • 获取测试运行状况仪表板
  • 运行测试优化
  • 创建探索性会话
  • 记录探索性测试结果
  • 将调查结果转换为工作项
  • 获取探索性测试统计数据

DevSecOps工具

  • 运行安全扫描
  • 获取安全扫描结果
  • 跟踪安全漏洞
  • 生成安全合规报告
  • 整合SARIF结果
  • 运行合规性检查
  • 获取合规状态
  • 创建合规报告
  • 管理安全策略
  • 跟踪安全意识
  • 旋转秘密
  • 审核机密使用情况
  • 配置vault集成

工件管理工具

  • 列出工件提要
  • 获取软件包版本
  • 发布包
  • 推广套餐
  • 删除软件包版本
  • 列出容器图像
  • 获取容器图像标签
  • 扫描集装箱图像
  • 管理容器策略
  • 管理通用包
  • 创建包下载报告
  • 检查包依赖关系

人工智能辅助开发工具

  • 获取AI驱动的代码评论
  • 建议代码优化
  • 识别代码气味
  • 获取预测性错误分析
  • 获取开发人员生产力指标
  • 获取预测性工作量估算
  • 获取代码质量趋势
  • 建议改进工作项
  • 建议自动化机会
  • 创建智能警报
  • 预测构建失败
  • 优化测试选择

安装

通过Smithery安装

通过以下方式自动安装用于Claude Desktop的azure devops mcp 史密瑟里:

npx -y @smithery/cli install @RyanCardin15/azuredevops-mcp --client claude

先决条件

  • Node.js(v16或更高版本)
  • TypeScript(v4或更高版本)
  • 具有个人访问令牌(PAT)或适当本地凭据的Azure DevOps帐户

设置

  1. 克隆存储库:

    git clone <repository-url>
    cd AzureDevOps
    
  2. 安装依赖项:

    npm install
    
  3. 配置环境变量(创建 .env 文件或直接设置它们):

    对于Azure DevOps服务(云):

    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 # or 'entra'
    AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN=your-personal-access-token
    

    对于Azure DevOps服务器(本地):

    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  # Adjust based on your server version
    
    # Authentication (choose one):
    
    # For PAT authentication:
    AZURE_DEVOPS_AUTH_TYPE=pat
    AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN=your-personal-access-token
    
    # For NTLM authentication:
    AZURE_DEVOPS_AUTH_TYPE=ntlm
    AZURE_DEVOPS_USERNAME=your-username
    AZURE_DEVOPS_PASSWORD=your-password
    AZURE_DEVOPS_DOMAIN=your-domain
    
    # For Basic authentication:
    AZURE_DEVOPS_AUTH_TYPE=basic
    AZURE_DEVOPS_USERNAME=your-username
    AZURE_DEVOPS_PASSWORD=your-password
    
  4. 构建项目:

    npm run build
    

    如果你遇到TypeScript错误,但仍想继续:

    npm run build:ignore-errors
    
  5. 启动服务器:

    npm run start
    

配置

个人访问令牌(PAT)

对于Azure DevOps服务(云),您需要创建具有适当权限的个人访问令牌:

  1. 转到您的Azure DevOps组织
  2. 点击右上角的个人资料图标
  3. 选择“个人访问令牌”
  4. 点击“新建令牌”
  5. 为其命名并选择适当的范围:
    • 工作项目:读写
    • 代码:读写
    • 项目和团队:读写
    • 构建:阅读
    • 发布:阅读

对于Azure DevOps Server(本地),您有三种身份验证选项:

  1. 个人访问令牌(PAT):

    • 类似于云设置,但在本地实例中创建PAT
    • 集 AZURE_DEVOPS_AUTH_TYPE=pat
  2. NTLM身份验证:

    • 使用您的Windows域凭据
    • 集 AZURE_DEVOPS_AUTH_TYPE=ntlm
    • 提供用户名、密码和域
  3. 基本身份验证:

    • 使用您的本地凭据
    • 集 AZURE_DEVOPS_AUTH_TYPE=basic
    • 提供用户名和密码

Azure DevOps服务与Azure DevOps服务器

此集成支持云托管的Azure DevOps服务和本地Azure DevOps服务器:

Azure DevOps服务(云)

  • 使用组织URL和PAT进行简单设置
  • 默认配置要求格式: https://dev.azure.com/your-organization
  • 始终使用PAT身份验证
  • 中提供的示例配置文件 .env.cloud.example

Azure DevOps服务器(内部部署)

  • 需要对服务器URL、集合和身份验证进行额外配置
  • URL格式因服务器设置而异: https://your-server/tfs
  • 需要指定集合名称
  • 支持多种身份验证方法(PAT、NTLM、Basic)
  • 对于较旧的服务器版本,可能需要API版本规范
  • 中提供的示例配置文件 .env.on-premises.example

主要区别

功能 Azure DevOps服务 Azure DevOps服务器
URL格式 https://dev.azure.com/org https://server/tfs
收藏 非必需 必需
身份验证方法 PAT,入口ID(DefaultAzureCredential) PAT、NTLM、基本
API版本 最新(自动) 可能需要说明
连接 始终上网 可以气隙

Entra认证

确保您安装了az-cli并且经过身份验证。 只要您经过身份验证,azd和AZ Powershell模块也应该可以工作。

配置示例

复制 .env.cloud.example 或 .env.on-premises.example 到 .env 并根据需要更新值。

环境变量

可以使用以下环境变量配置服务器:

变量 描述 必填 默认
AZURE_DEVOPS_ORG_URL 您的AZURE DEVOPS组织或服务器的URL 是 -
AZURE_DEVOPS_PROJECT 要使用的默认项目 是 -
AZURE_DEVOPS_ISON_前提条件 是否使用AZURE DEVOPS服务器 否 false
AZURE_DEVOPS_COLLECTION 本地集合名称 否* -
AZURE_DEVOPS_API_VERSION 内部部署的API版本 否 -
AZURE_DEVOPS_AUTH_TYPE 身份验证类型(pat/ntlm/basic/entra) 否 pat
AZURE_DEVOPS_PERSONAL_ACCES_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 环境变量允许您限制可用的工具方法。这是完全可选的-如果未指定,将启用所有工具。

格式:逗号分隔的方法名称列表,不含空格。

例子:

ALLOWED_TOOLS=listWorkItems,getWorkItemById,searchWorkItems,createWorkItem

这将仅启用指定的工作项方法,而禁用所有其他方法。

用法

服务器运行后,您可以使用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": "User Story",
    "title": "Implement new feature",
    "description": "As a user, I want to be able to export reports to 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": "Add new feature",
    "description": "This PR adds the export to PDF feature"
  }
}

建筑

该项目的结构如下:

  • src/
    • Interfaces/:参数和响应的类型定义
    • Services/:用于与Azure DevOps API交互的服务类
    • Tools/:向客户端公开功能的工具实现
    • index.ts:注册工具和启动服务器的主要入口点
    • config.ts:配置处理

服务层

服务层处理与Azure DevOps API的直接通信:

  • WorkItemService:工作项操作
  • BoardsSprintsService:板和冲刺操作
  • ProjectService:项目管理业务
  • GitService:Git存储库操作
  • TestingCapabilitiesService:测试能力操作
  • DevSecOpsService:DevSecOps操作
  • ArtifactManagementService:工件管理操作
  • AIAssistedDevelopmentService:人工智能辅助开发操作

工具层

工具层封装服务,并为MCP协议提供一致的接口:

  • WorkItemTools:工作项操作工具
  • BoardsSprintsTools:棋盘和短跑操作工具
  • ProjectTools:项目管理操作工具
  • GitTools:Git操作工具
  • TestingCapabilitiesTools:用于测试能力操作的工具
  • DevSecOpsTools:DevSecOps操作工具
  • ArtifactManagementTools:工件管理操作工具
  • AIAssistedDevelopmentTools:人工智能辅助开发操作工具

工具注册

MCP服务器要求在 index.ts 文件。默认情况下,只注册所有可能工具的一个子集,以保持初始实现的可管理性。

要注册更多工具:

  1. 打开 src/index.ts 文件
  2. 按照现有工具的模式添加新的工具注册
  3. 构建并重新启动服务器

工具注册的综合指南可在 TOOL_REGISTRATION.md 存储库中的文件。

注: 注册工具时,请注意使用正确的参数类型,特别是枚举值。中的类型定义 Interfaces 目录定义了每个参数的预期类型。使用错误的类型(例如,使用 z.string() 而不是 z.enum() 对于枚举值)将导致构建过程中出现TypeScript错误。

注册新工具的示例:

server.tool("searchCode", 
  "Search for code in repositories",
  {
    searchText: z.string().describe("Text to search for"),
    repositoryId: z.string().optional().describe("ID of the repository")
  },
  async (params, extra) => {
    const result = await gitTools.searchCode(params);
    return {
      content: result.content,
      rawData: result.rawData,
      isError: result.isError
    };
  }
);

故障排除

常见问题

身份验证错误

  • 确保您的个人访问令牌有效并具有所需的权限
  • 检查组织URL是否正确

构建过程中的TypeScript错误

  • 使用 npm run build:ignore-errors 绕过TypeScript错误
  • 检查是否缺少或不正确的类型定义

运行期错误

  • 验证指定的Azure DevOps项目是否存在并且可以访问

贡献

欢迎投稿!以下是您如何做出贡献:

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

请确保您的代码通过linting并包含适当的测试。