
azure-devops-mcp
这个服务器提供了一个便捷的 API,用于与 Azure DevOps 服务进行交互,使 AI 助手和其他工具能够管理工作项、代码仓库、看板、冲刺等。它基于模型上下文协议构建,为与 Azure DevOps 的通信提供了一个标准化的接口。
Tools
listWorkItems
List work items based on a WIQL query
getWorkItemById
Get a specific work item by ID
searchWorkItems
Search for work items by text
getRecentlyUpdatedWorkItems
Get recently updated work items
getMyWorkItems
Get work items assigned to you
createWorkItem
Create a new work item
updateWorkItem
Update an existing work item
addWorkItemComment
Add a comment to a work item
updateWorkItemState
Update the state of a work item
assignWorkItem
Assign a work item to a user
createLink
Create a link between work items
bulkCreateWorkItems
Create or update multiple work items in a single operation
getBoards
Get all boards for a team
getBoardColumns
Get columns for a specific board
getBoardItems
Get items on a specific board
moveCardOnBoard
Move a card on a board
getSprints
Get all sprints for a team
getCurrentSprint
Get the current sprint
getSprintWorkItems
Get work items in a specific sprint
getSprintCapacity
Get capacity for a specific sprint
getTeamMembers
Get members of a team
listProjects
List all projects
getProjectDetails
Get details of a specific project
createProject
Create a new project
getAreas
Get areas for a project
getIterations
Get iterations for a project
createArea
Create a new area in a project
createIteration
Create a new iteration in a project
getProcesses
Get all processes
getWorkItemTypes
Get work item types for a process
getWorkItemTypeFields
Get fields for a work item type
listRepositories
List all repositories
getRepository
Get details of a specific repository
createRepository
Create a new repository
listBranches
List branches in a repository
searchCode
Search for code in repositories
browseRepository
Browse the contents of a repository
getFileContent
Get the content of a file
getCommitHistory
Get commit history for a repository
listPullRequests
List pull requests
createPullRequest
Create a new pull request
getPullRequest
Get details of a specific pull request
getPullRequestComments
Get comments on a pull request
approvePullRequest
Approve a pull request
mergePullRequest
Merge a pull request
runAutomatedTests
Execute automated test suites
getTestAutomationStatus
Check status of automated test execution
configureTestAgents
Configure and manage test agents
createTestDataGenerator
Generate test data for automated tests
manageTestEnvironments
Manage test environments for different test types
getTestFlakiness
Analyze and report on test flakiness
getTestGapAnalysis
Identify gaps in test coverage
runTestImpactAnalysis
Determine which tests to run based on code changes
getTestHealthDashboard
View overall test health metrics
runTestOptimization
Optimize test suite execution for faster feedback
createExploratorySessions
Create new exploratory testing sessions
recordExploratoryTestResults
Record findings during exploratory testing
convertFindingsToWorkItems
Convert exploratory test findings to work items
getExploratoryTestStatistics
Get statistics on exploratory testing activities
runSecurityScan
Run security scans on repositories
getSecurityScanResults
Get results from security scans
trackSecurityVulnerabilities
Track and manage security vulnerabilities
generateSecurityCompliance
Generate security compliance reports
integrateSarifResults
Import and process SARIF format security results
runComplianceChecks
Run compliance checks against standards
getComplianceStatus
Get current compliance status
createComplianceReport
Create compliance reports for auditing
manageSecurityPolicies
Manage security policies
trackSecurityAwareness
Track security awareness and training
rotateSecrets
Rotate secrets and credentials
auditSecretUsage
Audit usage of secrets across services
vaultIntegration
Integrate with secret vaults
listArtifactFeeds
List artifact feeds in the organization
getPackageVersions
Get versions of a package in a feed
publishPackage
Publish a package to a feed
promotePackage
Promote a package version between views
deletePackageVersion
Delete a version of a package
listContainerImages
List container images in a repository
getContainerImageTags
Get tags for a container image
scanContainerImage
Scan a container image for vulnerabilities and compliance issues
manageContainerPolicies
Manage policies for container repositories
manageUniversalPackages
Manage universal packages
createPackageDownloadReport
Create reports on package downloads
checkPackageDependencies
Check package dependencies and vulnerabilities
getAICodeReview
Get AI-based code review suggestions
suggestCodeOptimization
Suggest code optimizations using AI
identifyCodeSmells
Identify potential code smells and anti-patterns
getPredictiveBugAnalysis
Predict potential bugs in code changes
getDeveloperProductivity
Measure developer productivity metrics
getPredictiveEffortEstimation
AI-based effort estimation for work items
getCodeQualityTrends
Track code quality trends over time
suggestWorkItemRefinements
Get AI suggestions for work item refinements
suggestAutomationOpportunities
Identify opportunities for automation
createIntelligentAlerts
Set up intelligent alerts based on patterns
predictBuildFailures
Predict potential build failures before they occur
optimizeTestSelection
Intelligently select tests to run based on changes
README
Azure DevOps MCP 集成
<a href="https://glama.ai/mcp/servers/z7mxfcinp8"> <img width="380" height="200" src="https://glama.ai/mcp/servers/z7mxfcinp8/badge" /> </a>
一个强大的 Azure DevOps 集成,通过模型上下文协议 (MCP) 服务器提供对工作项、存储库、项目、看板和冲刺的无缝访问。
概述
此服务器提供了一个方便的 API,用于与 Azure DevOps 服务交互,使 AI 助手和其他工具能够管理工作项、代码存储库、看板、冲刺等。它基于模型上下文协议构建,为与 Azure DevOps 通信提供了一个标准化的接口。
演示
功能
该集成组织成八个主要工具类别:
工作项工具
- 使用 WIQL 查询列出工作项
- 按 ID 获取工作项详细信息
- 搜索工作项
- 获取最近更新的工作项
- 获取分配给你的工作项
- 创建新的工作项
- 更新现有的工作项
- 向工作项添加评论
- 更新工作项状态
- 分配工作项
- 在工作项之间创建链接
- 批量创建/更新工作项
看板 & 冲刺工具
- 获取团队看板
- 获取看板列
- 获取看板项
- 在看板上移动卡片
- 获取冲刺
- 获取当前冲刺
- 获取冲刺工作项
- 获取冲刺容量
- 获取团队成员
项目工具
- 列出项目
- 获取项目详细信息
- 创建新项目
- 获取区域
- 获取迭代
- 创建区域
- 创建迭代
- 获取流程模板
- 获取工作项类型
- 获取工作项类型字段
Git 工具
- 列出存储库
- 获取存储库详细信息
- 创建存储库
- 列出分支
- 搜索代码
- 浏览存储库
- 获取文件内容
- 获取提交历史
- 列出拉取请求
- 创建拉取请求
- 获取拉取请求详细信息
- 获取拉取请求评论
- 批准拉取请求
- 合并拉取请求
测试能力工具
- 运行自动化测试
- 获取测试自动化状态
- 配置测试代理
- 创建测试数据生成器
- 管理测试环境
- 获取测试不稳定性分析
- 获取测试差距分析
- 运行测试影响分析
- 获取测试健康状况仪表板
- 运行测试优化
- 创建探索性会话
- 记录探索性测试结果
- 将发现结果转换为工作项
- 获取探索性测试统计信息
DevSecOps 工具
- 运行安全扫描
- 获取安全扫描结果
- 跟踪安全漏洞
- 生成安全合规性报告
- 集成 SARIF 结果
- 运行合规性检查
- 获取合规性状态
- 创建合规性报告
- 管理安全策略
- 跟踪安全意识
- 轮换密钥
- 审计密钥使用情况
- 配置密钥库集成
构件管理工具
- 列出构件源
- 获取包版本
- 发布包
- 提升包
- 删除包版本
- 列出容器镜像
- 获取容器镜像标签
- 扫描容器镜像
- 管理容器策略
- 管理通用包
- 创建包下载报告
- 检查包依赖项
AI 辅助开发工具
- 获取 AI 驱动的代码审查
- 建议代码优化
- 识别代码异味
- 获取预测性错误分析
- 获取开发者生产力指标
- 获取预测性工作量估算
- 获取代码质量趋势
- 建议工作项改进
- 建议自动化机会
- 创建智能警报
- 预测构建失败
- 优化测试选择
安装
通过 Smithery 安装
要通过 Smithery 为 Claude Desktop 自动安装 azuredevops-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 Services(云):
AZURE_DEVOPS_ORG_URL=https://dev.azure.com/your-organization AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN=your-personal-access-token AZURE_DEVOPS_PROJECT=your-default-project AZURE_DEVOPS_IS_ON_PREMISES=false
对于 Azure DevOps Server(本地):
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 # 根据您的服务器版本进行调整 # 身份验证(选择一个): # 对于 PAT 身份验证: AZURE_DEVOPS_AUTH_TYPE=pat AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN=your-personal-access-token # 对于 NTLM 身份验证: AZURE_DEVOPS_AUTH_TYPE=ntlm AZURE_DEVOPS_USERNAME=your-username AZURE_DEVOPS_PASSWORD=your-password AZURE_DEVOPS_DOMAIN=your-domain # 对于基本身份验证: 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 Services(云),您需要创建一个具有适当权限的个人访问令牌:
- 转到您的 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 Services vs. Azure DevOps Server
此集成支持云托管的 Azure DevOps Services 和本地 Azure DevOps Server:
Azure DevOps Services(云)
- 使用组织 URL 和 PAT 进行简单设置
- 默认配置期望格式:
https://dev.azure.com/your-organization
- 始终使用 PAT 身份验证
.env.cloud.example
中提供了示例配置文件
Azure DevOps Server(本地)
- 需要额外的配置,包括服务器 URL、集合和身份验证
- URL 格式因您的服务器设置而异:
https://your-server/tfs
- 需要指定集合名称
- 支持多种身份验证方法(PAT、NTLM、基本)
- 对于较旧的服务器版本,可能需要指定 API 版本
.env.on-premises.example
中提供了示例配置文件
主要区别
功能 | Azure DevOps Services | Azure DevOps Server |
---|---|---|
URL 格式 | https://dev.azure.com/org | https://server/tfs |
集合 | 不需要 | 需要 |
身份验证方法 | 仅 PAT | PAT、NTLM、基本 |
API 版本 | 最新(自动) | 可能需要指定 |
连接 | 始终连接互联网 | 可以是物理隔离的 |
示例配置
将 .env.cloud.example
或 .env.on-premises.example
复制到 .env
并根据需要更新值。
环境变量
可以使用以下环境变量配置服务器:
变量 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
AZURE_DEVOPS_ORG_URL | 您的 Azure DevOps 组织或服务器的 URL | 是 | - |
AZURE_DEVOPS_PROJECT | 要使用的默认项目 | 是 | - |
AZURE_DEVOPS_IS_ON_PREMISES | 是否使用 Azure DevOps Server | 否 | false |
AZURE_DEVOPS_COLLECTION | 本地部署的集合名称 | 否* | - |
AZURE_DEVOPS_API_VERSION | 本地部署的 API 版本 | 否 | - |
AZURE_DEVOPS_AUTH_TYPE | 身份验证类型 (pat/ntlm/basic) | 否 | pat |
AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN | 个人访问令牌 | 否** | - |
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
: AI 辅助开发操作
工具层
工具层包装服务并为 MCP 协议提供一致的接口:
WorkItemTools
: 用于工作项操作的工具BoardsSprintsTools
: 用于看板和冲刺操作的工具ProjectTools
: 用于项目管理操作的工具GitTools
: 用于 Git 操作的工具TestingCapabilitiesTools
: 用于测试能力操作的工具DevSecOpsTools
: 用于 DevSecOps 操作的工具ArtifactManagementTools
: 用于构件管理操作的工具AIAssistedDevelopmentTools
: 用于 AI 辅助开发操作的工具
工具注册
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 项目是否存在且可访问
贡献
欢迎贡献! 以下是如何贡献:
- Fork 存储库
- 创建一个功能分支 (
git checkout -b feature/amazing-feature
) - 提交您的更改 (
git commit -m 'Add some amazing feature'
) - 将分支推送到远程仓库 (
git push origin feature/amazing-feature
) - 打开一个拉取请求
请确保您的代码通过了 linting 并包含适当的测试。
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Playwright MCP Server
提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
Apple MCP Server
通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。
Gitingest-MCP
一个用于 gitingest 的 MCP 服务器。它允许像 Claude Desktop、Cursor、Cline 等 MCP 客户端快速提取关于 Github 仓库的信息,包括仓库摘要、项目目录结构、文件内容等。