使用说明
项目简介
本项目是一个基于Python Starlette框架实现的MCP服务器示例,旨在演示如何构建一个能够响应LLM客户端请求,并提供外部数据和功能的后端服务。它包含了天气查询和随机用户生成两个工具,展示了MCP服务器如何扩展LLM的能力。
主要功能点
- 资源管理 (Resources): 虽然示例中未显式管理资源,但框架已具备资源管理的基础,可以扩展用于托管和管理各种数据资源。
- 工具注册与执行 (Tools): 提供了两个预置工具:
- 'get_current_weather': 根据地点名称查询天气预报。
- 'create_random_user': 生成随机用户数据。
- Prompt 模板 (Prompts): 示例中未直接涉及Prompt模板,但MCP服务器框架支持Prompt模板的定义和渲染,可以根据需要进行扩展。
- JSON-RPC 通信: 使用JSON-RPC协议与客户端通信,通过SSE (Server-Sent Events) 传输协议实现双向通信。
- 会话管理: MCP服务器框架具备会话管理能力,可以跟踪和管理客户端的会话状态。
- 能力声明: 服务器能够向客户端声明其支持的功能和工具。
安装步骤
- 克隆仓库: 首先,您需要克隆此GitHub仓库到本地。
git clone https://github.com/jacwu/github-materials.git cd github-materials/features/mcp - 安装依赖: 确保您的Python环境中安装了必要的库。如果缺少依赖,请使用pip安装:
pip install uvicorn starlette httpx mcp-server-sdk
服务器配置
MCP客户端需要配置服务器的启动命令和参数才能连接。以下是本示例服务器的典型配置信息(JSON格式),请提供给您的MCP客户端:
{ "serverName": "github-materials-mcp-server", "command": "python", "args": ["features/mcp/mcp_server.py"] }
配置参数说明:
- 'serverName': 服务器的名称,可以自定义,用于在客户端识别和管理服务器连接。例如:"github-materials-mcp-server"。
- 'command': 启动服务器的命令,通常是Python解释器。例如:"python"。
- 'args': 启动命令的参数列表,指向服务器主程序文件 'mcp_server.py' 的路径。请根据实际文件路径进行调整。 例如:'["features/mcp/mcp_server.py"]'。
注意: MCP客户端需要能够执行 'python features/mcp/mcp_server.py' 命令来启动服务器。请确保您的客户端环境已配置好Python环境,并且可以访问到 'mcp_server.py' 文件。
基本使用方法
-
启动服务器: 在终端中,导航到 'github-materials/features/mcp' 目录,并运行以下命令启动MCP服务器:
python mcp_server.py服务器默认监听 'http://127.0.0.1:3000' 地址。
-
配置MCP客户端: 将上述服务器配置信息添加到您的MCP客户端配置中。客户端将使用SSE协议通过 '/sse' 和 '/request' 路径与服务器建立连接。
-
使用工具: 客户端连接成功后,可以调用服务器提供的工具。
- 调用 'get_current_weather' 工具时,需要提供 'location_name' 参数,例如:'{"location_name": "北京"}'。服务器将返回北京的天气预报JSON数据。
- 调用 'create_random_user' 工具时,可以提供 'gender' 参数 (可选,例如 '"male"' 或 '"female"')。服务器将返回随机用户信息的JSON数据。
示例工具调用 (假设使用MCP客户端):
{ "jsonrpc": "2.0", "method": "call_tool", "params": { "name": "get_current_weather", "arguments": { "location_name": "上海" } }, "id": "1" }
请参考MCP客户端的文档,了解如何配置服务器连接和调用工具。
信息
分类
AI与计算