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 服务器实现,而非仅示例或测试代码。