使用说明
一个简单的MCP服务器和客户端
这是一个简单的模型上下文协议(MCP)服务器和客户端实现,演示了如何公开和访问天气信息。
服务器
服务器在中实现 server.js。它提供以下功能:
-
资源:
city://NewYork:纽约市基本信息city://London:伦敦基本信息city://Tokyo:东京基本情况
-
工具:
get-weather:使用城市名称和天数参数获取城市的天气预报
-
鼓励:
weather-advice:根据天气状况获取旅行建议
客户端
客户端在中实现 client.js。它演示了如何:
- 连接到MCP服务器
- 列出可用资源
- 阅读特定城市资源
- 调用天气预报工具
- 获取天气建议提示
JSON-RPC通信
此实现使用JSON-RPC 2.0作为客户端和服务器之间的底层通信协议。使用的关键JSON-RPC概念:
- 方法:标准方法名称,如
resources/list,resources/read,tools/call,以及prompts/get - 参数:通过方法调用发送的输入数据
- 请求ID:用于将请求与响应相匹配的唯一标识符
- 结果/错误:结构化响应数据或错误信息
MCP SDK抽象了其中的大部分内容,但理解该协议有助于调试和定制。通过检查控制台输出,您可以看到原始JSON-RPC消息。
运行服务器和客户端
-
启动客户端:
node client.js启动客户端将自动将服务器作为子进程启动。客户端将连接到服务器并执行所有示例操作。
-
要独立启动服务器,请执行以下操作:
node server.js
传输机制
此示例使用stdio(标准输入/输出)作为客户端和服务器之间的传输机制。当客户端启动时,它将服务器作为子进程生成,并通过stdin/stdout流与之通信。
实现了自定义日志传输,以显示客户端和服务器之间交换的消息。这些消息以人类可读的格式记录到控制台,这有助于理解协议。
故障排除
如果您遇到资源或提示请求超时的问题,请检查服务器实现。该示例包括对某些请求类型的直接消息处理,以绕过当前SDK版本中的限制。