关于 Model Context Protocol .NET Template
这是一个用于创建 .NET 版 Model Context Protocol 应用的项目模板。它提供基础项目结构和示例代码,适合希望用 C# 快速搭建 MCP 服务的开发者。模板支持以 Stdio 和 HTTP 两种模式运行,并可打包为 .NET 工具分发。
主要功能
- 01提供 mcp-server 等 dotnet new 模板
- 02示例 Echo 服务与 [McpServerTool] 工具注册
- 03支持 Stdio 与 HTTP 模式运行
- 04可打包为 .NET 工具全局安装
- 05提供 Aspire 集成与 MCP Inspector 调试
适用场景
- 01用 C# 快速创建 MCP 服务的起始项目
- 02在本地以 MCP Inspector 调试服务
- 03将 MCP 服务打包为命令行工具分发
MCP 相关
模板生成的是 MCP 服务,通过 WithToolsFromAssembly() 自动注册程序集中标记的方法,并以工具形式向 MCP 客户端提供。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Model Context Protocol .NET 模板
用于大模型应用与外部数据源之间无缝集成的协议
本仓库包含一个模板,用于在 .NET 中创建 Model Context Protocol (MCP) 应用。它提供了基本结构和示例代码,帮助你开始构建自己的支持 MCP 的应用。
| 包 | 版本 | 描述 |
|---|---|---|
Nall.ModelContextProtocol.Template | 模板 | |
Nall.ModelContextProtocol.Inspector.Aspire.Hosting | Aspire 托管集成 |
快速开始
安装:
dotnet new install Nall.ModelContextProtocol.Template
# dotnet new install ./Artefact/Nall.ModelContextProtocol.Template
验证安装:
dotnet new list mcp
# These templates matched your input: 'mcp'
# Template Name Short Name Language Tags
# ----------------- ----------------- -------- -------------
# Template Name Short Name Language Tags
# -------------------- -------------------- -------- -------------
# MCP Server mcp-server [C#] dotnet/ai/mcp
# MCP Server HTTP mcp-server-http [C#] dotnet/ai/mcp
# MCP Server HTTP Auth mcp-server-http-auth [C#] dotnet/ai/mcp
# MCP Server Hybrid mcp-server-hybrid [C#] dotnet/ai/mcp
提示
实际上,你会希望在模式之间切换,因此我建议使用
mcp-server-hybrid模板。它允许你以 Stdio 和 HTTP 两种模式运行服务。
验证输出:
dotnet new mcp-server -o MyAwesomeMCPServer -n MyAwesomeMCPServer --dry-run
# File actions would have been taken:
# Create: MyAwesomeMCPServer\.vscode\launch.json
# Create: MyAwesomeMCPServer\MyAwesomeMCPServer.csproj
# Create: MyAwesomeMCPServer\Program.cs
# Create: MyAwesomeMCPServer\Properties\launchSettings.json
# Create: MyAwesomeMCPServer\README.md
# Create: MyAwesomeMCPServer\appsettings.Development.json
# Create: MyAwesomeMCPServer\appsettings.json
从模板创建:
dotnet new mcp-server -o MyAwesomeMCPServer -n MyAwesomeMCPServer
以下是 Program.cs 的内容:
using Microsoft.Extensions.Hosting;
var builder = Host.CreateApplicationBuilder(args);
builder.Services
.AddMcpServer()
.WithStdioServerTransport()
.WithToolsFromAssembly();
await builder.Build().RunAsync();
[McpServerToolType]
public static class EchoTool
{
[McpServerTool, Description("Echoes the message back to the client.")]
public static string Echo(string message) => $"hello {message}";
}
这是一个简单的回声服务,它监听传入的消息并回复问候语。你可以通过创建带有 [McpServerTool] 特性的其他方法来添加更多工具。WithToolsFromAssembly() 方法会自动注册程序集中的所有工具。
本地运行
在项目目录中构建:
dotnet build -o Artefacts -c Release
运行 inspector:
npx @modelcontextprotocol/inspector -e DOTNET_ENVIRONMENT=Production dotnet "$(PWD)/Artefacts/MyAwesomeMCPServer.dll"
在浏览器中打开 inspector 并测试服务:
作为 .NET 工具分发
在项目目录中打包:
dotnet pack -o Artefacts -c Release
全局安装该工具:
dotnet tool install --global --add-source ./Artefacts MyAwesomeMCPServer
现在,在你全局安装此工具后,就可以在系统中的任何位置运行它。该工具将在你的终端中以 MyAwesomeMCPServer(或 myawesomemcpserver)的形式提供。
💡 你也可以创建本地工具清单,并在本地将 MCP 作为工具安装。
运行 inspector:
npx @modelcontextprotocol/inspector -e DOTNET_ENVIRONMENT=Production myawesomemcpserver
使用 Aspire 运行
在 Stdio 模式下
在 AppHost/Program.cs 中:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddMCPInspector().WithStdio<Projects.MCPServer>();
builder.Build().Run();
在 HTTP 模式下
在 AppHost/Program.cs 中:
var builder = DistributedApplication.CreateBuilder(args);
var mcp = builder.AddProject<Projects.MCPServerRemote>("server");
builder.AddMCPInspector().WithMcp(mcp);
builder.Build().Run();
参考
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。