使用说明
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帐户
设置
-
克隆存储库:
git clone <repository-url> cd AzureDevOps -
安装依赖项:
npm install -
配置环境变量(创建
.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 -
构建项目:
npm run build如果你遇到TypeScript错误,但仍想继续:
npm run build:ignore-errors -
启动服务器:
npm run start
配置
个人访问令牌(PAT)
对于Azure DevOps服务(云),您需要创建具有适当权限的个人访问令牌:
- 转到您的Azure DevOps组织
- 点击右上角的个人资料图标
- 选择“个人访问令牌”
- 点击“新建令牌”
- 为其命名并选择适当的范围:
- 工作项目:读写
- 代码:读写
- 项目和团队:读写
- 构建:阅读
- 发布:阅读
对于Azure DevOps Server(本地),您有三种身份验证选项:
-
个人访问令牌(PAT):
- 类似于云设置,但在本地实例中创建PAT
- 集
AZURE_DEVOPS_AUTH_TYPE=pat
-
NTLM身份验证:
- 使用您的Windows域凭据
- 集
AZURE_DEVOPS_AUTH_TYPE=ntlm - 提供用户名、密码和域
-
基本身份验证:
- 使用您的本地凭据
- 集
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 文件。默认情况下,只注册所有可能工具的一个子集,以保持初始实现的可管理性。
要注册更多工具:
- 打开
src/index.ts文件 - 按照现有工具的模式添加新的工具注册
- 构建并重新启动服务器
工具注册的综合指南可在 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项目是否存在并且可以访问
贡献
欢迎投稿!以下是您如何做出贡献:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
请确保您的代码通过linting并包含适当的测试。