本项目是一个简单的 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 版本的限制。