项目简介
该项目是一个为AI工程课程设计的终结项目,其核心是一个基于Model Context Protocol (MCP) 实现的营养助理工具服务。它为LLM客户端(如集成AutoGen代理的聊天机器人)提供标准化的功能接口,以便LLM能够访问膳食营养数据和图像。整个系统通过FastAPI封装,并兼容OpenAI API,可与Open WebUI等前端界面集成。
主要功能点
- MCP工具托管: 托管并暴露一系列与营养相关的工具,例如获取膳食选项和获取餐点图片。
- 智能膳食推荐: 通过混合搜索(BM25和向量相似性)结合交叉编码重排序,根据用户查询提供个性化的膳食推荐,包含详细营养信息。
- 餐点图片检索: 提供根据餐点名称检索对应图片的功能。
- JSON-RPC通信: MCP服务器通过JSON-RPC协议与客户端通信,接收并处理工具调用请求。
- Stdio传输协议: MCP服务器采用标准输入/输出(Stdio)作为传输协议,方便本地集成和调试。
安装步骤
- Python环境: 确保安装Python 3.13.5,并建议使用虚拟环境。
- 依赖安装: 在项目根目录运行 'pip install -r requirements.txt' 安装所有必要的Python包。
- Docker Desktop: 安装并运行Docker Desktop,用于轻松启动Open WebUI。
- Ollama: 安装并运行Ollama,用于运行本地大语言模型。
- 下载模型: 使用Ollama下载 'qwen3:30b-a3b' 和 'gpt-oss:20b' 模型(例如 'ollama pull qwen3:30b')。你可以选择一个模型使用。
- (可选)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',客户端等待服务器响应的超时时间(秒)。
基本使用方法
- 启动MCP服务器: 在项目根目录的命令行中运行 'python3 mcp_food_server.py'。
- 启动营养服务API桥接: 在另一个命令行中运行 'python3 nutrition_service.py'。这将启动一个兼容OpenAI API的FastAPI服务,它会作为前端代理,内部通过AutoGen代理连接到MCP服务器。
- 配置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桥接服务),即可开始与营养助理聊天。
- (可选)使用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与计算