数据脱敏 MCP 功能插件帮助 MCP 客户端把脱敏需求规划成 ShardingSphere-Proxy 可执行的 DistSQL 和校验步骤。 脱敏规则直接作用于逻辑列,不生成加密功能使用的物理派生列。
runtimeDatabases 应指向 Proxy 逻辑库,而不是底层物理存储库。| 能力 | 怎么调用 | 什么时候用 |
|---|---|---|
database_gateway_plan_mask_rule |
通过 tools/call 调用。 |
用户提出创建、调整或删除脱敏规则需求时,用它生成 plan_id、DistSQL 和校验步骤。 |
database_gateway_apply_workflow |
通过 tools/call 调用,并传入规划阶段返回的 plan_id。 |
先预览计划,再在审查后执行,或导出人工执行包。 |
database_gateway_validate_workflow |
通过 tools/call 调用,并传入同一个 plan_id。 |
自动执行或人工执行完成后,校验规则状态、逻辑元数据和 SQL 可执行性。 |
shardingsphere://features/mask/algorithms |
通过 resources/read 读取。 |
规划前查看 Proxy 当前可见的脱敏算法类型和参数要求。 |
shardingsphere://features/mask/databases/{database}/rules |
填充 {database} 后通过 resources/read 读取。 |
规划修改前查看逻辑库已有脱敏规则。 |
shardingsphere://features/mask/databases/{database}/tables/{table}/rules |
填充 {database} 和 {table} 后通过 resources/read 读取。 |
只关心单表脱敏规则,或需要保留同表其他列规则时读取。 |
plan_mask_rule |
通过 prompts/get 获取提示。 |
客户端希望先引导模型读取表结构、算法和已有规则,再调用规划工具时使用。 |
plan_mask_rule 补全 |
通过 completion/complete 获取候选值。 |
为 database、schema、table、column、algorithm_type 或 plan_id 补全。 |
创建或修改脱敏规则时,规划工具主要使用以下输入:
| 参数 | 是否必填 | 作用 |
|---|---|---|
database |
必填 | ShardingSphere-Proxy 暴露的逻辑库名称。 |
table |
必填 | 要配置脱敏规则的逻辑表。 |
column |
必填 | 要配置脱敏规则的逻辑列。 |
schema |
可选 | schema 或 namespace;多 schema 逻辑库建议填写。 |
natural_language_intent |
推荐 | 描述脱敏目标,例如手机号保留位数或替换字符;当未显式填写规则细节时,MCP 会用它推断规划意图。 |
operation_type |
可选 | 规则操作类型;支持 create、alter 和 drop。不填写时由 MCP 根据自然语言和现有规则推断。 |
algorithm_type |
可选 | 脱敏算法类型;如果希望 MCP 基于可用算法给出建议,可以先不填。 |
primary_algorithm_properties |
按算法必填 | 脱敏算法参数,例如保留位数和替换字符。具体参数以算法资源返回值为准。 |
删除脱敏规则时,至少提供:
databasetablecolumnoperation_type=drop规划脱敏规则就是调用 database_gateway_plan_mask_rule。
它只生成可审查的计划,不直接修改数据库。
{
"jsonrpc": "2.0",
"id": "mask-plan-1",
"method": "tools/call",
"params": {
"name": "database_gateway_plan_mask_rule",
"arguments": {
"database": "<logic-database>",
"table": "orders",
"column": "phone",
"natural_language_intent": "把 phone 当作手机号做脱敏,保留前3后4",
"algorithm_type": "KEEP_FIRST_N_LAST_M",
"primary_algorithm_properties": {
"first-n": "3",
"last-m": "4",
"replace-char": "*"
}
}
}
}
典型结果:
plan_id。status 为 planned 或 clarifying。distsql_artifacts 包含 CREATE/ALTER MASK RULE。ddl_artifacts 通常为空。index_plan 通常为空。如果自然语言没有说清算法或缺少算法属性,MCP 会返回 clarifying。
此时应继续使用同一个 plan_id 补齐 clarification_questions 中要求的字段。
规划工具返回 plan_id 后,再使用通用工作流工具处理执行和校验。
执行前先预览:
{
"name": "database_gateway_apply_workflow",
"arguments": {
"plan_id": "${PLAN_ID}",
"execution_mode": "preview"
}
}
确认变更产物后执行:
{
"name": "database_gateway_apply_workflow",
"arguments": {
"plan_id": "${PLAN_ID}",
"execution_mode": "review-then-execute"
}
}
校验:
{
"name": "database_gateway_validate_workflow",
"arguments": {
"plan_id": "${PLAN_ID}"
}
}
校验重点:
rule_validationlogical_metadata_validationsql_executability_validation{
"jsonrpc": "2.0",
"id": "mask-drop-1",
"method": "tools/call",
"params": {
"name": "database_gateway_plan_mask_rule",
"arguments": {
"database": "<logic-database>",
"table": "orders",
"column": "phone",
"operation_type": "drop"
}
}
}
如果同一个表上还有其他脱敏列,MCP 会生成 ALTER MASK RULE 并保留这些同表规则。
只有目标表不再保留任何脱敏列时,MCP 才会生成 DROP MASK RULE。
