返回市场
Azure开发运营MCP服务器

Azure开发运营MCP服务器

作者:Jordiag13 星标更新:2025-11-20

项目介绍

<img src="https://gips3.baidu.com/it/u=1917735563,3437173514&fm=3081&app=3081&f=PNG?w=1138&h=1139" alt="azure_devops_mcp_server_logo" width="200"/>

Azure DevOps MCP Server for .NET

此仓库包含一组 .NET 库和一个模型上下文协议(MCP)服务器,用于公开 Azure DevOps 操作。目标是通过统一的 MCP 端点使 Azure DevOps 自动化对 AI 代理可用,这些端点包括常见的任务——创建工作项、管理拉取请求、排队构建、处理工件等。

状态

目前处于预发布阶段。

预览通知

此仓库作为公共预览版发布,以收集社区反馈。API 表面和整体结构仍在形成中,并可能随着开发继续而发生重大变化。未来的更新可能会引入破坏性更改而不提前通知,今天可用的功能可能会被重构或移除。

如果您选择在预览阶段在此项目上进行构建,请准备好定期与仓库同步并调整您的代码以适应这些变化。

构建集成测试端到端
<img src="https://github.com/Jordiag/azure-devops-mcp-server/actions/workflows/build.yml/badge.svg" alt="主分支构建" /><img src="https://github.com/Jordiag/azure-devops-mcp-server/actions/workflows/integration-tests.yml/badge.svg" alt="PR集成测试" />端到端测试
SonarCloud 静态分析
可靠性评级 可维护性评级安全性评级 错误 漏洞重复行数 (%)代码行数代码异味 覆盖率

概述

该仓库包含多个 C# 项目,封装了 Microsoft Azure DevOps SDK 和 REST API。每个 Azure DevOps 标签——看板、存储库、管道、工件等——都有一个位于 /src/ 下的项目,提供简化客户端接口。这些薄包装由 Dotnet.AzureDevOps.Mcp.Server 使用来呈现模型上下文协议(MCP)工具。虽然大多数调用转发到官方 SDK 或必要时的 REST 端点,但这一层保持 MCP 服务器与 Azure DevOps 解耦,以便它可以独立发展或在未来更换实现。 解决方案组织为一个多项目工作区,针对 .NET 10。Azure DevOps 的每个服务区域都有自己的客户端库:

  • <img width="30px" align="center" alt="Azure Devops 概览" src="https://gips1.baidu.com/it/u=3850667488,2925672558&fm=3081&app=3081&f=PNG?w=96&h=96"/> 概览 – 管理维基和页面。
    • 创建、读取、列出和删除维基
    • 创建或更新页面,列出页面并获取页面文本
  • <img width="30px" align="center" alt="Azure Devops 看板" src="https://gips3.baidu.com/it/u=192036602,3498344063&fm=3081&app=3081&f=PNG?w=96&h=96"/> 看板 – 管理工作项和看板。
    • 创建和更新史诗、特性、故事和任务
    • 查询工作项,管理评论、附件和链接
    • 批量更新和导出,列出看板、列和迭代
    • 管理迭代和区域并获取工作项计数
  • <img width="30px" align="center" alt="Azure Devops 存储库" src="https://gips3.baidu.com/it/u=3630423205,1098140346&fm=3081&app=3081&f=PNG?w=96&h=96"/> 存储库 – 拉取请求和存储库管理。
    • 创建、完成和列出带有标签和评论的拉取请求
    • 创建标签,列出分支和差异,创建和删除存储库
    • 更新拉取请求迭代并搜索提交
  • <img width="30px" align="center" alt="Azure Devops 管道" src="https://gips1.baidu.com/it/u=1497700563,1199960939&fm=3081&app=3081&f=PNG?w=96&h=96"/> 管道 – 构建和管道操作。
    • 排队、取消和重试构建,列出运行并下载日志
    • 获取变更、日志和构建报告
    • 列出定义和完整的管道 CRUD
  • <img width="30px" align="center" alt="Azure Devops 工件" src="https://gips1.baidu.com/it/u=4008721195,1794908569&fm=3081&app=3081&f=PNG?w=128&h=128"/> 工件 – 管理工件和包。
    • 创建、更新、列出和删除工件
    • 列出包,查看权限和保留策略
    • 管理工件视图并尝试包和上游操作
  • <img width="30px" align="center" alt="Azure Devops 测试计划" src="https://gips1.baidu.com/it/u=529047364,1318790757&fm=3081&app=3081&f=PNG?w=96&h=96"/> 测试计划 – 处理测试计划和套件。
    • 创建、读取、列出和删除测试计划和套件
    • 创建测试案例,将其添加到套件并获取测试结果
  • <img width="30px" align="center" alt="Azure Devops 项目设置" src="https://gips1.baidu.com/it/u=200874480,3446810734&fm=3081&app=3081&f=PNG?w=512&h=512"/> 项目设置 – 团队和流程配置。
    • 创建、更新和删除团队
    • 获取看板设置和迭代
    • 创建和删除继承流程
  • <img width="30px" align="center" alt="Azure Devops 搜索" src="https://gips3.baidu.com/it/u=2592960778,1353604724&fm=3081&app=3081&f=PNG?w=512&h=512"/> 搜索 – 搜索 Azure DevOps 工件。
    • 搜索维基页面
    • 搜索工作项

Dotnet.AzureDevOps.Mcp.Server 项目将这些库汇集在一起,并作为 MCP 工具公开。服务器实现为控制台应用程序,使用 ModelContextProtocol 包托管 ASP.NET Core Web 服务器。您可以直接运行它,也可以根据您偏好的托管环境进行调整——例如容器镜像、Azure Functions 或 Windows 服务。

MCP 服务器遵循模型上下文协议规范,在 /mcp 端点使用 HTTP 上的服务器发送事件(SSE)提供 MCP 工具。AI 助手可以在运行时通过连接到此端点发现可用工具,并使用结构化的函数调用执行它们。

集成测试对每个客户端进行了真实 Azure DevOps 组织的测试。另一个测试套件使用 Semantic Kernel 验证端到端代理交互,证明 LLM 可以自动调用发布的工具。

仓库结构

  • src – 实现客户端库和 MCP 服务器的源项目。
  • test – 单元测试、集成测试和端到端测试。
  • Dotnet.AzureDevOps.sln – 将所有项目链接起来的解决方案文件。

快速开始

前提条件

  1. 安装最新版本的 .NET 10
  2. 克隆此仓库。

快速入门

选项 A:本地运行

# 构建并运行
dotnet build
dotnet run --project src/Dotnet.AzureDevOps.Mcp.Server

选项 B:使用 Docker 运行

# 在容器中构建并运行
docker build -t azure-devops-mcp-server .
docker run -p 5050:5050 azure-devops-mcp-server

开发设置

对于开发和测试:

  1. 恢复依赖项并构建:
    dotnet build
    
  2. 运行测试:
    dotnet test
    
  3. 启动 MCP 服务器:
    dotnet run --project src/Dotnet.AzureDevOps.Mcp.Server
    

服务器默认监听 http://localhost:5050。 MCP 端点在 /mcp (http://localhost:5050/mcp) 可用。 访问 /health 来检查其是否正在运行。

示例:使用 Semantic Kernel 的 MCP 服务器

end-to-end 测试 展示了如何使用 Semantic Kernel 代理调用 MCP 服务器发布的工具。一个新的控制台应用程序可以重现相同的流程:

前提条件

  • 已安装 .NET 10 SDK
  • 通过 URL 可访问的运行中的 MCP 服务器
  • OpenAI API 密钥和模型名称
  • 配置环境变量:
    • MCP_SERVER_URL
    • OPENAI_API_KEY
    • OPENAI_MODEL
dotnet new console -n MyMcpClient
cd MyMcpClient
dotnet add package Microsoft.SemanticKernel --version 1.59.0
dotnet add package Microsoft.SemanticKernel.Agents.Core --version 1.59.0
dotnet add package ModelContextProtocol-SemanticKernel --version 0.3.0-preview-01

替换 Program.cs 为以下内容,并将您的 MCP 服务器 URL 和 OpenAI 凭据配置为环境变量:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using ModelContextProtocol.SemanticKernel.Extensions;

var serverUrl = Environment.GetEnvironmentVariable("MCP_SERVER_URL")!;
var openAiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;
var model = Environment.GetEnvironmentVariable("OPENAI_MODEL")!;

// 注意:MCP_SERVER_URL 应包括 /mcp 端点路径
// 示例:"http://localhost:5050/mcp"

IKernelBuilder builder = Kernel.CreateBuilder();
builder.Services.AddOpenAIChatCompletion("openai", model, openAiKey);
var kernel = builder.Build();

await kernel.Plugins.AddMcpFunctionsFromSseServerAsync("MyMcpServer", serverUrl);

var settings = new OpenAIPromptExecutionSettings
{
    ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions
};

var agent = new ChatCompletionAgent
{
    Name = "McpTester",
    Kernel = kernel,
    Instructions = "使用可用工具回答用户的问题。",
    Arguments = new KernelArguments(settings)
};

await foreach (var update in agent.InvokeAsync(
    "调用 echo 工具,传入文本 \"Hello MCP!\" 并返回原始输出。"))
{
    Console.WriteLine(update.Message);
}

运行此程序会打印 Hello MCP!,一旦代理调用了您的 MCP 服务器暴露的 echo 工具。

部署选项

Azure DevOps MCP 服务器支持两种部署方法:

选项 1:本地 HTTP 服务器

直接在您的机器上运行服务器进行开发和测试:

# 直接构建并运行
dotnet run --project src/Dotnet.AzureDevOps.Mcp.Server

# 或使用提供的脚本
./run-local.sh    # Linux/macOS
run-local.cmd     # Windows

服务器默认监听 http://localhost:5050。 MCP 端点在 /mcp (http://localhost:5050/mcp) 可用。 访问 /health 来检查其是否正在运行。

选项 2:Docker 容器

在 Docker 容器中运行服务器以实现一致且隔离的部署:

# 构建 Docker 镜像
docker build -t azure-devops-mcp-server .

# 运行容器
docker run -d \
    --name azure-devops-mcp-server \
    -p 5050:5050 \
    -e ASPNETCORE_ENVIRONMENT=Production \
    azure-devops-mcp-server

# 或使用提供的脚本
./run-docker.sh    # Linux/macOS
run-docker.cmd     # Windows

容器化的服务器在 http://localhost:5050 可用。 MCP 端点在 /mcp (http://localhost:5050/mcp) 可用。

Docker 优点

  • 隔离:在自己的环境中运行
  • 一致性:不同机器上的相同行为
  • 生产就绪:包括健康检查和适当的日志记录
  • 易于部署:单个容器即可部署到任何地方

配置

两种部署方法都支持相同的配置选项:

设置从 appsettings.json 和以 MCP_ 为前缀的环境变量中读取。

环境变量

  • MCP_McpServer__Port=5050 - 服务器端口(默认:5050)
  • MCP_McpServer__LogLevel=Information - 日志级别
  • MCP_McpServer__EnableOpenTelemetry=true - 启用遥测
  • MCP_McpServer__EnableApplicationInsights=false - 启用应用洞察
  • ASPNETCORE_ENVIRONMENT=Production - ASP.NET Core 环境

Azure DevOps 配置

为了连接到 Azure DevOps 服务,请设置这些环境变量:

  • AZURE_DEVOPS_ORG - 您的 Azure DevOps 组织名称(例如,“mycompany”)
  • AZURE_DEVOPS_PAT - 具有适当权限的个人访问令牌
  • AZURE_DEVOPS_SEARCH_ENDPOINT(可选)- 自定义搜索端点 URL

示例:

export AZURE_DEVOPS_ORG=mycompany
export AZURE_DEVOPS_P