使用说明

项目简介

本项目是一个基于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服务器框架具备会话管理能力,可以跟踪和管理客户端的会话状态。
  • 能力声明: 服务器能够向客户端声明其支持的功能和工具。

安装步骤

  1. 克隆仓库: 首先,您需要克隆此GitHub仓库到本地。
    git clone https://github.com/jacwu/github-materials.git
    cd github-materials/features/mcp
  2. 安装依赖: 确保您的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' 文件。

基本使用方法

  1. 启动服务器: 在终端中,导航到 'github-materials/features/mcp' 目录,并运行以下命令启动MCP服务器:

    python mcp_server.py

    服务器默认监听 'http://127.0.0.1:3000' 地址。

  2. 配置MCP客户端: 将上述服务器配置信息添加到您的MCP客户端配置中。客户端将使用SSE协议通过 '/sse' 和 '/request' 路径与服务器建立连接。

  3. 使用工具: 客户端连接成功后,可以调用服务器提供的工具。

    • 调用 '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与计算