使用说明

项目简介

本项目是一个简单的 MCP (Model Context Protocol) 服务器示例,基于 Node.js 开发。它演示了如何使用 '@modelcontextprotocol/sdk' 创建一个提供工具的 MCP 服务器。本示例提供了一个天气查询工具,但数据是硬编码的,仅作为演示用途。

主要功能点

  • 天气查询工具 (news): 提供一个名为 'news' 的工具,允许客户端查询指定城市的天气信息。目前支持 "new york", "delhi", "mumbai" 三个城市,返回硬编码的天气数据。对于其他城市,则返回未找到天气的提示。
  • 本地 STDIO 传输: 使用 STDIO (标准输入输出) 作为 MCP 服务器的传输协议,这意味着服务器和客户端需要在同一台机器上通过命令行进行通信。
  • 基础 MCP 服务器功能: 实现了 MCP 服务器的基本框架,包括服务器名称、描述和版本信息的声明,以及工具的注册和执行。

安装步骤

  1. 确保已安装 Node.js 和 npm: 如果你的电脑上没有安装 Node.js,请先安装 Node.js (建议使用 LTS 版本),npm 包管理器会随 Node.js 一起安装。
  2. 下载仓库代码: 从 GitHub 仓库 https://github.com/KrishCodesw/MCP-servers- 下载代码到本地。
  3. 进入项目目录: 在命令行中,进入下载代码的根目录(包含 'main.js' 和 'README.md' 文件的目录)。
  4. 安装依赖: 虽然示例代码中import了sdk和zod,但仓库中没有'package.json'文件,实际上没有声明依赖,根据代码推断需要安装 '@modelcontextprotocol/sdk' 和 'zod'。在项目目录下执行以下命令安装依赖:
    npm install @modelcontextprotocol/sdk zod

服务器配置

MCP 客户端需要配置以下信息才能连接到此 MCP 服务器。以下是一个 JSON 格式的配置示例,你需要将其配置到你的 MCP 客户端中。

{
  "serverName": "Weather Server",
  "command": "node",
  "args": ["main.js"]
}

配置参数说明:

  • 'serverName': MCP 服务器的名称,这里设置为 "Weather Server",与 'main.js' 代码中 'McpServer' 构造函数中定义的 'name' 属性一致。
  • 'command': 启动 MCP 服务器的命令,由于本示例是 Node.js 应用,所以设置为 'node',表示使用 Node.js 运行时环境。
  • 'args': 启动命令的参数,这里设置为 '["main.js"]',表示要执行 'main.js' 文件来启动 MCP 服务器。

注意: 请确保你的 MCP 客户端能够找到 'node' 命令,并且 'main.js' 文件路径相对于客户端配置的启动目录是正确的。由于是 STDIO 传输,客户端和服务端需要在同一台机器上运行。

基本使用方法

  1. 启动 MCP 服务器: 在命令行中,进入项目目录,并执行以下命令启动 MCP 服务器:

    node main.js

    服务器启动后,通常不会有明显的输出,它会在后台等待 MCP 客户端的连接和请求。

  2. 配置并启动 MCP 客户端: 使用支持 MCP 协议的客户端软件 (例如,某些 LLM 应用或 MCP 客户端 SDK)。在客户端中,根据上述 "服务器配置" 部分的信息配置你的 MCP 服务器连接。

  3. 调用工具: 在 MCP 客户端中,你可以调用服务器提供的 'news' 工具来查询天气。调用工具时,需要提供 'city' 参数,例如,要查询 "new york" 的天气,你需要向服务器发送调用 'news' 工具并附带参数 '{"city": "new york"}' 的请求。

  4. 接收响应: MCP 服务器会处理客户端的工具调用请求,并返回 JSON 格式的响应,其中包含查询到的天气信息(或未找到天气的提示)。客户端需要解析这个 JSON 响应并展示给用户。

示例工具调用 (JSON-RPC request, 仅供参考,实际操作请参考MCP客户端文档):

{
  "jsonrpc": "2.0",
  "method": "call",
  "params": {
    "tool_name": "news",
    "arguments": {
      "city": "new york"
    }
  },
  "id": 1
}

预期响应 (JSON-RPC response, 示例):

{
  "jsonrpc": "2.0",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"temperature\":\"10C\",\"forecast\":\"High chances of rain\"}"
      }
    ]
  },
  "id": 1
}

请注意,这只是一个非常基础的示例,实际应用中你需要根据你的需求扩展工具的功能,并考虑使用更完善的数据来源和传输协议 (例如 SSE 或 WebSocket) 以支持更复杂的应用场景。

信息

分类

网页与API