Paprika MCP 服务器

使用说明内容(Markdown格式)

  • 项目简介

    • 该仓库实现了一个基于 MCP 的服务器端(Paprika MCP 服务器),用于将 Paprika Recipe Manager 的配方数据暴露给 LLM 客户端。服务器使用本地文件加载器读取配方 JSON,将数据存储在内存数据库中,并注册一组可以被 LLM 调用的工具(如列出类别、列出配方、按条件搜索、获取具体配方等)。同时提供一个示例提示,帮助 LLM 以合适的工作流程使用这些工具。服务器通过标准输出/输入等传输方式与客户端进行交互。
  • 主要功能点

    • 数据加载与存储
      • FileSystemRecipeLoader 从本地目录读取 JSON 形式的 Paprika 配方数据。
      • RecipeStore 使用 RxDB 内存存储管理配方数据,提供 list/get/search 等查询接口。
    • 工具集成
      • ListCategoriesTool:统计并返回所有分类及各自的配方数量。
      • ListRecipesTool:返回配方摘要列表(可配置数量上限)。
      • GetRecipeTool:根据 UID 获取配方的完整信息。
      • SearchRecipesTool:按查询字符串在指定字段中进行搜索,支持限定字段和结果数量。
    • MCP 服务
      • 将工具注册到 MCP 服务器,提供统一的 JSON-RPC 风格调用入口。
      • 提供一个示例提示 how-to-use-paprika-tools,帮助 LLM 了解可用工具及工作流程。
      • 支持 stdio 传输,便于与 Claude、Llama 等模型进行本地协作。
    • 构建与运行
      • 使用 esbuild 将源码打包为单文件(dist/index.cjs),并通过 Node.js 启动服务器。
      • README 提供 unpack(将 Paprika 的 .paprikarecipes 拆包为单独的 JSON 文件)和启动服务器的基本步骤。
  • 安装步骤

    • 安装依赖与构建
      • 安装依赖并构建输出为可执行的 CommonJS 文件。
    • 准备数据
      • 将 Paprika 的 .paprikarecipes 文件解包为单独的 JSON 文件,放置到指定目录中,供服务器加载。
    • 启动服务器
      • 使用命令启动服务器,使其通过标准输入/输出与客户端通信(具体命令与参数在“服务器配置”中给出示例)。
    • 使用示例(客户端侧)
      • MCP 客户端需要配置一个服务器条目,指向 Paprika MCP 服务器的启动命令与参数(客户端配置示例请参照下方 JSON 配置样例;客户端本身不需要实现服务器端逻辑,只需要知道如何启动并连接)。
  • 服务器配置(MCP 客户端使用的示例配置说明)

    • 配置项说明:服务器名称、启动命令及参数等,用于客户端在需要时启动并连接到 MCP 服务器。以下为基于仓库信息的准确示例配置(请按实际环境替换路径): { "mcpServers": { "paprika": { "type": "stdio", "command": "node", "args": [ "/path/to/paprika-mcp-server/dist/index.js", "mcp", "--recipes-dir", "/path/to/recipes" ] } } } 注释说明(不需要客户额外实现服务端逻辑,只需了解该配置的意义)
    • server name: paprika,表示该服务器的标识名称,客户端通过该名称区分不同服务器实例。
    • type: stdio,表示使用标准输入/输出的传输模式,与 MCP 客户端的默认通信方式一致。
    • command: node,以及 args 的内容,是用来启动服务器的具体命令及参数。dist/index.js 是打包后的入口文件,"mcp" 指定要启动的 MCP 模块,"--recipes-dir" 指定本地存放配方 JSON 的目录。
    • 服务器需要的 recipes 目录是本地化的数据源,客户端不需要关心该目录的内部结构,只需确保服务器在启动时能访问到该目录。
  • 基本使用方法

    • 数据准备与启动
      • 解包 Paprika 配方文件,将 .paprikarecipes 里的每个纸条解压为单独的 JSON 文件,放在指定目录。
      • 使用上述客户端配置,启动 paprika 服务器(命令行由客户端实现的启动流程提供)。
    • 与 LLM 的工作流程
      • LLM 通过 MCP 提供的工具调用来获取并操作 Paprika 数据,例如先列出类别、再按类别筛选出相关配方,随后获取具体配方的详细信息。
      • 也可以通过提供的提示模板引导 LLM 如何使用工具进行交互,提升对话的可控性与可解释性。
    • 运行与调试
      • 构建时生成的 dist/index.cjs 作为入口文件,通过 Node 启动。若遇到权限、路径或数据加载问题,请检查 recipes 目录的存在性与权限,以及打包后的产物路径是否正确。
  • 备注

    • 项目当前实现包含服务器端的核心功能:数据加载、工具注册、提示渲染、以及与客户端的传输接口,属于完整的 MCP 服务器实现,而非仅示例或测试代码。

服务器信息