使用说明

项目简介

本项目 'MCP-para-todo' 是一个基于 Model Context Protocol (MCP) 的示例服务器,旨在演示如何构建一个能够为大型语言模型 (LLM) 提供实用工具的后端服务。通过这个服务器,LLM 可以调用预先定义好的工具来扩展其能力,例如查询天气、查询字典定义、进行数学计算等,从而实现与外部世界的交互。

主要功能点

  • 工具注册与执行: 服务器预先注册了多种实用工具,如 'weather' (天气查询)、'dictionary' (字典查询)、'math' (数学计算)。LLM 客户端可以指定工具名称和输入参数来调用这些工具。
  • JSON-RPC 风格的通信: 虽然没有严格遵循 JSON-RPC 协议的所有细节,但服务器通过 HTTP POST 接口 '/mcp' 接收 JSON 格式的请求,并返回 JSON 格式的响应,模拟了 JSON-RPC 的通信模式。
  • 模块化工具设计: 工具的实现被模块化地放在 'src/tools' 目录下,易于扩展和添加新的工具。
  • 简单的安装和运行: 项目提供了清晰的安装和运行步骤,方便用户快速上手和体验。

安装步骤

  1. 克隆仓库

    打开终端,执行以下命令克隆 GitHub 仓库到本地:

    git clone https://github.com/elsantiwg/MCP-para-todo.git
    cd MCP-para-todo
  2. 安装依赖

    在项目根目录下,执行 npm 命令安装项目所需的依赖:

    npm install
  3. 配置环境变量

    复制 '.env.example' 文件并重命名为 '.env',然后根据需要配置环境变量。

    cp .env.example .env

    本项目的天气查询工具 'weather' 使用了 'weatherapi.com' 的 API,你需要访问 https://www.weatherapi.com/ 注册账号并获取 API 密钥,然后将其填入 '.env' 文件中的 'WEATHER_API_KEY' 字段。

    WEATHER_API_KEY=你的_WEATHER_API_KEY
  4. 启动服务器

    在项目根目录下,执行以下命令启动开发服务器:

    npm run dev

    服务器默认运行在 'http://localhost:3000'。

服务器配置

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

{
  "serverName": "MCP Para Todo Server",
  "command": "npm",
  "args": ["run", "dev"]
}

配置参数说明:

  • 'serverName': 服务器的名称,可以自定义,用于在客户端标识该服务器。
  • 'command': 启动服务器的命令。 在本项目中,我们使用 'npm run dev' 启动开发服务器,因此命令设置为 'npm'。
  • 'args': 启动服务器命令的参数。 对于 'npm run dev',参数为 '["run", "dev"]'。

注意: 此配置假设 MCP 客户端和 MCP 服务器在同一台机器上运行,并且 MCP 客户端能够执行 'npm' 命令。如果服务器部署在远程机器上,你需要根据实际情况配置连接方式,例如使用 HTTP 或 WebSocket 等协议,并相应修改客户端配置。 本示例仅为本地开发演示,未涉及远程部署和更复杂的协议配置。

基本使用方法

启动服务器后,你可以通过 HTTP POST 请求访问 '/mcp' 接口来调用工具。 请求体应为 JSON 格式,包含 'tool' 和 'input' 字段。

示例请求 (使用 'curl'):

1. 查询天气工具 ('weather')

curl -X POST -H "Content-Type: application/json" -d '{"tool": "weather", "input": {"city": "北京"}}' http://localhost:3000/mcp

2. 查询字典工具 ('dictionary')

curl -X POST -H "Content-Type: application/json" -d '{"tool": "dictionary", "input": {"word": "example"}}' http://localhost:3000/mcp

3. 执行数学计算工具 ('math')

curl -X POST -H "Content-Type: application/json" -d '{"tool": "math", "input": {"expression": "2 * (10 + 5)"}}' http://localhost:3000/mcp

响应示例:

服务器会返回 JSON 格式的响应,包含工具执行的结果。例如,查询天气工具可能会返回如下响应:

{
  "result": {
    "ciudad": "Beijing",
    "pais": "China",
    "temperatura": 15,
    "condicion": "Partly cloudy",
    "humedad": 60,
    "viento_kph": 15
  }
}

如果工具调用失败或发生错误,服务器会返回包含错误信息的 JSON 响应。

信息

分类

AI与计算