本项目是一个简单的 Model Context Protocol (MCP) 服务器和客户端实现,旨在演示如何暴露和访问天气信息,为开发者提供了一个清晰的示例来理解和运用 MCP 相关功能。
node client.js
启动客户端时会自动启动服务器作为子进程。客户端将连接到服务器并执行所有示例操作。
node server.js
city://NewYork(纽约市)、city://London(伦敦市)和 city://Tokyo(东京市)。get-weather 工具,可获取某个城市的天气预报,支持城市名称和天数作为参数。weather-advice 提示,能根据天气状况获取旅行建议。resources/list、resources/read、tools/call 和 prompts/get)、参数、请求标识符以及结果/错误等关键概念。客户端启动并自动连接服务器执行示例操作:
node client.js
独立启动服务器:
node server.js
此实现使用 JSON-RPC 2.0 作为底层通信协议,关键概念包括:
resources/list 用于列出可用资源,resources/read 用于读取特定资源,tools/call 用于调用工具,prompts/get 用于获取提示信息。get-weather 工具时,需要提供城市名称和天数作为参数。使用 stdio(标准输入/输出)作为客户端和服务器之间的传输机制。客户端启动时会生成服务器作为子进程,并通过 stdin/stdout 流进行通信。同时,实现了自定义日志记录传输,将交换的消息以人类可读的格式记录到控制台,有助于理解协议。
| 资源 | 详情 |
|---|---|
city://NewYork |
关于纽约市的基本信息 |
city://London |
关于伦敦市的基本信息 |
city://Tokyo |
关于东京市的基本信息 |
| 工具 | 详情 |
|---|---|
get-weather |
获取某个城市的天气预报,支持城市名称和天数作为参数 |
| 提示 | 详情 |
|---|---|
weather-advice |
根据天气状况获取旅行建议 |
客户端在 client.js 文件中实现,演示了以下操作:
如果遇到资源或提示请求超时的问题,请检查服务器实现。示例中实现了直接消息处理以解决当前 SDK 版本的限制。