创建一个 stdio 服务器
⚠️ 重要更新:根据 MCP 规范 2025-06-18 版本,独立的 SSE(服务器发送事件)传输方式已被弃用,取而代之的是“可流式 HTTP”(Streamable HTTP)传输。当前 MCP 规范定义了两种主要的传输机制:
- stdio:标准输入/输出(推荐用于本地服务器)
- Streamable HTTP:用于可能在内部使用 SSE 的远程服务器
本课程已更新,重点介绍推荐的 stdio 传输方式,这也是大多数 MCP 服务器实现所建议采用的方法。
stdio 传输允许 MCP 服务器通过标准输入和输出流与客户端通信。这是当前 MCP 规范中最常用且推荐的传输机制,提供了一种简单高效的方式来构建 MCP 服务器,并能轻松与各种客户端应用集成。
本课程将介绍如何使用 stdio 传输构建和使用 MCP 服务器。
完成本课程后,您将能够:
- 使用 stdio 传输构建 MCP 服务器。
- 使用 Inspector 调试 MCP 服务器。
- 在 Visual Studio Code 中使用 MCP 服务器。
- 理解当前 MCP 传输机制以及推荐使用 stdio 的原因。
stdio 传输是当前 MCP 规范(2025-06-18)支持的两种传输类型之一。其工作原理如下:
- 简单通信:服务器从标准输入(
stdin
)读取 JSON-RPC 消息,并将消息发送到标准输出(stdout
)。 - 基于进程:客户端将 MCP 服务器作为子进程启动。
- 消息格式:消息是单独的 JSON-RPC 请求、通知或响应,以换行符分隔。
- 日志记录:服务器可以将 UTF-8 字符串写入标准错误(
stderr
)用于日志记录。
- 消息必须以换行符分隔,且不得包含嵌入的换行符。
- 服务器不得向
stdout
写入任何非 MCP 消息的内容。 - 客户端不得向服务器的
stdin
写入任何非 MCP 消息的内容。
.NET stdio 服务器示例
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using ModelContextProtocol.Server;
using System.ComponentModel;
var builder = Host.CreateApplicationBuilder(args);
builder.Services
.AddMcpServer()
.WithStdioTransport()
.WithTools<Tools>();
var app = builder.Build();
await app.RunAsync();
public class Tools
{
[Description("Get a personalized greeting")]
public string GetGreeting(string name)
{
return $"Hello, {name}! Welcome to MCP stdio server.";
}
[Description("Calculate the sum of two numbers")]
public int CalculateSum(int a, int b)
{
return a + b;
}
}
要创建 stdio 服务器,我们需要:
- 导入所需的库 - 我们需要 MCP 服务器组件和 stdio 传输。
- 创建服务器实例 - 定义服务器及其功能。
- 定义工具 - 添加我们希望公开的功能。
- 设置传输 - 配置 stdio 通信。
- 运行服务器 - 启动服务器并处理消息。
Stdio 传输(当前标准):
- 简单的子进程模型 - 客户端将服务器作为子进程启动。
- 使用 JSON-RPC 消息通过 stdin/stdout 通信。
- 不需要设置 HTTP 服务器。
- 性能和安全性更高。
- 更易于调试和开发。
SSE 传输(自 MCP 2025-06-18 起弃用):
- 需要带有 SSE 端点的 HTTP 服务器。
- 需要更复杂的 Web 服务器基础设施设置。
- 对 HTTP 端点有额外的安全性考虑。
- 现已被可流式 HTTP 替代,用于基于 Web 的场景。
关键要点
本章的关键要点如下:
- stdio 传输是本地 MCP 服务器的推荐机制。
- stdio 传输允许 MCP 服务器和客户端通过标准输入和输出流无缝通信。
- 您可以直接使用 Inspector 和 Visual Studio Code 消费 stdio 服务器,使调试和集成变得简单。
作者:菜鸟吊思
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
施主您好,贫僧接受供养,施主一粒米,大如须弥山!南无阿弥陀佛!
您学习别人出学费,只需先扫红包码,后扫支付码!
