使用说明
项目简介
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 进行结构化通信。
安装步骤
-
克隆仓库
git clone https://github.com/wdndev/tiny-mcp.git cd tiny-mcp -
安装 uv 根据您的操作系统,参考仓库 README.md 文件中的指引安装 'uv' 包管理器。
-
创建并激活虚拟环境,安装依赖
uv venv --python 3.12 uv sync- 激活虚拟环境:
- Linux/macOS: 'source .venv/bin/activate'
- Windows: '..venv\Scripts\activate'
- 激活虚拟环境:
-
配置环境变量 复制 '.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 的行为。
基本使用方法
-
激活虚拟环境 (如果尚未激活)。
-
运行 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 -
与客户端交互 在终端中输入自然语言查询,例如 "北京天气怎么样?" 或 "现在几点了?",客户端会将查询发送给 LLM,并根据需要调用 MCP 服务器提供的工具获取信息,最终返回 LLM 的回复。
-
退出客户端 输入 'quit' 并回车即可退出客户端程序。
信息
分类
网页与API