⭐ Azure DevOps本地MCP服务器
该项目提供了一个轻量级服务器,用于与本地Azure DevOps进行交互,实现自动化、项目管理和简化工作流。
📺 概述
Azure DevOps MCP服务器为您的代理带来Azure DevOps上下文。尝试以下提示:
- “列出我的ADO项目”
- “列出‘MyProjectName’的ADO构建”
- “列出‘MyProjectName’的ADO存储库”
- “列出'MyProjectName'的测试计划”
- “列出项目'MyProjectName'的团队”
- “列出项目'MyProjectName'的迭代次数”
- “列出项目'MyProjectName'的工作项”
- “列出'MyProjectName'项目和'MyProjectName团队'当前迭代中的工作项”
- “列出'MyProjectName'项目中的所有Wiki”
- “创建一个包含系统设计内容的wiki页面'/Architecture/Overview'”
- “用新的入职说明更新维基页面“/入门”””
- “从文档wiki获取wiki页面'/neneneba API/身份验证'的内容”
🏆 期望
Azure DevOps MCP服务器由简洁、简单、专注和易于使用的工具构建而成,每个工具都是为特定场景设计的。我们有意避免使用试图做太多事情的复杂工具。目标是在REST API上提供一个薄的抽象层,使数据访问变得简单,并让语言模型处理复杂的推理。
⚙️ 支持的工具
看 工具集.md 一个全面的列表。
🔌 安装和入门
为了获得最佳体验,请使用Visual Studio Code和GitHub Copilot。请参阅 开始文档 将我们的MCP服务器与Visual Studio 2022、Claude Code和Cursor等其他工具一起使用。
先决条件
- 安装 20+
- 在空文件夹中打开VS Code
安装
在您的项目中,添加 .vscode\mcp.json 文件和设置环境变量包含以下内容:
{
"servers": {
"ado-on-prem-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@lotfihoc/ado-on-prem-mcp", "", "--authentication", "envvar"],
"env": {
"LOG_LEVEL": "info",
"ADO_MCP_MODE": "onprem",
"ADO_MCP_AUTH_TYPE": "basic",
"ADO_MCP_ORG_URL": "https:///tfs/",
"ADO_MCP_API_VERSION": "6.0",
"ADO_MCP_BATCH_API_VERSION": "6.0",
"ADO_MCP_MARKDOWN_COMMENTS_API_VERSION": "5.0",
"NODE_EXTRA_CA_CERTS": "
",
"ADO_MCP_AUTH_TOKEN": ""
}
}
}
}环境变量
ADO_MCP_AUTH_TOKEN:
- DevOps个人访问令牌(PAT)
ADO_MCP_MODE:
- Azure DevOps是本地部署还是云端部署 - "cloud" (默认)或 "onprem"
ADO_MCP_AUTH_TYPE
- DevOps身份验证模式 - "bearer" (默认)或 "basic"
ADO_MCP_ORG_URL:
- 本地实例的完整URL,例如: https://my-server/tfs/MyCollection
ADO_MCP_API_VERSION:
- 设置Azure DevOps API版本 - 违约: "6.0-preview"
ADO_MCP_BATCH_API_VERSION:
- 设置Azure DevOps批处理API版本 - 违约: "6.0-preview"
ADO_MCP_MARKDOWN_COMMENTS_API_VERSION:
- 设置Azure DevOps Markdown API版本 - 违约: "5.0"
NODE_EXTRA_CA_CERTS:
- 如果需要,将此变量设置为您的证书路径
ADO_MCP_AUTH_TOKEN:
- Ado PAT
如果你在vscode上使用continue-dev,你可以使用这个配置
mcpServers:
- name: ado-on-prem-mcp
type: stdio
command: npx
args:
- -y
- "@lotfihoc/ado-on-prem-mcp"
- ""
- "--authentication"
- "envvar"
env:
LOG_LEVEL: "info"
ADO_MCP_MODE: "onprem"
ADO_MCP_AUTH_TYPE: "basic"
ADO_MCP_ORG_URL: "https:///tfs/"
ADO_MCP_API_VERSION: "6.0"
ADO_MCP_BATCH_API_VERSION: "6.0"
ADO_MCP_MARKDOWN_COMMENTS_API_VERSION: "5.0"
ADO_MCP_AUTH_TOKEN: ${{ secrets.ADO_TOKEN }}
NODE_EXTRA_CA_CERTS: ${{ secrets.NODE_EXTRA_CA_CERTS }}建议设置 ADO_MCP_AUTH_TOKEN 在您的终端或命令行中。Windows示例:
setx ADO_MCP_AUTH_TOKEN "
"`🔥 要了解最新功能,您可以使用我们的夜间版本。只需更新您的 mcp.json 要使用的配置 @lotfihoc/ado-on-prem-mcp@next。以下是一个更新的示例:
{
"servers": {
"ado-on-prem-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@lotfihoc/ado-on-prem-mcp", "", "--authentication", "envvar"],
"env": {
"LOG_LEVEL": "info",
"ADO_MCP_MODE": "onprem",
"ADO_MCP_AUTH_TYPE": "basic",
"ADO_MCP_ORG_URL": "https:///tfs/",
"ADO_MCP_API_VERSION": "6.0",
"ADO_MCP_BATCH_API_VERSION": "6.0",
"ADO_MCP_MARKDOWN_COMMENTS_API_VERSION": "5.0",
"NODE_EXTRA_CA_CERTS": "
",
"ADO_MCP_AUTH_TOKEN": ""
}
}
}
}保存文件,然后单击“开始”。
在聊天中,切换到 代理模式.
单击“选择工具”并选择可用工具。
打开GitHub Copilot Chat,尝试以下提示 List ADO projects。第一次执行ADO工具时,浏览器将打开提示,要求使用您的Microsoft帐户登录。请确保您使用的凭据与所选的Azure DevOps组织匹配。
💥 我们强烈建议创建一个.github\copilot-instructions.md在你的项目中。这将增强您使用带有GitHub Copilot Chat的Azure DevOps MCP服务器的体验。 首先,只需包括“This project uses Azure DevOps. Always check to see if the Azure DevOps MCP server has a tool relevant to the user's request“在你的副驾驶指令文件中。
请参阅 开始文档 将我们的MCP服务器与Visual Studio 2022、Claude Code和Cursor等其他工具一起使用。
🌏 使用域名
Azure DevOps暴露了很大的表面积。因此,我们的Azure DevOps MCP服务器包含许多工具。为了保持工具集的可管理性,避免混淆模型,并尊重客户端对加载工具的限制,请使用Domains仅加载您需要的区域。域是命名的相关工具组(例如:核心、工作、工作项、存储库、维基)。添加 -d 参数和域名到服务器参数中 mcp.json 列出要启用的域。
例如,使用 "-d", "core", "work", "work-items" 只加载与工作项相关的工具(见下面的示例)。
默认情况下,所有域都已加载
{
"servers": {
"ado-on-prem-mcp-with-filtered-domains": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@lotfihoc/ado-on-prem-mcp", "", "-d", "core", "work", "work-items", "--authentication", "envvar"],
"env": {
"LOG_LEVEL": "info",
"ADO_MCP_MODE": "onprem",
"ADO_MCP_AUTH_TYPE": "basic",
"ADO_MCP_ORG_URL": "https:///tfs/",
"ADO_MCP_API_VERSION": "6.0",
"ADO_MCP_BATCH_API_VERSION": "6.0",
"ADO_MCP_MARKDOWN_COMMENTS_API_VERSION": "5.0",
"NODE_EXTRA_CA_CERTS": "
",
"ADO_MCP_AUTH_TOKEN": ""
}
}
}
}可用的域名有: core, work, work-items, search, test-plans, repositories, wiki, pipelines, advanced-security
我们建议您始终启用 core 工具,以便您可以获取项目级信息。
如果你使用continiue dev,你可以使用以下配置
mcpServers:
- name: ado-on-prem-mcp-domains
type: stdio
command: npx
args:
- -y
- "@lotfihoc/ado-on-prem-mcp"
- ""
- "-d"
- "core"
- "work"
- "work-items"
- "--authentication"
- "envvar"
env:
LOG_LEVEL: "info"
ADO_MCP_MODE: "onprem"
ADO_MCP_AUTH_TYPE: "basic"
ADO_MCP_ORG_URL: "https:///tfs/"
ADO_MCP_API_VERSION: "6.0"
ADO_MCP_BATCH_API_VERSION: "6.0"
ADO_MCP_MARKDOWN_COMMENTS_API_VERSION: "5.0"
ADO_MCP_AUTH_TOKEN: ${{ secrets.ADO_TOKEN }}
NODE_EXTRA_CA_CERTS: ${{ secrets.NODE_EXTRA_CA_CERTS }}别忘了创造 .env 在 .continue 文件夹到用户机密
工具集
以下部分提供了可用于与Azure Devops On Premise交互的可用工具列表。
概述
高级安全性
mcp_ado_advsec_get_alers
检索存储库的高级安全警报。
- 必需:
project,repository,confidenceLevels - 可选的:
alertType,continuationToken,onlyDefaultBranch,orderBy,ref,ruleId,ruleName,severities,states,toolName,top,validity
mcp_ado_advsec_get_alert_tails
获取有关特定高级安全警报的详细信息。
- 必需:
project,repository,alertId - 可选的:
ref
核心
mcp_ado_core_list_项目
检索Azure DevOps组织中的项目列表。
- 必需:无
- 可选的:
continuationToken,projectNameFilter,skip,stateFilter,top
mcp_ado_core_list_项目团队
检索指定Azure DevOps项目的团队列表。
- 必需:
project - 可选的:
mine,skip,top
mcp_ado_core_get_identity_ids
检索提供的搜索筛选器的Azure DevOps身份ID。
- 必需:
searchFilter - 可选的:无
管道
mcp_ado_pipelines_create_pipeline
为给定项目创建具有YAML配置的管道定义。
- 必需:
project,name,yamlPath,repositoryType,repositoryName - 可选的:
folder,repositoryConnectionId,repositoryId
mcp_ado_pipelines_get_builds
检索给定项目的生成列表。
- 必需:
project - 可选的:
branchName,buildIds,buildNumber,continuationToken,definitions,deletedFilter,maxBuildsPerDefinition,maxTime,minTime,properties,queryOrder,queues,reasonFilter,repositoryId,repositoryType,requestedFor,resultFilter,statusFilter,tagFilters,top
mcp_ado_pipelines_get_build_status
获取特定构建的状态。
- 必需:
project,buildId - 可选的:无
mcp_ado_pipelines_get_build_log
检索特定版本的日志。
- 必需:
project,buildId - 可选的:无
mcp_ado_pipelines_get_build_log_by_id
通过日志ID获取特定的构建日志。
- 必需:
project,buildId,logId - 可选的:
endLine,startLine
mcp_ado_pipelines_get_build_changes
获取与特定版本相关的更改。
- 必需:
project,buildId - 可选的:
continuationToken,includeSourceChange,top
mcp_ado_pipelines_get_build_definition
检索给定项目的生成定义列表。
- 必需:
project - 可选的:
builtAfter,continuationToken,definitionIds,includeAllProperties,includeLatestBuilds,minMetricsTime,name,notBuiltAfter,path,processType,queryOrder,repositoryId,repositoryType,taskIdFilter,top,yamlFilename
mcp_ado_pipelines_get_build_definition_revision
检索特定生成定义的修订列表。
- 必需:
project,definitionId - 可选的:无
mcp_ado_pipelines_run_pipeline
启动管道的新运行。
- 必需:
project,pipelineId - 可选的:
pipelineVersion,previewRun,resources,stagesToSkip,templateParameters,variables,yamlOverride
mcp_ado_pipelines_get_run
获取特定管道的运行。
- 必需:
project,pipelineId,runId - 可选的:无
mcp_ado_pipelines_list_runs
获取特定管道的前10000次运行。
- 必需:
project,pipelineId - 可选的:无
mcp_ado_pipelines_update_build_stage
更新特定构建的阶段。
- 必需:
project,buildId,stageName,status - 可选的:
forceRetryAllJobs
仓库
mcp_ado_repo_list_repos_by_project
检索给定项目的存储库列表。
- 必需:
project - 可选的:
repoNameFilter,skip,top
mcp_ado_repo_get_repo_by_name_or_id
按项目和存储库名称或ID获取存储库。
- 必需:
project,repositoryNameOrId - 可选的:无
mcp_ado_repo_list_branches_by_repo
检索给定存储库的分支列表。
- 必需:
repositoryId - 可选的:
filterContains,top
mcp_ado_repo_list_my_branches_by_repo
检索给定存储库Id的分支列表。
- 必需:
repositoryId - 可选的:
filterContains,top
mcp_ado_repo_get_branch_by-name
按名称取一个分支。
- 必需:
repositoryId,branchName - 可选的:无
mcp_ado_repo_create_branch
在存储库中创建一个新分支。
- 必需:
repositoryId,branchName - 可选的:
sourceBranchName,sourceCommitId
mcp_ado_repo_search_commits
在具有全面过滤功能的存储库中搜索提交。
- 必需:
project,repository - 可选的:
author,authorEmail,commitIds,committer,committerEmail,fromCommit,fromDate,historySimplificationMode,includeLinks,includeWorkItems,searchText,skip,toCommit,toDate,top,version,versionType
mcp_ado_repo_list_pull_requests_by_repo_or_project
检索给定存储库的拉取请求列表。
- 必需:也没有
repositoryId或project必须提供) - 可选的:
created_by_me,created_by_user,i_am_reviewer,project,repositoryId,skip,sourceRefName,status,targetRefName,top,user_is_reviewer
mcp_ado_repo_list_pull_requests_by_commits
按提交ID列出拉取请求,以查找哪些拉取请求包含特定的提交。
- 必需:
project,repository,commits - 可选的:
queryType
mcp_ado_repo_get_pull_request_by_id
通过ID获取拉取请求。
- 必需:
repositoryId,pullRequestId - 可选的:
includeWorkItemRefs
mcp_ado_repo_create_pull_request
创建新的pull请求。
- 必需:
repositoryId,sourceRefName,targetRefName,title - 可选的:
description,forkSourceRepositoryId,isDraft,labels,workItems
mcp_ado_repo_update_pull_request
使用指定字段按ID更新Pull Request。
- 必需:
repositoryId,pullRequestId - 可选的:
autoComplete,bypassReason,deleteSourceBranch,description,isDraft,mergeStrategy,status,targetRefName,title,transitionWorkItems
mcp_ado_repo_update_pull_request_reviewers
添加或删除现有拉取请求的审阅者。
- 必需:
repositoryId,pullRequestId,reviewerIds,action - 可选的:无
mcp_ado_repo_list_pull_request_threads
检索拉取请求的评论线程列表。
- 必需:
repositoryId,pullRequestId - 可选的:
baseIteration,fullResponse,iteration,project,skip,top
mcp_ado_repo_list_pull_request_thread_comments
检索拉取请求线程中的注释列表。
- 必需:
repositoryId,pullRequestId,threadId - 可选的:
fullResponse,project,skip,top
mcp_ado_repo_create_pull_request_thread
在pull请求上创建新的评论线程。
- 必需:
repositoryId,pullRequestId,content - 可选的:
filePath,project,rightFileEndLine,rightFileEndOffset,rightFileStartLine,rightFileStartOffset,status
mcp_ado_repo_reply_to_necomment
对拉取请求的特定评论的回复。
- 必需:
repositoryId,pullRequestId,threadId,content - 可选的:
fullResponse,project
mcp_ado_repo_resolve_注释
解析pull请求上的特定注释线程。
- 必需:
repositoryId,pullRequestId,threadId - 可选的:
fullResponse
搜索
mcp_ado_search_code
在Azure DevOps存储库中搜索给定的搜索文本。
- 必需:
searchText - 可选的:
branch,includeFacets,path,project,repository,skip,top
mcp_ado_search_wiki
在Azure DevOps Wiki中搜索给定的搜索文本。
- 必需:
searchText - 可选的:
includeFacets,project,skip,top,wiki
mcp_ado_search_workitem
获取给定搜索文本的Azure DevOps工作项搜索结果。
- 必需:
searchText - 可选的:
areaPath,assignedTo,includeFacets,project,skip,state,top,workItemType
测试计划
mcp_ado_testplan_list_test_plans
从Azure DevOps项目中检索分页的测试计划列表。
- 必需:
project - 可选的:
continuationToken,filterActivePlans,includePlanDetails
mcp_ado_testplan_create_test_plan
在项目中创建新的测试计划。
- 必需:
project,name,iteration - 可选的:
areaPath,description,endDate,startDate
mcp_ado_testplan_list_test_suite
从Azure DevOps项目和测试计划Id中检索分页的测试套件列表。以正确嵌套的层次结构返回测试套件。
- 必需:
project,planId - 可选的:
continuationToken
mcp_ado_testplan_create_test_suite
在测试计划中创建新的测试套件。
- 必需:
project,planId,parentSuiteId,name - 可选的:无
mcp_ado_testplan_add_testcases_to_suite
将现有测试用例添加到测试套件中。
- 必需:
project,planId,suiteId,testCaseIds - 可选的:无
mcp_ado_testplan_list_test_cases
获取测试计划中的测试用例列表。
- 必需:
project,planid,suiteid - 可选的:无
mcp_ado_testplan_create_test_case
创建新的测试用例工作项。
- 必需:
project,title - 可选的:
areaPath,iterationPath,priority,steps,testsWorkItemId
mcp_ado_testplan_update_test_case_steps
更新现有的测试用例工作项。
- 必需:
id,steps - 可选的:无
mcp_ado_testplan_show_test_results_from_build_id
获取给定项目和生成ID的测试结果列表。
- 必需:
project,buildid - 可选的:无
维基
mcp_ado_wiki_list_wikis
检索组织或项目的Wiki列表。
- 必需:无
- 可选的:
project
mcp_ado_wiki_get_wiki
通过wikiIdentifier获取wiki。
- 必需:
wikiIdentifier - 可选的:
project
mcp_ado_wiki_list_pages
检索特定wiki和项目的wiki页面列表。
- 必需:
wikiIdentifier,project - 可选的:
continuationToken,pageViewsForDays,top
mcp_ado_wiki_get_page
按路径检索wiki页面元数据。此工具不返回页面内容。
- 必需:
wikiIdentifier,project,path - 可选的:
recursionLevel
mcp_ado_wiki_get_page_content
检索wiki页面内容。
- 必需:也没有
url或wikiIdentifier和project) - 可选的:
path,project,url,wikiIdentifier
mcp_ado_wiki_re_or_update_page
创建或更新包含内容的wiki页面。
- 必需:
wikiIdentifier,path,content - 可选的:
branch,etag,project
工作项
mcp_ado_wit_getwork_item
按ID获取单个工作项。
- 必需:
id,project - 可选的:
asOf,expand,fields
mcp_ado_wit_get_work_items_batch_by_ids
按ID批量检索工作项列表。
- 必需:
project,ids - 可选的:
fields
mcp_ado_wit_create_work_item
在指定的项目和工作项类型中创建新的工作项。
- 必需:
project,workItemType,fields - 可选的:无
mcp_ado_wit_update_work_item
使用指定字段按ID更新工作项。
- 必需:
id,updates - 可选的:无
mcp_ado_wit_update_work_items_batch
批量更新工作项。
- 必需:
updates - 可选的:无
mcp_ado_wit_add_child_work_items
根据工作项类型和父项id从父项创建一个或多个子工作项。
- 必需:
parentId,project,workItemType,items - 可选的:无
mcp_ado_wit_work_items_link
将工作项批量链接在一起。
- 必需:
project,updates - 可选的:无
mcp_ado_wit_work_item_unlink
从单个工作项中删除一个或多个链接。
- 必需:
project,id - 可选的:
type,url
mcp_ado_wit_add_artifact_link
向工作项添加工件链接(存储库、分支、提交、构建)。
- 必需:
workItemId,project - 可选的:
artifactUri,branchName,buildId,comment,commitId,linkType,projectId,pullRequestId,repositoryId
mcp_ado_wit_link_work_item_to_pull_request
将单个工作项链接到现有的拉取请求。
- 必需:
projectId,repositoryId,pullRequestId,workItemId - 可选的:
pullRequestProjectId
mcp_ado_wit_list_work_item_comments
按ID检索工作项的注释列表。
- 必需:
project,workItemId - 可选的:
top
mcp_ado_wit_add_work_itemment
按ID向工作项添加注释。
- 必需:
project,workItemId,comment - 可选的:
format
mcp_ado_wit_list_work_item_revision
按ID检索工作项的修订列表。
- 必需:
project,workItemId - 可选的:
expand,skip,top
mcp_ado_wit_get_work_item_type
获取特定的工作项类型。
- 必需:
project,workItemType - 可选的:无
mcp_ado_wit_my_work_items
检索与经过身份验证的用户相关的工作项列表。
- 必需:
project - 可选的:
includeCompleted,top,type
mcp_ado_wit_get_work_items_for_iteration
检索指定迭代的工作项列表。
- 必需:
project,iterationId - 可选的:
team
mcp_ado_wit_list_backlogs
接收给定项目和团队的积压清单。
- 必需:
project,team - 可选的:无
mcp_ado_wit_list_backlog_work_items
检索给定项目、团队和积压类别的积压列表。
- 必需:
project,team,backlogId - 可选的:无
mcp_ado_wit_getquery
按查询的ID或路径获取查询。
- 必需:
project,query - 可选的:
depth,expand,includeDeleted,useIsoDateFormat
mcp_ado_wit_get_query_results_by_id
根据给定的查询ID检索工作项查询的结果。
- 必需:
id - 可选的:
project,responseType,team,timePrecision,top
工作
mcp_ado_work_list_iterations
列出指定Azure DevOps项目中的所有迭代。
- 必需:
project - 可选的:
depth,excludedIds
mcp_ado_work_create_iterations
在指定的Azure DevOps项目中创建新的迭代。
- 必需:
project,iterations - 可选的:无
mcp_ado_work_list_team_iterations
检索项目中特定团队的迭代列表。
- 必需:
project,team - 可选的:
timeframe
mcp_ado_work_assign_iterations
将现有迭代分配给项目中的特定团队。
- 必需:
project,team,iterations - 可选的:无
mcp_ado_work_get_迭代能力
获取迭代和项目中所有团队的迭代能力。
- 必需:
project,iterationId - 可选的:无
mcp_ado_work_get_team_capacity
获取项目中特定团队和迭代的团队能力。
- 必需:
project,team,iterationId - 可选的:无
mcp_ado_work_update_team_capacity
更新项目中特定迭代的团队成员的团队能力。
- 必需:
project,team,teamMemberId,iterationId,activities - 可选的:
daysOff
