项目简介

该项目是一个为AI工程课程设计的终结项目,其核心是一个基于Model Context Protocol (MCP) 实现的营养助理工具服务。它为LLM客户端(如集成AutoGen代理的聊天机器人)提供标准化的功能接口,以便LLM能够访问膳食营养数据和图像。整个系统通过FastAPI封装,并兼容OpenAI API,可与Open WebUI等前端界面集成。

主要功能点

  • MCP工具托管: 托管并暴露一系列与营养相关的工具,例如获取膳食选项和获取餐点图片。
  • 智能膳食推荐: 通过混合搜索(BM25和向量相似性)结合交叉编码重排序,根据用户查询提供个性化的膳食推荐,包含详细营养信息。
  • 餐点图片检索: 提供根据餐点名称检索对应图片的功能。
  • JSON-RPC通信: MCP服务器通过JSON-RPC协议与客户端通信,接收并处理工具调用请求。
  • Stdio传输协议: MCP服务器采用标准输入/输出(Stdio)作为传输协议,方便本地集成和调试。

安装步骤

  1. Python环境: 确保安装Python 3.13.5,并建议使用虚拟环境。
  2. 依赖安装: 在项目根目录运行 'pip install -r requirements.txt' 安装所有必要的Python包。
  3. Docker Desktop: 安装并运行Docker Desktop,用于轻松启动Open WebUI。
  4. Ollama: 安装并运行Ollama,用于运行本地大语言模型。
  5. 下载模型: 使用Ollama下载 'qwen3:30b-a3b' 和 'gpt-oss:20b' 模型(例如 'ollama pull qwen3:30b')。你可以选择一个模型使用。
  6. (可选)MCP Inspector: 如果要使用MCP Inspector工具查看服务器工具,需要安装Node.js和npm,然后运行 'npm install -g @modelcontextprotocol/inspector'。

服务器配置

MCP客户端需要知道如何启动并连接到MCP服务器。以下是针对该MCP服务器的配置信息示例(JSON格式,供MCP客户端参考):

{
  "mcpServers": {
    "food-server": {
      "command": "python3",
      "args": ["mcp_food_server.py"],
      "transport_protocol": "stdio",
      "read_timeout_seconds": 30
    }
  }
}
  • 'server name': 'food-server',这是MCP服务器的唯一标识符。
  • 'command': 'python3',用于启动MCP服务器的命令。
  • 'args': '["mcp_food_server.py"]',作为命令的参数,指定要执行的MCP服务器脚本。
  • 'transport_protocol': 'stdio',表示使用标准输入/输出作为通信协议。
  • 'read_timeout_seconds': '30',客户端等待服务器响应的超时时间(秒)。

基本使用方法

  1. 启动MCP服务器: 在项目根目录的命令行中运行 'python3 mcp_food_server.py'。
  2. 启动营养服务API桥接: 在另一个命令行中运行 'python3 nutrition_service.py'。这将启动一个兼容OpenAI API的FastAPI服务,它会作为前端代理,内部通过AutoGen代理连接到MCP服务器。
  3. 配置Open WebUI(或兼容OpenAI API的客户端):
    • 启动Open WebUI容器:'docker run -d -v open-webui:/app/backend/data -e WEBUI_AUTH=False --net=host --name open-webui --restart always ghcr.io/open-webui/open-webui:main'
    • 访问 'http://localhost:8080/'。
    • 在Open WebUI的“Admin Panel” -> “Settings” -> “Connection”中,添加一个新的OpenAI API连接,URL设置为 'http://host.docker.internal:8000/v1'。
    • 测试连接并保存。
    • 新建聊天,选择以“Agentic-System-...”开头的模型(这代表你的API桥接服务),即可开始与营养助理聊天。
  4. (可选)使用MCP Inspector检查工具:
    • 在MCP服务器('mcp_food_server.py')运行时,在命令行中运行 'npx @modelcontextprotocol/inspector python3 mcp_food_server.py'。
    • 浏览器将自动打开MCP Inspector页面。
    • 确保传输类型为 'STDIO',命令为 'python3',点击“Connect”。
    • 连接成功后,点击顶部的“Tools”图标,即可查看MCP服务器暴露的所有工具(如 'get_meal_options')。

信息

分类

AI与计算