使用说明
麦蒂
从生成的MCP(模型上下文协议)服务器 米莉 OpenAPI规范公开Mealie的REST API作为AI代理(例如Claude、Cursor)的MCP工具 流式HTTP.
特性
- 由OpenAPI生成:所有Mealie API终点(食谱、购物清单、用餐计划等)都作为MCP工具进行曝光。
- 流式HTTP传输:基于HTTP的MCP,因此可以将其部署为web服务并由远程MCP客户端使用。
- 可配置的基本URL:设置
MEALIE_BASE_URL或BASE_URL指向你的Mealie实例。 - 认证:Mealie使用OAuth2密码载体。通过env设置Mealie API令牌(或OIDC令牌)。
- 营养计划:包括
nutrition_tdee_calculate默认情况下,使用Mifflin St Jeor和Cunningham(当明确要求提供身体脂肪数据时)进行成人TDEE和卡路里目标估算。
快速启动(本地)
npm install
cp .env.example .env
# Edit .env: set MEALIE_BASE_URL and OAUTH_TOKEN_OAUTH2PASSWORDBEARER (or BEARER_TOKEN_OAUTH2PASSWORDBEARER)
npm run build
npm run start:http
- MCP端点:
http://localhost:<PORT>/mcp(默认端口=3031) - 测试客户端:
http://localhost:<PORT>
要使用其他端口,请设置 PORT 在您的环境或 .env.
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
PORT |
HTTP端口(可配置) | 3031 |
MEALIE_BASE_URL 或 BASE_URL |
Mealie实例URL(例如。 https://mealie.example.com) |
https://mealie.example.com |
BEARER_TOKEN_OAUTH2PASSWORDBEARER 或 OAUTH_TOKEN_OAUTH2PASSWORDBEARER |
Mealie API代币(来自Mealie Admin→ API令牌,或您的OIDC访问令牌) | - |
ENRICHMENT_CACHE_ENABLED |
启用内存中的食物富集缓存 | true |
ENRICHMENT_CACHE_TTL_HOURS |
缓存TTL以进行价格/营养丰富查找 | 24 |
码头工人
docker build -t mealie-mcp .
docker run -p 3031:3031 \
-e MEALIE_BASE_URL=https://mealie.example.com \
-e BEARER_TOKEN_OAUTH2PASSWORDBEARER=your-token \
mealie-mcp
# Different port: docker run -p 3032:3032 -e PORT=3032 -e MEALIE_BASE_URL=... -e BEARER_TOKEN_...=... mealie-mcp
MCP客户端配置
将MCP客户端指向StreamableHTTP URL,例如:
- 光标:使用URL添加MCP服务器
https://mealie-mcp.yourdomain.com/mcp(如果部署在HTTPS之后)。 - 克劳德桌面版:在MCP设置中配置服务器URL。
会话标头: mcp-session-id (可选;服务器支持传输/会话重用)。这与 mealie_start_session 该工具目前为未来的集成保留服务器端上下文,而不是为当今的复合工具提供动力。
生成
此服务器是通过以下方式生成的 openapi mcp生成器:
# First export or copy a Mealie OpenAPI document to a local path, e.g.
# /tmp/mealie-openapi.json
# Then run from the repository root:
npx openapi-mcp-generator \
--input /tmp/mealie-openapi.json \
--output . \
--base-url https://mealie.example.com \
--server-name mealie-mcp \
--transport streamable-http \
--port 3031
mealie-openapi.json 未在此存储库中跟踪。更新Mealie规范后重新生成,然后在提交之前检查差异,这样本地自定义工具和文档就不会被盲目覆盖。
测试
- 棉绒:
npm run lint--在TypeScript源代码树和repo测试脚本上运行ESLint。 - 单元测试 (无网络):
npm test--运行确定性食品管道和营养/TDEE测试。 - 膳食计划测试:
npm run test:meal-planning--验证日历安全日期处理和成分规范化助手。 - 仅营养测试:
npm run test:nutrition--验证TDEE方程、目标目标和输入验证。 - 现场测试 (真正的HTTP):
npm run test:live--调用Continente.pt和Open Food Facts来验证食品管道。使用SKIP_CONTINENTE=1或SKIP_NUTRITION=1跳过不稳定的端点。
杂货刮板
注册的商店清洁工住在下面 src/food-pipeline/scrapers/ 并组装在 src/food-pipeline/scrapers/registry.ts.
- 用标记未完成的适配器
isStub: true因此MCP响应发出stub_disabled而不是假装商店返回了一个真正的空结果。 - 移除
isStub只有当search()已实现并返回实数PriceResult[]排。 food_price_search丰富工具显示每个商店的结果元数据,以便调用者可以区分ok,empty,error,以及stub_disabled.
定制营养工具
nutrition_tdee_calculate 是一个纯计算MCP工具,因此它不需要Mealie凭据。
输入:
age_years,sex_for_formula,height_cm,weight_kg,activity_level- 可选的
activity_multiplier为了activity_level: "custom" - 可选的
body_fat_pct坎宁安 - 可选的
formula(auto,mifflin_st_jeor,cunningham) - 可选的
goal(maintain,cut,gain,custom)以及goal_delta_kcal
auto 使用Mifflin St Jeor作为主要方程。如果 body_fat_pct 如果提供,坎宁安可能会被遣返 alternative_estimates 作为额外的静息能量参考,但除非 formula: "cunningham" 已通过。
该工具返回静息能量、应用的活动乘数、估计的TDEE、维护和切割/增益目标、归一化输入数据和警告,以帮助代理清楚地解释不确定性。
许可证
MIT。Mealie根据AGPL获得许可;此MCP适配器是单独的层。