|
|
7b9dfa7851
|
feat(mcp): tracer bullet — /mcp 端点骨架与 search_posts 工具
T1 探针式实现,接通端到端链路并验证双目标编译:
- 依赖:rmcp=3.0.0-beta.3(server/macros/transport-streamable-http-server/
transport-worker)+ aes-gcm,均经 server feature 门控。
- 迁移 017_mcp_tokens:UUID 主键、scope 约束、token_enc 密文 + token_hash
唯一索引(仅未撤销),users.id 外键级联。
- 模型 src/models/mcp_token.rs:TokenScope(read<write<admin 偏序,grants)+
McpToken/McpTokenSummary/CreateTokenResponse DTO。
- src/mcp/(server-only):
- crypto.rs:AES-GCM-256 加解密(hex 密钥、每次独立 nonce、8 项单测)。
- auth.rs:bearer→SHA-256→DB 常量查找→注入 McpPrincipal,刷新 last_used_at。
- server.rs:rmcp ServerHandler,search_posts 工具(read 作用域,pg_trgm 查询)。
- router.rs:StreamableHttpService(无状态+JSON 响应+Origin 白名单)挂载 /mcp。
- main.rs:merge mcp_route 到应用路由;models/mod.rs 注册 mcp_token 模块。
验证:rmcp+axum-0.8 兼容性经临时探针实测(tools/list、tools/call、Origin→403、
bearer→工具 principal 全链路);--features web 与 --features server 均编译通过;
clippy --all-features -D warnings 干净;639 单测+1 集成 +13 新 MCP 测试全绿。
|
2026-07-28 11:09:55 +08:00 |
|