本文介绍了MCP Go SDK中为测试和开发目的而提供的模拟服务器实现。SDK包含多种模拟服务器实现:一个独立的基于stdio的模拟服务器以及用于传输层测试的嵌入式模拟服务器。
有关MCP服务器的一般测试信息,请参阅服务器测试。有关MCP客户端的测试信息,请参阅客户端测试。
MCP Go SDK提供了多个模拟服务器实现,以方便测试和开发
这些模拟服务器实现了核心的MCP协议方法,并提供了用于特定传输测试场景的调试工具。
独立的模拟服务器实现为一个可执行程序,通过标准输入/输出流进行通信。它提供了一个完整的MCP服务器实现,包含所有标准协议方法的模拟响应。
来源:testdata/mockstdio_server.go1-179
模拟服务器实现了JSONRPCRequest和JSONRPCResponse结构,并为所有标准MCP方法提供了处理程序
| 方法 | 响应 | 目的 |
|---|---|---|
initialize | 服务器能力和信息 | 协议初始化 |
ping | 空响应 | 连接测试 |
resources/list | 模拟资源列表 | 资源发现 |
resources/read | 模拟资源内容 | 资源访问 |
prompts/list | 模拟提示列表 | 提示发现 |
prompts/get | 模拟提示消息 | 提示检索 |
tools/list | 模拟工具列表 | 工具发现 |
tools/call | 模拟工具结果 | 工具执行 |
来源:testdata/mockstdio_server.go52-143
模拟服务器包含用于传输测试的特殊调试方法
debug/echo:将原始请求作为响应结果返回debug/echo_notification:回显请求并向客户端发送通知debug/echo_error_string:返回一个错误响应,其中请求被序列化为错误消息来源:testdata/mockstdio_server.go145-175
HTTP模拟服务器在可流式HTTP传输测试中实现,提供基于会话的HTTP通信测试。
来源:client/transport/streamable_http_test.go20-130
HTTP模拟服务器通过Mcp-Session-Id头部实现了会话管理,并支持与stdio服务器相同的调试方法,同时具有HTTP特定的响应处理。
SSE模拟服务器提供服务器发送事件(Server-Sent Events)功能,用于测试实时通信能力。
来源:client/transport/sse_test.go21-130
SSE服务器使用两个端点
所有模拟服务器都为标准MCP协议方法提供一致的响应
初始化响应
来源:testdata/mockstdio_server.go54-72
资源列表响应
来源:testdata/mockstdio_server.go76-83
模拟服务器为未知方法实现了正确的JSON-RPC错误响应
来源:testdata/mockstdio_server.go168-174
模拟服务器主要用于测试不同的传输机制
模拟服务器支持的常见测试场景包括
来源:client/transport/streamable_http_test.go132-416 client/transport/sse_test.go132-524
所有模拟服务器都遵循类似的请求处理模式
来源:testdata/mockstdio_server.go46-78
模拟服务器支持向客户端发送通知,这对于测试双向通信特别有用
来源:testdata/mockstdio_server.go147-156 client/transport/sse_test.go87-96