本章面向希望扩展 ShardingSphere-MCP 的开发者。 用户安装和使用请查看用户手册,协议表面请查看技术参考。
MCP 子链路按 api + support + features + core + bootstrap 分层组织:
mcp/api:public tool/resource handler 契约、descriptor 类型、协议 response 和 MCP 协议异常。mcp/support:database metadata、execution、capability、workflow context、模型、facade、SPI 和复用 helper。mcp/features/encrypt:Encrypt MCP feature。mcp/features/mask:Mask MCP feature。mcp/core:handler 发现、registry、request scope、session、SQL execution trace、metadata discovery 和 runtime context。mcp/bootstrap:基于 MCP Java SDK 的 bootstrap、HTTP/STDIO transport、配置加载和生命周期管理。distribution/mcp:独立打包、启动脚本、配置和 Dockerfile。test/e2e/mcp:端到端契约验证。mcp/bootstrap 只负责发布聚合后的协议表面,不应硬编码具体 feature 业务。
新增 feature 的推荐路径:
mcp/features/<feature> 下创建模块。mcp/api。mcp/support。mcp/core。mcp/bootstrap。MCPHandlerProvider。getToolHandlers() 和 getResourceHandlers() 返回 feature 自己暴露的 handlers。MCPWorkflowDefinitionProvider。src/main/resources/META-INF/services/ 注册 org.apache.shardingsphere.mcp.api.MCPHandlerProvider。META-INF/shardingsphere-mcp/mcp-descriptors 下添加 descriptor。如果 feature 要作为官方默认能力随发行包提供,还需要:
mcp/features/pom.xml。distribution/mcp/pom.xml。如果 feature 是可选插件,构建后把 jar 放入发行包 plugins/ 目录。
对外新增 tool:
MCPToolHandler<T extends MCPHandlerContext>。对外新增 resource:
MCPResourceHandler<T extends MCPHandlerContext>。运行时代码需要 descriptor 时,应使用 canonical tool name 或 resource URI template,通过 MCPDescriptorCatalogIndex 从 catalog 解析。
不要在 handler 内重复维护 descriptor 字段。
MCPServiceHandlerContext。MCPDatabaseHandlerContext。MCPWorkflowHandlerContext。shardingsphere://features/<feature>/... 命名空间。Descriptor 应说明模型如何使用协议表面,而不是只重复 tool 名或 URI。
维护时应包含:
Tool annotations 只是客户端提示,不能替代运行时校验、SQL 安全检查、用户审批或服务端授权。
