Azure DevOps MCP 工具集
项目简介
本项目是一个基于 Azure Functions 实现的 MCP (Model Context Protocol) 工具集,旨在将 Azure DevOps 的核心功能(如 Azure Boards 的工作项管理和 Azure Pipelines 的自动化构建)暴露给支持 MCP 的人工智能客户端(如 Copilot 或其他对话式AI平台)。通过这些工具,AI 可以理解并执行与 Azure DevOps 相关的任务。
主要功能点
- Azure Boards 集成:
- 列出组织中的 Azure DevOps 项目。
- 按项目和类型列出工作项(如 Bug, Task, User Story)。
- 在指定项目中创建新的工作项,可包含标题、描述、负责人和标签。
- Azure Pipelines 集成:
- 列出项目中可用的 Pipelines。
- 触发特定 Pipeline 的运行,可指定分支和参数。
- 获取指定 Pipeline 运行(构建)的状态和详细信息。
- MCP 工具框架:
- 利用 '.NET' 的 MCP 扩展,通过特定属性 ('[McpToolTrigger]', '[McpToolProperty]') 将 Azure Functions 注册为 MCP 工具。
- 使得外部 MCP 客户端能够发现这些功能并按需调用。
安装步骤
- 准备环境: 确保已安装 .NET SDK (兼容项目需求的版本,通常是 .NET 8 或更高) 和 Azure Functions Core Tools。
- 克隆仓库: 将项目代码克隆到本地计算机。
- 配置 Azure DevOps 连接:
- 在项目根目录找到 'AzureMcpAgents.Functions/local.settings.json' 文件。
- 根据您的 Azure DevOps 组织信息更新以下配置项:
- 'Vss:OrgUrl': Azure DevOps 组织的 URL (例如: 'https://dev.azure.com/your-org')。
- 'Vss:TenantId': Azure Active Directory 的租户 ID。
- 'Vss:ClientId': 用于认证 Azure DevOps 的 Azure AD 应用注册的客户端 ID。
- 确保您的 Azure AD 应用注册具有访问 Azure DevOps 所需的 API 权限(例如 "Work Items Read & Write", "Build Read & Execute")。认证机制通常依赖于 'DefaultAzureCredential' 尝试使用各种凭据链进行认证(如托管标识、环境变量等),配置 'TenantId' 和 'ClientId' 会影响其行为。
- 'AzureWebJobsStorage' 通常配置为使用本地存储模拟器或实际的 Azure Storage 账户。
服务器配置 (供 MCP 客户端使用)
MCP 客户端需要知道如何启动这个 MCP 服务器进程并与其通信。对于本地开发环境,通常通过标准输入输出流 (Stdio) 进行通信。客户端的配置信息通常包含服务器名称、启动命令及其参数。
例如,一个典型的 MCP 客户端配置(非代码格式)可能看起来像这样:
- 服务器名称: 'AzureDevOpsMCP' (或任何您喜欢的名称)
- 启动命令: 'func' (这是 Azure Functions Core Tools 的可执行文件)
- 命令参数: '["start"]' (这是告诉 'func' 命令启动本地函数主机的参数)
这个配置指示 MCP 客户端执行 'func start' 命令来启动服务器,并预期服务器通过标准输入输出流进行 MCP 协议通信。
基本使用方法
- 启动服务器: 在 'AzureMcpAgents.Functions' 目录下运行 'func start' 命令,启动 Azure Functions 本地主机。
- 连接 MCP 客户端: 使用配置信息(如上所述)将支持 MCP 的 AI 客户端连接到本地运行的 MCP 服务器。
- AI 调用工具: AI 客户端(如 Copilot)会发现服务器暴露的工具(例如 'list_azure_boards_projects', 'create_azure_boards_work_item', 'run_azure_pipeline' 等),并可以在用户对话中根据需要调用这些工具,提供相应的参数(如项目名称、工作项标题、Pipeline ID 等)。
- 执行操作并返回结果: 服务器端的 Azure Functions 接收到调用请求,与 Azure DevOps API 交互执行相应的操作,并将结果(通常是 JSON 格式)通过 MCP 协议返回给 AI 客户端。AI 客户端解析结果并以用户友好的方式呈现。