Azure DevOps MCP服务器

一个为AI代理提供Azure DevOps操作自动化的.NET库和MCP服务器,支持工作项管理、拉取请求、构建队列和工件操作等功能。

  • by Jordiag
  • C#
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 Jordiag/azure-devops-mcp-server

使用说明

Azure DevOps MCP服务器。网

此存储库包含一组。NET库和公开Azure DevOps操作的模型上下文协议(MCP)服务器。其目标是通过统一的MCP端点显示常见任务(创建工作项、管理拉取请求、排队构建、处理工件等),使人工智能代理能够访问Azure DevOps自动化。

状态

目前处于预发布阶段。

预览通知

此存储库作为公开预览版发布,以收集社区的反馈。API表面和整体结构仍在形成,并可能随着开发的继续而发生重大变化。未来的更新可能会在没有事先通知的情况下引入突破性的更改,今天可用的功能可能会被重构或删除。

如果您选择在预览阶段在此项目之上构建,请准备好定期与存储库同步,并调整代码以适应这些更改。

构建 集成测试 端到端
SonarCloud静态分析

概述

该存储库包含多个C#项目,这些项目封装了Microsoft Azure DevOps SDK和REST API。每个Azure DevOps选项卡(Board、Repos、Pipeline、Artifacts等)下都有一个项目 /src/ 展示简化的客户端界面。这些薄包装纸被 Dotnet.AzureDevOps.Mcp.Server 以显示模型上下文协议(MCP)工具。虽然大多数调用都会转发到官方SDK,或者在必要时转发到REST端点,但这一层使MCP服务器与Azure DevOps解耦,以便它可以在未来独立发展或交换实现。 该解决方案被组织为一个针对多个项目的工作空间 .NET 10Azure DevOps的每个服务区域都有自己的客户端库:

  • 概述 –管理Wiki和页面。
    • 创建、读取、列出和删除Wiki
    • 创建或更新页面、列出页面和获取页面文本
  • 板子 –管理工作项目和板。
    • 创建和更新主题、功能、故事和任务
    • 查询工作项,管理评论、附件和链接
    • 批量更新和导出、列表板、列和迭代
    • 管理迭代和区域,并获取工作项计数
  • 回购协议 –拉取请求和存储库管理。
    • 创建、完成并列出带有标签和注释的拉取请求
    • 创建标签、列出分支和差异、创建和删除存储库
    • 更新拉取请求迭代和搜索提交
  • 管道 –建设和管道运营。
    • 排队、取消和重试构建、列出运行和下载日志
    • 检索更改、日志和生成报告
    • 列表定义和完整管道CRUD
  • 人工制品 –管理订阅源和包。
    • 创建、更新、列出和删除提要
    • 列出包、查看权限和保留策略
    • 管理提要视图并尝试打包和上游操作
  • 测试计划 –使用测试计划和套件。
    • 创建、读取、列出和删除测试计划和套件
    • 创建测试用例,将其添加到套件中并获取测试结果
  • 项目设置 –团队和流程配置。
    • 创建、更新和删除团队
    • 检索电路板设置和迭代
    • 创建和删除继承的进程
  • 搜索 -搜索Azure DevOps工件。
    • 搜索wiki页面
    • 搜索工作项

这 Dotnet.AzureDevOps.Mcp.Server 该项目将这些库整合在一起,并将其作为MCP工具公开。服务器被实现为托管ASP.NET的控制台应用程序。NET Core web服务器使用 ModelContextProtocol 包裹。您可以直接运行它,也可以使其适应您首选的托管环境,例如容器映像、Azure Functions或Windows服务。

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

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

存储库结构

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

入门

先决条件

  1. 安装最新版本 .NET 10 释放。
  2. 克隆此存储库。

快速开始

选项A:在本地运行

# Build and run
dotnet build
dotnet run --project src/Dotnet.AzureDevOps.Mcp.Server

选项B:使用Docker运行

# Build and run in container
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 检查它是否正在运行。

示例:使用带有语义内核的MCP服务器

这 端到端测试 展示语义内核代理如何调用MCP服务器发布的工具。A. 新的控制台应用程序可以再现相同的工作流程:

先决条件

  • 已安装.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")!;

// Note: MCP_SERVER_URL should include the /mcp endpoint path
// Example: "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 = "Use available tools to answer the user's question.",
    Arguments = new KernelArguments(settings)
};

await foreach (var update in agent.InvokeAsync(
    "Call the echo tool with the text \"Hello MCP!\" and return the raw output."))
{
    Console.WriteLine(update.Message);
}

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

部署选项

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

选项1:本地HTTP服务器

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

# Build and run directly
dotnet run --project src/Dotnet.AzureDevOps.Mcp.Server

# Or use the provided scripts
./run-local.sh    # Linux/macOS
run-local.cmd     # Windows

服务器正在监听 http://localhost:5050 默认情况下。 MCP端点位于 /mcp (http://localhost:5050/mcp). 访问 /health 检查它是否正在运行。

选项2:Docker容器

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

# Build the Docker image
docker build -t azure-devops-mcp-server .

# Run the container
docker run -d \
    --name azure-devops-mcp-server \
    -p 5050:5050 \
    -e ASPNETCORE_ENVIRONMENT=Production \
    azure-devops-mcp-server

# Or use the provided scripts
./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核心环境

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_PAT=your_personal_access_token_here

# Optional: Custom search endpoint
export AZURE_DEVOPS_SEARCH_ENDPOINT=https://custom-search.mydomain.com/

示例

具有自定义端口的本地服务器:

MCP_McpServer__Port=7070 dotnet run --project src/Dotnet.AzureDevOps.Mcp.Server

具有自定义配置的Docker容器:

docker run -d \
    --name azure-devops-mcp-server \
    -p 7070:7070 \
    -e MCP_McpServer__Port=7070 \
    -e MCP_McpServer__LogLevel=Debug \
    -e MCP_McpServer__EnableOpenTelemetry=false \
    azure-devops-mcp-server

脚本 Set-Local-Test-Dev-Env-Vars.ps1 可以帮助定义测试和示例使用的环境变量。

许可证

该项目根据MIT许可证获得许可。看 许可证 了解详情。

行为准则

该项目采用了 微软开源行为准则.
有关更多信息,请参阅 行为准则常见问题
或联系 opencode@microsoft.com 如有任何其他问题或意见。