Sprout MCP Server Demo

使用说明

项目简介

Sprout MCP Server Demo 是一个基于 Model Context Protocol (MCP) 的服务器示例,它是 Sprout Recipes 食谱分享平台的一部分。此 MCP 服务器旨在向 LLM (大型语言模型) 客户端提供食谱数据和天气信息等上下文信息和功能。它展示了如何使用 MCP 框架来管理资源、注册工具和定义 Prompt 模板,从而支持 LLM 应用进行上下文感知的交互。服务器包含用于获取天气预警和预报的工具,以及用于访问食谱详细信息的资源。

主要功能点

  • 资源管理: 公开食谱 Schema 和数据作为资源 (Resources),允许 MCP 客户端查询食谱字段信息和食谱数据。
  • 工具执行: 提供工具 (Tools) 以从国家气象局 API 获取实时的天气预警和天气预报信息。
  • Prompt 模板: 包含用于分析食谱数据的 Prompt 模板 (Prompts),支持定制化的 LLM 交互模式。
  • JSON-RPC 通信: 使用 JSON-RPC 协议通过 Stdio 传输协议与 MCP 客户端进行通信。

安装步骤

  1. 克隆仓库: 使用以下命令克隆 GitHub 仓库到本地:
    git clone https://github.com/PoliteVincent/sprout_demo.git
  2. 进入 mcpServer 目录: 导航到仓库中的 'mcpServer' 目录:
    cd sprout_demo/mcpServer
  3. 安装依赖: 如果需要,安装项目依赖。根据代码中的 import 语句,可能需要安装 'fastmcp' 和 'httpx' 库(尽管提供的代码看起来像是自包含的,使用了 'fastmcp' 框架):
    pip install fastmcp httpx

服务器配置

为了使 MCP 客户端能够连接到此服务器,需要配置服务器的启动命令。由于此服务器使用 'stdio' 传输协议,客户端的 MCP 服务器配置信息(JSON 格式)应如下所示:

{
  "serverName": "sprout_recipe_mcp_server",
  "command": "python",
  "args": ["recipe.py"]
}

或 (如果使用天气工具):

{
  "serverName": "sprout_weather_mcp_server",
  "command": "python",
  "args": ["weather.py"]
}

配置说明:

  • 'serverName': MCP 服务器的自定义名称,客户端使用此名称来标识和管理服务器实例 (例如: "sprout_recipe_mcp_server" 或 "sprout_weather_mcp_server")。
  • 'command': 执行服务器脚本的命令,此处为 'python',表示使用 Python 解释器来运行脚本。
  • 'args': 传递给命令的参数列表。
    • '["recipe.py"]': 运行 'recipe.py' 脚本,启动提供食谱相关资源和工具的 MCP 服务器。
    • '["weather.py"]': 运行 'weather.py' 脚本,启动提供天气相关工具的 MCP 服务器。 注意: 你需要根据需要的功能选择运行 'recipe.py' 或 'weather.py' 作为 MCP 服务器。如果需要同时使用食谱和天气功能,则需要配置并运行两个独立的 MCP 服务器实例,每个实例分别对应一个脚本。

基本使用方法

  1. 启动 MCP 服务器: 在 MCP 客户端配置中,根据上述 “服务器配置” 部分设置命令和参数。客户端启动时,将执行配置的命令(例如 'python recipe.py' 或 'python weather.py'),从而启动 MCP 服务器。
  2. 客户端发送请求: MCP 客户端通过 stdio 向服务器发送 JSON-RPC 请求,以访问资源、调用工具或获取 Prompt 模板。
  3. 示例:
    • 要使用 'recipe.py' 中的 'get_recipe_by_id' 工具,客户端需要构造一个符合 JSON-RPC 规范的请求,指定工具名称 ('get_recipe_by_id') 和参数 (例如 'id' 和 'fields'),并通过 stdio 发送给服务器。
    • 同样,要访问 'recipe.py' 中定义的 'schema://recipe' 资源,客户端需要发送资源请求到服务器。

服务器信息