Skip to main content

Module router

Module router 

Source
Expand description

构建并返回挂载于 /mcp 的 axum 子路由。

装配:

  • rmcp StreamableHttpService(无状态、JSON 响应、Origin 白名单 + Host 白名单);
  • 本 crate 的 mcp_auth_middleware(bearer → McpPrincipal,注入 extensions);

两道白名单都源自 APP_BASE_URL

  • Origin:整串(含 scheme),rmcp 按 scheme+host 校验 Origin 头;
  • Host:仅 host 部分,加入 rmcp 的 DNS-rebinding 防护默认表(localhost/127.0.0.1/::1)。 生产反代 proxy_set_header Host $host 会把真实域名转发进来,必须加入否则 rmcp 一律 403。

未设置 APP_BASE_URL 则两者均空(rmcp 对缺 Origin 放行;Host 回退默认表仅本地可用)。 开发期额外放行 0.0.0.0(dx 代理改写 Host 的容错),生产域名态保持严格。 生产部署 MUST 设置 APP_BASE_URL(见 docs/DEPLOYMENT.md)。 协议版本头、体积上限(4MiB 默认)由 rmcp 内置,无需此处重复。

Functions§

mcp_route
构建 /mcp 子路由(供 main.rs 的 .merge(mcp_route) 合并)。