mcpField
M
Model Context Protocol .NET Template

Model Context Protocol .NET Template

本地服务
nikiforovall.blog开发工具2616 周前更新

关于 Model Context Protocol .NET Template

这是一个用于创建 .NET 版 Model Context Protocol 应用的项目模板。它提供基础项目结构和示例代码,适合希望用 C# 快速搭建 MCP 服务的开发者。模板支持以 Stdio 和 HTTP 两种模式运行,并可打包为 .NET 工具分发。

主要功能

  1. 01提供 mcp-server 等 dotnet new 模板
  2. 02示例 Echo 服务与 [McpServerTool] 工具注册
  3. 03支持 Stdio 与 HTTP 模式运行
  4. 04可打包为 .NET 工具全局安装
  5. 05提供 Aspire 集成与 MCP Inspector 调试

适用场景

  1. 01用 C# 快速创建 MCP 服务的起始项目
  2. 02在本地以 MCP Inspector 调试服务
  3. 03将 MCP 服务打包为命令行工具分发

MCP 相关

模板生成的是 MCP 服务,通过 WithToolsFromAssembly() 自动注册程序集中标记的方法,并以工具形式向 MCP 客户端提供。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"template-dotnet": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
启动命令npx -y @modelcontextprotocol/inspector

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@modelcontextprotocol/inspector

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Model Context Protocol .NET 模板

MCP Logo

用于大模型应用与外部数据源之间无缝集成的协议

文档 | 规范 | 讨论

本仓库包含一个模板,用于在 .NET 中创建 Model Context Protocol (MCP) 应用。它提供了基本结构和示例代码,帮助你开始构建自己的支持 MCP 的应用。

包版本描述
Nall.ModelContextProtocol.TemplateNuget模板
Nall.ModelContextProtocol.Inspector.Aspire.HostingNugetAspire 托管集成

快速开始

安装:
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 并测试服务:

Inspector Demo

作为 .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();

参考

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。