使用说明

项目简介

本项目 'MCP_Demo' 仓库包含一个基于 Model Context Protocol (MCP) 的时间工具服务器示例。该服务器名为 'mcp-time',通过 MCP 协议向客户端提供两个主要的时间相关工具:

  1. 获取当前时间 (get_current_time): 允许客户端查询指定时区的当前时间。
  2. 时区转换 (convert_time): 允许客户端将指定时间从一个时区转换为另一个时区。

此服务器旨在演示如何使用 MCP 框架构建工具服务器,并与 LLM 客户端进行交互,使其具备时间相关的外部功能。

主要功能点

  • 提供时间工具: 实现了获取当前时间和时区转换两个实用工具。
  • MCP 协议支持: 完全遵循 MCP 协议规范,使用 JSON-RPC 进行通信。
  • Stdio 传输: 使用标准输入输出 (Stdio) 作为传输协议,简化部署和运行。
  • 易于理解的示例: 代码结构清晰,注释完善,适合学习和理解 MCP 服务器的实现方式。

安装步骤

  1. 克隆仓库: 将 'MCP_Demo' 仓库克隆到本地。
    git clone https://github.com/LaynePeng/MCP_Demo.git
    cd MCP_Demo
  2. 安装 Python 依赖: 服务器端和客户端都使用 Python 开发,需要安装依赖库。请确保你的 Python 环境中已安装 'tzdata' 包,可以通过以下命令安装:
    pip install tzdata
    pip install -r requirements.txt
    如果提示 'tzdata' 已安装,则无需重复安装。

服务器配置

MCP 客户端需要配置服务器的启动信息才能连接到 'mcp-time' 服务器。配置信息通常在客户端的 'config.json' 文件中 (例如本仓库的 'config.json')。 你需要在 'mcp_servers' 列表中添加或修改服务器配置。

以下是一个 'mcp_servers' 配置示例,用于连接到 'mcp-time' 服务器:

{
  "mcp_servers": [
    {
      "name": "time_server",  // 服务器名称,客户端用以标识和引用
      "command": "python",   // 启动服务器的命令,这里使用 python 解释器
      "args": ["mcp_server_time/server.py"], // 启动命令的参数,指向服务器脚本 server.py
      "env": {}              // 环境变量,默认为空
    }
  ]
}

配置参数说明:

  • name: 服务器的名称,可以自定义,客户端通过此名称引用服务器。例如,可以设置为 "time_server" 或 "my_time_tools"。
  • command: 启动服务器程序的可执行命令。对于 Python 服务器,通常是 'python' 或 'python3',确保该命令在你的系统 PATH 环境变量中。
  • args: 一个字符串数组,包含传递给 'command' 的命令行参数。对于 'mcp-time' 服务器,需要指定服务器脚本的路径 'mcp_server_time/server.py'。
  • env: 一个 JSON 对象,用于设置服务器程序运行时的环境变量。如果不需要特殊环境变量,可以留空 '{}'。

注意: 请根据你的实际 Python 环境和脚本路径,调整 'command' 和 'args' 配置。

基本使用方法

  1. 启动 MCP 时间服务器: 无需手动启动 'mcp-time' 服务器。当客户端程序 (例如 'client.py' 或 'main.py') 运行时,它会自动根据 'config.json' 中的配置启动 'mcp-time' 服务器。

  2. 运行 MCP 客户端: 在终端中,导航到仓库根目录 ('MCP_Demo'),然后运行 'client.py' 或 'main.py' 客户端程序。 例如,运行 'client.py':

    python client.py

    或者运行 'main.py':

    python main.py
  3. 与客户端交互: 客户端启动后,会显示 "MCP Client Started!" 提示符,你可以输入自然语言查询。客户端会将查询发送给 LLM 模型,并根据需要调用 'mcp-time' 服务器提供的工具来获取时间信息。

    例如,在客户端中输入查询:

    Query: 现在纽约时间几点?

    客户端会调用 'mcp-time' 服务器的 'get_current_time' 工具,并将时区设置为 "America/New_York",然后将工具返回的结果整合到 LLM 的回复中,最终输出纽约的当前时间。

    你也可以尝试其他查询,例如时区转换:

    Query:  下午3点伦敦时间是东京几点?

    输入 'quit' 可以退出客户端程序。

代码修改提示 (README 中提及):

仓库的 'README.md' 提到 "调用写死了,记得改" 以及 "都是拿已有开源的魔改的"。 这意味着 'client.py' 和 'main.py' 中的某些配置或调用可能需要根据你的实际使用场景进行调整。 例如,'config.json' 中的模型 ('model')、API 密钥 ('api_key')、基础 URL ('base_url') 以及系统提示 ('system_prompt') 需要替换为你自己的 OpenAI 或其他 LLM 服务的配置。

尽管代码是实验性质的,但它清晰地演示了 MCP 客户端如何与 MCP 服务器交互,并利用服务器提供的工具来增强 LLM 的能力。

信息

分类

AI与计算