azure-devops-mcp

azure-devops-mcp

这个服务器提供了一个便捷的 API,用于与 Azure DevOps 服务进行交互,使 AI 助手和其他工具能够管理工作项、代码仓库、看板、冲刺等。它基于模型上下文协议构建,为与 Azure DevOps 的通信提供了一个标准化的接口。

版本控制
开发者工具
云平台
TypeScript
访问服务器

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 集成

smithery badge

<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 通信提供了一个标准化的接口。

演示

Azure DevOps MCP 演示

功能

该集成组织成八个主要工具类别:

工作项工具

  • 使用 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 帐户

设置

  1. 克隆存储库:

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

    npm install
    
  3. 配置环境变量(创建一个 .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
    
  4. 构建项目:

    npm run build
    

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

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

    npm run start
    

配置

个人访问令牌 (PAT)

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

  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 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 文件中显式注册工具。 默认情况下,仅注册所有可能工具的一个子集,以保持初始实现的可管理性。

要注册更多工具:

  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. Fork 存储库
  2. 创建一个功能分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m 'Add some amazing feature')
  4. 将分支推送到远程仓库 (git push origin feature/amazing-feature)
  5. 打开一个拉取请求

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

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Playwright MCP Server

Playwright MCP Server

提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。

精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
Apple MCP Server

Apple MCP Server

通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。

精选
本地
TypeScript
Gitingest-MCP

Gitingest-MCP

一个用于 gitingest 的 MCP 服务器。它允许像 Claude Desktop、Cursor、Cline 等 MCP 客户端快速提取关于 Github 仓库的信息,包括仓库摘要、项目目录结构、文件内容等。

精选
本地
Python