使用说明
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–链接所有项目的解决方案文件。
入门
先决条件
- 安装最新版本 .NET 10 释放。
- 克隆此存储库。
快速开始
选项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
开发设置
对于开发和测试:
- 恢复依赖关系并构建:
dotnet build - 运行测试:
dotnet test - 启动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_URLOPENAI_API_KEYOPENAI_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 如有任何其他问题或意见。