Paprika MCP 服务器
使用说明内容(Markdown格式)
Paprika MCP 服务器使用说明
项目简介
Paprika MCP 服务器是一个基于 MCP(Model Context Protocol)的后端服务。它把 Paprika Recipe Manager 的数据以标准化的方式暴露给大语言模型(LLM) 客户端,提供资源的托管与访问、可注册执行的工具,以及可渲染的提示模板。服务器通过 JSON-RPC 与客户端通信,支持会话管理、能力声明,并以便于扩展的方式实现。
主要功能点
- 资源管理
- 加载、检索和列出 Paprika 食谱数据,支持本地文件系统加载器。
- 工具注册与执行
- 提供若干工具(示例:列出分类、获取单个食谱、按查询搜索等),可被 LLM 调用以获取结构化数据。
- 提示模板
- 定义并渲染提示模板,帮助 LLM 以推荐的工作流程与工具组合进行交互。
- 多传输协议与运行方式
- 当前实现通过 Stdio 传输与 MCP 服务端交互,便于在本地或管道中与 LLM 集成,后续可扩展到 SSE/WebSocket 等传输方式。
- 会话与能力声明
- 服务端声明版本、服务器名称等信息,负责会话管理和工具注册。
- 数据存储与并发
- 使用 RxDB 内存存储实现数据存储,具备并发加载与去重等机制,确保稳定运行。
安装步骤
- 安装依赖并构建
- 使用包管理工具安装依赖并构建产物(如 pnpm install、pnpm build)。
- 准备食谱数据
- 将 Paprika 导出的 .paprikarecipes 解压,得到单独的 JSON 文件,放置到一个目录中(例如名为 recipes 的目录)。
- 启动服务器
- 使用构建产物启动服务器,并传入包含食谱 JSON 文件的目录:
- 运行:node dist/index.js mcp --recipes-dir ./recipes
- 说明:实际打包输出路径可能为 dist/index.js 或 dist/index.cjs,具体以构建产物为准。构建完成后可直接通过上述命令启动。
- 使用构建产物启动服务器,并传入包含食谱 JSON 文件的目录:
服务器配置(MCP 客户端使用的配置信息说明)
说明:下面给出配置格式的描述,便于理解 MCP 客户端在对接时需要的关键信息。客户端本身不需要直接修改服务器端代码。
{ "mcpServers": { "paprika": { "type": "stdio", "command": "node", "args": [ "/path/to/paprika-mcp-server/dist/index.js", // 入口执行文件(实际路径以部署为准) "mcp", "--recipes-dir", "/path/to/your/recipes" // 你解压后的食谱 JSON 文件所在目录 ] } } }
字段说明
- serverName(在调用命令行参数中为 --server-name,示例中默认值为 paprika)
- command(服务器入口执行命令,通常为 node)
- args(服务器入口的参数,包含子命令 mcp、 recipes-dir 等,用于告知服务器要加载的食谱目录)
重要说明
- MCP 客户端需要的只是服务器名称与可连接的传输方式信息,以上配置用于 MCP 客户端来描述如何启动与连接服务器。实际客户端通常不需要修改此配置,而是在集成时通过模型对话框或调用来使用 MCP 提供的工具与提示。
基本使用方法
- 准备阶段
- 确保食谱数据已经放在指定的目录中,并正确解包为单独的 JSON 文件。
- 启动 Paprika MCP 服务器,确保输出日志显示服务器已就绪。
- 使用流程
- LLM 客户端通过 MCP 协议调用已注册的工具,如:
- 列出分类(list-categories)
- 根据查询搜索(search-recipes)
- 获取单个食谱详情(get-recipe)
- 浏览食谱列表(list-recipes)
- 通过服务器提供的提示模板,LLM 可以在对话中获取结构化数据并继续交互。
- LLM 客户端通过 MCP 协议调用已注册的工具,如:
- 典型场景
- 用户问“有什么鸡肉食谱?” -> 调用 list-categories 检索分类 -> 调用 search-recipes 查找相关食谱
- 用户需要某个具体食谱的详细信息 -> 调用 get-recipe 获取 UID 对应的完整数据
注意
- MCP 服务器的扩展性在于可注册的新工具和新的提示模板,当前实现包含了多种常用食谱相关工具及一个帮助提示。