基本能力
产品定位
ModelContextProtocol.NET 是一个基于 C# 的 SDK,实现了 Model Context Protocol (MCP),旨在提供高效的通信和工具集成框架。
核心功能
- 标准 I/O 通信:支持通过标准输入输出进行通信。
- 工具集成框架:提供工具处理器的实现和集成能力。
- Native AOT 兼容:支持 Native AOT 编译,提升性能。
- 计算器演示实现:包含一个完整的计算器演示,展示日志设置、工具处理器实现、请求/响应处理和错误管理。
适用场景
- 需要高效工具集成和通信的开发场景。
- 需要 Native AOT 兼容的项目。
- 需要标准 I/O 通信的应用程序。
工具列表
- Calculator Demo:展示完整的计算器功能,包括日志设置、工具处理器实现等。
常见问题解答
- 日志配置:当使用 stdio 传输时,日志无法发送到控制台,需要配置其他日志目标。
- 工具实现:工具可以作为处理器类实现,享受依赖注入等功能,或直接提供函数。
使用教程
使用依赖
安装 the server package:
bash
dotnet add package ModelContextProtocol.NET.Server --prerelease
对于托管集成,安装 the server hosting package:
bash
dotnet add package ModelContextProtocol.NET.Server.Hosting --prerelease
安装教程
A. 无托管
```csharp
// 创建服务器信息
var serverInfo = new Implementation { Name = "Calculator Demo Server", Version = "1.0.0" };
// 配置和构建服务器
var builder = new McpServerBuilder(serverInfo).AddStdioTransport();
builder.Services.AddLogging(
builder.Tools.AddHandler
builder.Tools.AddFunction(
name: "YourToolName",
description: "YourToolDescription",
parameterTypeInfo: YourParameterTypeJsonContext.Default.YourParameterType,
handler: (YourParameterType parameters, CancellationToken ct) => {
// 你的工具实现
}
);
// ...
var server = builder.Build();
server.Start();
await Task.Delay(-1); // 无限等待
```
B. 有托管
```csharp
var builder = Host.CreateApplicationBuilder();
builder.Services.AddMcpServer(serverInfo, mcp => {
mcp.AddStdioTransport();
// 同无托管
}, keepDefaultLogging: false); // 清除默认控制台日志
// ...
var host = builder.Build();
await host.RunAsync();
```
调试方式
日志配置
McpServerBuilder
使用 Microsoft.Extensions.Logging.ILogger
作为日志接口。
当使用 stdio 传输时,日志无法发送到控制台,需要配置其他日志目标。
```csharp
// 使用 Serilog
.ConfigureLogging(logging => logging.AddSerilog(yourSerilogLogger))
// 使用 NLog
.ConfigureLogging(logging => logging.AddNLog())
```