使用说明

项目简介

Tiny MCP 是一个使用 Python 开发的轻量级 Model Context Protocol (MCP) 服务器和客户端实现。它旨在演示如何构建 MCP 服务器,以便为大型语言模型(LLM)提供工具和上下文信息。该项目包含天气查询和时间服务等示例,展示了如何通过 MCP 协议扩展 LLM 的能力,使其能够与外部世界交互。

主要功能点

  • MCP 服务器实现: 使用 'fastmcp' 框架搭建 MCP 服务器,可以注册和提供工具供 MCP 客户端调用。
  • 示例服务: 内置天气查询服务(支持中国城市和美国州/城市)和时间服务,展示了如何将外部数据和功能集成到 MCP 服务器中。
  • MCP 客户端库: 提供 Python MCP 客户端库,方便开发者构建可以连接和使用 MCP 服务器的应用。
  • 多种客户端示例: 包含简单的 'sample_mcp_client.py' 和功能更全面的 'mcp_client_main.py' 客户端示例,演示如何与 MCP 服务器交互。
  • 基于 Stdio 传输: 使用标准输入输出 (Stdio) 作为客户端和服务器之间的通信通道,简化部署和运行。
  • JSON-RPC 协议: 遵循 MCP 协议规范,使用 JSON-RPC 进行结构化通信。

安装步骤

  1. 克隆仓库

    git clone https://github.com/wdndev/tiny-mcp.git
    cd tiny-mcp
  2. 安装 uv 根据您的操作系统,参考仓库 README.md 文件中的指引安装 'uv' 包管理器。

  3. 创建并激活虚拟环境,安装依赖

    uv venv --python 3.12
    uv sync
    • 激活虚拟环境:
      • Linux/macOS: 'source .venv/bin/activate'
      • Windows: '..venv\Scripts\activate'
  4. 配置环境变量 复制 '.env.example' 文件为 '.env',并根据需要修改以下环境变量,主要是配置您使用的 LLM API 密钥:

    LLM_MODEL_TYPE = "deepseek"  # 或 "openai"
    LLM_API_URL = "https://api.deepseek.com" #  如果您使用 OpenAI,可以留空
    LLM_API_KEY = "sk-xxxxxxxxxxxxxxxxxx" # 替换为您的 LLM API 密钥
    LLM_MODEL_NAME = "deepseek-chat" #  根据您使用的模型进行修改

    如果您需要使用天气服务,还需要配置天气 API 相关的环境变量(请参考 'services/weather_service_zh.py' 和 'services/weather_service_us.py' 文件中的说明)。

服务器配置

MCP 客户端需要配置 MCP 服务器的启动信息才能连接。配置文件通常是 JSON 格式,例如项目中的 'config/server_config.json' 文件。以下是一个配置示例,定义了时间服务和天气服务:

{
    "mcpServers": {
      "get_current_time": {
        "name": "时间服务",
        "type": "stdio",
        "description": "提供当前时间查询服务",
        "command": "uv",
        "args": [
          "--directory",
          "services",
          "run",
          "time_service.py"
        ]
      },
      "get_weather": {
        "name": "天气服务(中国)",
        "type": "stdio",
        "description": "提供中国城市天气查询服务",
        "command": "uv",
        "args": [
          "--directory",
          "services",
          "run",
          "weather_service_zh.py"
        ]
      }
    },
    "defaultServer": "get_current_time",
    "system": "你可以使用工具查询时间和天气信息。"
}
  • 'mcpServers': 定义可用的 MCP 服务器列表。
  • 'get_current_time', 'get_weather': 服务器标识符,用于客户端引用。
  • 'name': 服务器的友好名称,方便用户理解。
  • 'type': 传输类型,这里使用 'stdio' (标准输入输出)。
  • 'description': 服务器的功能描述。
  • 'command': 启动服务器的命令,这里使用 'uv' 运行 Python 脚本。
  • 'args': 传递给 'command' 的参数,包括指定服务脚本的路径。
  • 'defaultServer': 默认使用的服务器标识符。
  • 'system': 可选的系统提示词,用于引导 LLM 的行为。

基本使用方法

  1. 激活虚拟环境 (如果尚未激活)。

  2. 运行 MCP 客户端 使用 'sample_mcp_client.py' 客户端示例,并指定服务器配置文件路径和要使用的服务器标识符:

    python sample_mcp_client.py get_weather config/server_config.json

    或者,直接指定服务器脚本路径运行:

    python sample_mcp_client.py services/weather_service_zh.py
  3. 与客户端交互 在终端中输入自然语言查询,例如 "北京天气怎么样?" 或 "现在几点了?",客户端会将查询发送给 LLM,并根据需要调用 MCP 服务器提供的工具获取信息,最终返回 LLM 的回复。

  4. 退出客户端 输入 'quit' 并回车即可退出客户端程序。

信息

分类

网页与API