天气信息MCP服务

一个基于JSON-RPC 2.0协议的模型上下文协议(MCP)实现,提供城市信息和天气预报功能。

  • by logesh-kumar
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 logesh-kumar/mcp-client-server

使用说明

一个简单的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消息。

运行服务器和客户端

  1. 启动客户端:

    node client.js
    

    启动客户端将自动将服务器作为子进程启动。客户端将连接到服务器并执行所有示例操作。

  2. 要独立启动服务器,请执行以下操作:

    node server.js
    

传输机制

此示例使用stdio(标准输入/输出)作为客户端和服务器之间的传输机制。当客户端启动时,它将服务器作为子进程生成,并通过stdin/stdout流与之通信。

实现了自定义日志传输,以显示客户端和服务器之间交换的消息。这些消息以人类可读的格式记录到控制台,这有助于理解协议。

故障排除

如果您遇到资源或提示请求超时的问题,请检查服务器实现。该示例包括对某些请求类型的直接消息处理,以绕过当前SDK版本中的限制。