Azure DevOps服务器MCP
Azure DevOps的模型上下文协议(MCP)服务器 服务器 (TFS)。如果您正在寻找Azure DevOps Services Cloud版本,请参阅官方 azure devops mcp 来自微软。
特性
- Git存储库:列出存储库、浏览文件、获取提交历史记录和管理分支
- 拉取请求:创建、阅读、更新PR,管理评论和评论
- 团队项目:列出项目、获取项目详细信息和管理团队
- 工作项:使用完整的字段支持创建、读取、更新和查询工作项
- WIQL支持:执行自定义工作项查询语言查询
先决条件
Python 3.10+
请确保您已安装Python 3.10+:
python --version
python3 --version使用uvx(推荐)
安装 紫外线 快速Python包管理:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"配置
个人访问令牌
要与Azure DevOps Server交互,您需要一个个人访问令牌(PAT)。 确保仅将此PAT与MCP服务器一起使用,而不使用其他应用程序。
- 转到Azure DevOps Server web界面
- 点击用户右上角->安全→ 个人访问令牌
- 创建具有以下作用域的新令牌:
- 工作项:读写 - 项目和团队:阅读 - 代码读写(适用于Git仓库和Pull请求)
MCP配置
如果你想避免将令牌等敏感信息放入配置文件中,你可以将它们设置为环境:
Linux/macOS:
您可以将以下变量添加到您的shell配置文件中(例如。, ~/.bashrc, ~/.zshrc)在配置文件中不包含它们:
export AZURE_DEVOPS_SERVER_URL="https://your-server.company.com/tfs"
export AZURE_DEVOPS_SERVER_TOKEN="your-personal-access-token"
export AZURE_DEVOPS_SERVER_API_VERSION="7.1-preview.3"
export AZURE_DEVOPS_SERVER_COLLECTION="collection-name"窗户:
您可以将以下变量添加到系统环境或用户环境中,使其不在配置文件中:
setx AZURE_DEVOPS_SERVER_URL "https://your-server.company.com/tfs"
setx AZURE_DEVOPS_SERVER_TOKEN "your-personal-access-token"
setx AZURE_DEVOPS_SERVER_API_VERSION "7.1-preview.3"
setx AZURE_DEVOPS_SERVER_COLLECTION "collection-name"设置环境变量后,您可以在MCP配置中使用它们,如下所示:
{
"mcpServers": {
"azure-devops-server": {
"command": "uvx",
"args": [
"git+https://github.com/Ravio1i/azure-devops-server-mcp.git"
],
}
}
}看见https://code.visualstudio.com/docs/copilot/customization/mcp-servers 对于GitHub Copilot,它使用 servers 而不是 mcpServers:
{
"servers": {
"azure-devops-server": {
"command": "uvx",
"args": [
"git+https://github.com/Ravio1i/azure-devops-server-mcp.git"
]
}
}
}有关详细信息,请参阅文档: 将MCP服务器添加到您的用户配置中
GitHub复制副本许可证
您需要有效的GitHub Copilot或其他Copilot许可证才能使用此集成。
用法
配置后,您可以使用自然语言与Azure DevOps服务器进行交互:
Git存储库
- “列出项目'MyProject'中的所有存储库”
- “显示存储库'MyRepo'中的分支”
- “在'MyRepo'中从主分支获取最新的10个提交”
- “显示'MyRepo'中的'README.md'文件的内容”
- “列出'MyRepo'的'src'文件夹中的文件”
拉取请求
- “在存储库'MyRepo'中列出活动拉取请求”
- “创建从‘功能分支’到‘主’的PR,标题为‘添加新功能’”
- “在'MyRepo'中显示拉取请求#42的详细信息”
- “获取对拉取请求#42的评论”
- “将PR#42状态更新为已完成”
团队项目
- “列出所有团队项目”
- “获取项目'MyProject'的详细信息”
- “向我展示‘开发’项目中的团队”
工作项
- “列出项目'MyProject'中的最近工作项”
- 在项目“WebApp”中创建一个名为“登录问题”的错误
- “更新工作项1234以将状态设置为“进行中””
- “查询分配给的所有任务john.doe@company.com在“我的项目”中
高级查询
- “查找'MyProject'中所有处于活动状态的高优先级错误”
- “显示上周更改的工作项”
可用工具
Git存储库工具
list_repositories(project):获取项目中的所有存储库get_repository(project, repository_id):获取特定存储库详细信息list_branches(project, repository_id, limit?):列出存储库中的分支get_commits(project, repository_id, branch?, limit?):获取提交历史记录get_file_content(project, repository_id, path, branch?):获取文件内容list_repository_items(project, repository_id, path?, branch?, limit?):列出文件/文件夹
拉取请求工具
list_pull_requests(project, repository_id, status?, limit?):列出拉取请求get_pull_request(project, repository_id, pull_request_id):获取PR详细信息create_pull_request(project, repository_id, title, description, source_branch, target_branch, reviewers?):创建新的PRget_pull_request_comments(project, repository_id, pull_request_id, limit?):获取公关评论update_pull_request(project, repository_id, pull_request_id, ...):更新PR
团队项目工具
list_team_projects():获取集合中的所有项目get_team_project(project_id_or_name):获取具体的项目详细信息list_teams(project_id_or_name):列出项目中的团队
工作项工具
list_work_items(project, query?, limit?):使用可选的WIQL查询列出工作项get_work_item(work_item_id):获取特定工作项的详细信息create_work_item(project, work_item_type, title, ...):创建新工作项update_work_item(work_item_id, ...):更新现有工作项query_work_items(project, filters...):使用字段筛选器进行查询
开发设置
克隆存储库
git clone https://github.com/Ravio1i/azure-devops-server-mcp
echo $PWD使用 uv 直接从克隆的目录运行MCP服务器:
- 在中编辑环境变量
env - 调整路径
args指向克隆存储库的部分
{
"mcpServers": {
"azure-devops-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/azure-devops-server-mcp",
"run",
"azure-devops-server-mcp"
],
"env": {
"AZURE_DEVOPS_SERVER_URL": "https://your-server.company.com/tfs",
"AZURE_DEVOPS_SERVER_TOKEN": "your-personal-access-token",
"AZURE_DEVOPS_SERVER_API_VERSION": "7.1-preview.3",
"AZURE_DEVOPS_SERVER_COLLECTION": "collection-name"
}
}
}
}