MCP 服务器
预计阅读时间: 8 分钟 预计阅读时间: 8 分钟summer-mcp 是 Summerrs Admin 面向 AI 工具的工程入口。它基于 rmcp 实现 MCP Server,可以把数据库 schema、通用表工具、代码生成器、菜单/字典业务工具暴露给支持 MCP 的客户端。
主应用在 crates/app/src/main.rs 中注册:
McpPlugin 依赖 SeaOrmPlugin,启动时会:
- 读取
[mcp]配置。 - 检查
enabled。 - 取得
DatabaseConnection。 - 校验数据库后端必须是 PostgreSQL。
- 根据
transport和http_mode选择嵌入主路由或独立启动。
配置
开发和生产环境可以通过 [mcp] 配置启用 MCP:
默认 Host 白名单在代码中是:
可以通过 allowed_hosts、allowed_origins 收紧 HTTP 访问来源。生产环境不要把 MCP 直接暴露到公网。
运行模式
默认以 embedded HTTP 运行时,path = "/mcp"。如果 Web 层另外配置了全局前缀,最终路径会叠加该前缀;否则就是主应用上的 /mcp。系统业务 API 由 app router 挂在 /api 下,这两个路径分别服务 MCP 客户端和后台业务接口。
standalone 二进制入口是:
stdio 模式适合本地 AI 工具通过子进程连接:
能力总览
第一次连接时建议调用 server_capabilities。它会返回:
这是给 AI 客户端的运行时快照,比让客户端猜工具是否可用更稳。
资源
AdminMcpServer 发布了一个资源和一个资源模板:
推荐工作流是先读资源再调用工具:
不要让 AI 在没读 schema 的情况下猜字段名。
通用表工具
summer-mcp/src/table_tools/router.rs 提供通用 CRUD:
这些工具默认面向 PostgreSQL。很多参数都支持显式 schema;指定 schema 时,工具会在事务内设置 search_path 或生成带 schema 的 SQL。
SQL 工具
MCP 还提供两个 SQL 逃生口:
sql_query_readonly 会把用户 SQL 规范化成只读子查询并加 limit。sql_exec 用于明确的写入或 DDL,不应该拿来做普通查询。
这两个工具都比通用表工具危险。优先级建议是:
代码生成工具
后端生成器:
前端生成器:
generator_capability_catalog 里声明了两个 target preset:
生成工具支持临时输出目录。建议先输出到 /tmp/... 检查,确认后再移动到目标项目。
菜单和字典工具
菜单和字典建议通过 MCP 业务工具管理,避免让 AI 直接写 SQL 修改树结构和枚举数据:
推荐流程:
这样比手写 SQL 更不容易破坏树结构、排序、权限标识和字典约束。
Prompt 模板
MCP Server 发布了三套 prompt:
如果客户端支持 MCP prompts,优先使用这些 prompt,可以减少 AI 越过资源读取直接猜结构的情况。
安全边界
MCP 是开发/运维工具,不是租户用户 API。
部署注意事项:
- 只支持 PostgreSQL,非 PostgreSQL 会在启动时失败。
- embedded HTTP 模式跟主应用同进程,但不等于自动套用
summer-system的 JWT/RBAC。 - standalone 默认绑定
127.0.0.1:9090,不要随意改成0.0.0.0。 sql_exec可以执行 DDL/DML,只应在可信环境开放。- 生产环境应配置 Host/Origin 白名单,并通过网络层或反向代理限制访问。
- 多租户场景下,MCP 面向真实数据库结构,不适合作为普通租户工具开放。
和系统后台的关系
MCP 和系统后台共享数据库连接,也复用 summer-domain 中的菜单、字典领域服务。但 MCP 本身不是 summer-system/src/router 的一个普通业务接口。
系统后台负责给人使用的管理界面和 API;MCP 负责给 AI 工具提供结构化、受控的工程操作入口。
