MCP 服务器
预计阅读时间: 7 分钟 预计阅读时间: 7 分钟summer-mcp 是一个内嵌的 MCP (Model Context Protocol) 服务器,基于 rmcp (Rust 官方 SDK) 实现。它把项目内部的数据库 schema、CRUD 工具、代码生成器、菜单/字典业务工具,以 MCP 协议暴露给 AI 助手(Claude Desktop / Cursor / Cline / Continue 等)。
两种运行模式
由 [mcp] 配置段的 http_mode 决定:
standalone 启动
暴露的能力
AdminMcpServer (crates/summer-mcp/src/server.rs) 提供三大类:
1. 资源(Resource)
AI 调用工具前,先让它读资源确认真实表结构。这样不容易凭空捏造字段名。
2. 工具(Tool)
crates/summer-mcp/src/tools/ 与 crates/summer-mcp/src/table_tools/:
通用表工具(table_tools/)
这些是通用 CRUD,不需要为每张表单独建工具。AI 拿到
schema://table/xxx之后就能直接调。
SQL 逃生口
代码生成器(tools/)
业务工具
3. Prompt 模板
crates/summer-mcp/src/prompts.rs:
用 Claude Desktop 接入
~/Library/Application Support/Claude/claude_desktop_config.json:
或者用 stdio:
用 Cursor / Cline 接入
Cursor .cursor/mcp.json:
实战:用 AI 生成一个 CRUD 模块
假设你刚加了 sys.tag 表,想让 AI 把整套代码生成出来:
- 在 Claude Desktop / Cursor 里打开项目
- 让 AI 用
discover_table_workflowprompt 探查表 - AI 会先读
schema://table/sys.tag - 让它执行
generate_entity_from_table(table="sys.tag")生成 Entity generate_admin_module_from_table(table="sys.tag")生成后端 router/service/dto/vogenerate_frontend_bundle_from_table(table="sys.tag", target_preset="art_design_pro")生成前端- AI 把代码写到对应文件夹
- 你跑
cargo build验证编译通过
整个过程不需要写一行 boilerplate。
实战:批量改菜单
不要让 AI 写 SQL 改 sys.menu 表(容易破坏关系树)。让它用 menu_tool:
menu_tool 内部:
- 检查父菜单是否存在
- 检查
perm是否冲突 - 排序自动算
- 失败时回滚
与 SQL 改写的协作
McpPlugin::build 会校验 DatabaseConnection 是 PostgreSQL,然后挂上 axum router。MCP 操作不走租户隔离——它是开发工具,看的是真实 schema,不要让租户上下文污染它。
如果生产部署里担心 MCP 被滥用,直接 [mcp].enabled = false 关掉,或者只在 dev profile 里开。
服务器能力快照
调用 server_capabilities 工具能拿到一份运行时快照:
适合 AI 第一次连接时用来"自我介绍",省得它去猜你启用了什么。
安全考量
- 生产慎开 SQL 工具 ——
sql_exec能跑任意 DDL/DML,只在内网 / 信任环境用 - MCP 监听地址 —— standalone 默认
127.0.0.1:9090,不要绑0.0.0.0 - 认证 —— 当前 embedded 模式不要求 token(走主应用的网络层访问控制),standalone 模式建议套一层反代或网络隔离
- 审计 —— 所有工具调用应该走主应用的操作日志(后续会接入
LogBatchCollectorPlugin)
参考源码
- 入口:
crates/summer-mcp/src/lib.rs - 插件:
crates/summer-mcp/src/plugin.rs - Server:
crates/summer-mcp/src/server.rs - 运行时(embedded/standalone):
crates/summer-mcp/src/runtime.rs - 配置:
crates/summer-mcp/src/config.rs - Prompt:
crates/summer-mcp/src/prompts.rs - 通用表工具:
crates/summer-mcp/src/table_tools/ - 代码生成器:
crates/summer-mcp/src/tools/ - skill 文档:
skills/summerrs-admin/references/mcp-generator.md
