食谱助手系统

一个结合本地MCP服务器(食材库、食谱)和Ollama的食谱助手,可通过CLI或网页聊天界面使用。

  • by TretiqHiks
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 TretiqHiks/recipe-mcp-server

使用说明

MCP配方系统

带有本地MCP服务器(食品储藏室、食谱)和Ollama的食谱助手。通过CLI或网络聊天UI使用。

先决条件

  • Python 3.10+
  • 奥拉玛 使用模型在本地运行(例如。 llama3.1)
  • (可选)安装deps: pip install -r requirements.txt

运行后端(HTTP API+前端)

从 项目根目录:

# Windows
set PYTHONPATH=%CD%
python -m uvicorn src.chat_api:app --reload --host 0.0.0.0 --port 8000

# Linux / macOS
export PYTHONPATH=.
python -m uvicorn src.chat_api:app --reload --host 0.0.0.0 --port 8000
  • 基本URL: http://localhost:8000
  • 前端: 打开http://localhost:8000/在浏览器中(由同一进程提供服务)。
  • API POST http://localhost:8000/api/chat

运行CLI(无HTTP)

# From project root
set PYTHONPATH=%CD%
python -m src.olama_mcp_host

然后在以下位置键入消息 You: 提示。清空退出行。

聊天API

端点: POST /api/chat

请求: JSON正文,包含完整的对话历史记录(用户和助理消息)。后端添加系统提示并运行一个助手回合(包括工具调用)。

{
  "messages": [
    { "role": "user", "content": "List all pantry items" },
    { "role": "assistant", "content": "Your pantry has …" },
    { "role": "user", "content": "Add 2 cans of chickpeas" }
  ]
}

答复: 带有新助手回复的非流式JSON。

{
  "content": "I've added 2 cans of chickpeas to your pantry."
}
  • 流动: 不。后端使用Ollama stream: false.
  • 错误: 一旦出现故障(例如MCP或Ollama停机),API将返回 502 带着一个 detail 弦。

前端

  • 地点: frontend/index.html (单个文件,无构建)。
  • 服务地点: / 当后端正在运行时(同源)。
  • API基础URL: 默认情况下,页面使用相对URL(/api).要指向另一台主机,请设置 window.CHAT_API_BASE 加载前(例如。 https://api.example.com)或者使用注入它的构建步骤。

日志记录(工具调用透明度)

当LLM调用工具时,每次调用都会记录在 信息 级别:

  • tool_call –工具名称和参数(例如。 pantry_upsert_items, recipes_search).
  • tool_result –工具名称和结果的简短预览(如果较长,则截断)。

日志将转到stderr。运行时 命令行界面,主机在启动时配置日志记录。运行时 API (uvicorn),该应用程序在启动时配置日志记录,以便在服务器控制台中显示相同的行。使用这些日志可以查看每个请求使用了哪些工具,而无需更改用户在聊天中看到的内容。

数据

  • 配方和食品储藏室数据存储在 data/recipes.db (SQLite)。MCP服务器在第一次运行时创建它。