feat: 新增 HTTP MCP Server,让 AI Agent 接入选菜
新增 packages/mcp,基于 Streamable HTTP 暴露菜谱库能力,复用 packages/cook 的选菜算法:recommend_recipes 按现有食材推荐,search_recipes 条件检索,check_incompatible 食材相克,get_recipe 菜谱详情。容器内与 nginx 共存,映射 2230 端口供 Agent 连接。
This commit is contained in:
+27
-1
@@ -13,6 +13,7 @@ ENV NUXT_TELEMETRY_DISABLED=1
|
||||
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
COPY apps/web/package.json apps/web/package.json
|
||||
COPY packages/cook/package.json packages/cook/package.json
|
||||
COPY packages/mcp/package.json packages/mcp/package.json
|
||||
COPY docs/package.json docs/package.json
|
||||
|
||||
RUN pnpm install --frozen-lockfile
|
||||
@@ -33,13 +34,38 @@ ENV CF_PAGES_COMMIT_SHA=${CF_PAGES_COMMIT_SHA}
|
||||
# 构建产物输出到仓库根目录的 dist/(见 scripts/copy-web-output.ts)
|
||||
RUN pnpm run build
|
||||
|
||||
# MCP Server 依赖 @yunyoujun/cook 的构建产物,根 build 不含它,需单独构建
|
||||
RUN pnpm -C packages/cook run build \
|
||||
&& pnpm -C packages/mcp run build
|
||||
|
||||
# MCP Server 的生产依赖(含 workspace 包 @yunyoujun/cook 的构建产物)
|
||||
RUN pnpm --filter @cook/mcp deploy --legacy --prod /app/mcp-deploy
|
||||
|
||||
# ---------- 运行阶段 ----------
|
||||
FROM nginx:stable-alpine
|
||||
|
||||
# MCP Server 需要 Node 运行时,与 nginx 共存于同一容器
|
||||
RUN apk add --no-cache nodejs npm \
|
||||
&& mkdir -p /data
|
||||
|
||||
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
|
||||
COPY --from=builder /app/dist /usr/share/nginx/html
|
||||
|
||||
EXPOSE 2229
|
||||
COPY --from=builder /app/mcp-deploy /opt/cook-mcp
|
||||
COPY --from=builder /app/packages/data/recipe.csv /data/recipe.csv
|
||||
COPY --from=builder /app/packages/data/incompatible-foods.csv /data/incompatible-foods.csv
|
||||
|
||||
COPY docker/entrypoint.sh /usr/local/bin/cook-entrypoint
|
||||
RUN chmod +x /usr/local/bin/cook-entrypoint
|
||||
|
||||
ENV COOK_DATA_DIR=/data \
|
||||
COOK_MCP_PORT=2230 \
|
||||
COOK_MCP_HOST=0.0.0.0 \
|
||||
COOK_MCP_PATH=/mcp
|
||||
|
||||
EXPOSE 2229 2230
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||
CMD wget -qO- http://127.0.0.1:2229/ >/dev/null || exit 1
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/cook-entrypoint"]
|
||||
|
||||
Reference in New Issue
Block a user