关于 Azure MCP Agents Functions
面向 Azure DevOps 团队的 Azure Functions MCP 服务,通过可调用工具提供 Azure Boards 工作项操作和 Azure Pipelines 管理。
主要功能
- 01列出 Azure DevOps 项目
- 02筛选并列出工作项
- 03创建工作项
- 04列出并运行管道
- 05查询管道运行状态
适用场景
- 01查看项目中的工作项
- 02创建 Bug、任务或用户故事
- 03触发指定分支的管道
- 04查询构建状态
MCP 相关
将 Azure DevOps 操作作为 MCP 工具提供,供兼容客户端发现和调用。Azure Functions 通过配置的 VssConnection 连接 Azure DevOps。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Azure MCP Agents Functions
此项目实现了充当“MCP(Model Context Protocol)工具”的 Azure Functions。这些工具提供各种 Azure DevOps 功能,让你能够通过对话式 AI 界面与 Azure Boards 和 Azure Pipelines 进行交互。
项目结构
核心逻辑位于 AzureMcpAgents.Functions 目录中。
Program.cs:Azure Functions 应用程序的入口点。负责配置服务,包括:- 设置 Functions Web 应用程序。
- 启用 MCP 工具元数据。
- 使用
local.settings.json中的配置连接到 Azure DevOps(VSS Connection)。
Tools/:此目录包含各个 MCP 工具。AzureBoardsTool.cs:提供与 Azure Boards 交互的功能。ListProjects:列出 Azure DevOps 项目。ListWorkItems:列出指定项目中的工作项,并支持按工作项类型筛选和限制数量。CreateWorkItem:在指定项目中创建新的工作项(例如 Bug、Task、User Story),并可设置标题、描述、受分配人和标签等详细信息。
AzurePipelinesTool.cs:提供与 Azure Pipelines 交互的功能。ListPipelines:列出指定项目的 Azure DevOps 管道。RunPipeline:触发指定的 Azure DevOps 管道,并可选设置分支和管道变量。GetPipelineRunStatus:获取指定管道运行(build)的状态。
SayHelloTool.cs:一个简单的工具,用于返回“Hello”消息,可能用于测试或演示。
local.settings.json:包含本地开发设置,包括:- Azure Functions 工作进程运行时配置。
- Azure DevOps 的连接详细信息:
Vss__OrgUrl:Azure DevOps 组织的 URL。Vss__TenantId:Azure Active Directory 租户 ID。Vss__ClientId:用于向 Azure DevOps 进行身份验证的应用注册的客户端 ID。
Extensions/:(根据Program.cs中的using AzureMcpAgents.Functions.Extensions;推测)此目录可能包含用于服务配置的扩展方法或其他共享实用工具。
功能
- Azure Boards 集成:
- 列出可用的 Azure DevOps 项目。
- 从项目中获取工作项,并可按类型筛选。
- 创建包含详细信息的新工作项。
- Azure Pipelines 集成:
- 列出项目中的管道。
- 触发管道运行,并指定分支和参数。
- 检查管道运行的状态。
- MCP 工具框架:
- Functions 通过
[McpToolTrigger]和[McpToolProperty]属性作为 MCP 工具公开。 - 这使对话式 AI 或类似平台能够发现这些 Functions,并使用适当的参数调用它们。
- Functions 通过
快速开始
前提条件
- .NET SDK(版本需与
local.settings.json中指定的FUNCTIONS_WORKER_RUNTIME兼容;对于“dotnet-isolated”,需使用 .NET 8 或更高版本)。 - Azure Functions Core Tools。
- 一个 Azure DevOps 组织及其中的一个项目。
- 一个具有访问 Azure DevOps 权限的 Azure Active Directory 应用注册。
配置
- 克隆代码仓库。
- 更新
local.settings.json:- 将
Vss__OrgUrl填写为 Azure DevOps 组织 URL(例如,https://dev.azure.com/your-org)。 - 将
Vss__TenantId更新为 Azure AD 租户 ID。 - 将
Vss__ClientId更新为 AAD 应用注册的客户端 ID。 - 注意:对于本地开发,
AzureWebJobsStorage设置为UseDevelopmentStorage=true,这会使用 Azure Storage Emulator。请确保该模拟器正在运行,或将其配置为指向实际的 Azure Storage 帐户。
- 将
- 设置身份验证:确保 AAD 应用注册具有 Azure DevOps 所需的 API 权限(例如,“Work Items Read & Write”“Build Read & Execute”)。如有需要,请授予管理员同意。身份验证机制可能会使用提供的 ClientId 和 TenantId,可能通过 Managed Identity 或客户端机密等机制实现(不过提供的文件中没有明确显示机密,这是
VssConnection的常见模式)。
本地运行
- 进入
AzureMcpAgents.Functions目录。 - 运行 Functions 主机:
随后,MCP 兼容平台即可调用这些工具。func start
工作原理
该应用使用 Microsoft.TeamFoundationServer.Client 和 Microsoft.VisualStudio.Services.Client 库与 Azure DevOps REST API 交互。
每个“工具”都是由 MCP 框架触发的 Azure Function。[McpToolTrigger] 特性用于定义工具的名称和描述,而 [McpToolProperty] 特性用于定义每个工具预期的输入参数。
调用工具时(例如,由 Copilot 调用):
- Azure Function 会被触发。
- 它使用注入的
VssConnection(在Program.cs中配置)连接到 Azure DevOps。 - 从
VssConnection获取相应的客户端(例如,WorkItemTrackingHttpClient、BuildHttpClient)。 - 客户端调用 Azure DevOps API 执行请求的操作(例如,列出项目、创建工作项、运行管道)。
- 结果通常会序列化为 JSON 并返回。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。