Skip to content

MCP

MCP(Model Context Protocol,模型上下文协议)是一项开放标准,定义了 AI 代理如何发现和调用外部工具。数据墙DBW 内置了 MCP 服务端能力,将数据库操作以标准 MCP 工具的形式暴露给 AI 代理和 MCP 客户端。

MCP 与 REST、GraphQL 的关系

三种访问方式共享同一套实体配置和权限模型:

协议主要消费方特点
RESTWeb、移动端、低代码标准 HTTP API,支持 OData 风格查询
GraphQL数据分析、灵活查询声明式查询,按需取字段
MCPAI 代理、智能应用工具发现,代理自主调用

配置一次实体和权限,三种协议同时可用。MCP 的工具描述、参数定义、权限边界都从实体配置自动生成。

七个 DML 工具

数据墙DBW 通过 MCP 暴露七个 DML(数据操作语言)工具:

工具对应数据库操作
describe_entities列出可访问的实体、字段和描述
read_records查询数据,支持筛选排序分页
create_record创建记录
update_record更新记录
delete_record删除记录
execute_entity调用存储过程
aggregate_records聚合统计

代理通过 tools/list 发现可用工具,通过 tools/call 执行操作。引擎根据调用参数生成确定性的 SQL,代理不需要理解 SQL 语法。

代理调用 describe_entities 工具可以了解当前角色有权访问的实体列表、字段结构和描述信息,这有助于代理理解数据含义后再决定调用哪个数据操作工具。

两种传输模式

模式端点适用场景
Streamable HTTP/mcp标准服务部署
Stdio进程管道本地开发、CLI 工作流

Stdio 模式下可通过 dab start --mcp-stdio 启动,适用于 MCP 客户端以子进程方式连接数据墙DBW。

安全模型

MCP 工具完全遵守数据墙DBW 的 RBAC 体系。代理只能看到当前角色有权限的实体和操作,未授权的实体不出现在工具列表中。字段过滤和行级策略同样对 MCP 调用生效。

可以在全局或按实体控制是否启用 MCP 工具。某个表只想给 REST 客户端用——不在该实体的 MCP 权限中配置即可。

设计边界

数据墙DBW 的 MCP 实现有两个明确的设计边界:

  • 只支持 DML,不支持 DDL:代理不能建表、改结构或执行原始 SQL。聚焦数据操作,这是生产环境中 AI 代理与数据库交互的推荐安全边界。
  • 不支持 NL2SQL:代理不生成 SQL 语句。它描述想做什么,引擎生成确定性的查询。这避免了 SQL 注入风险、语法错误和模型不确定性问题。

自定义工具与语义描述

存储过程可以注册为命名 MCP 工具(mcp.custom-tool: true),代理按名称直接调用。为实体、字段和参数添加 description 能帮助代理理解数据含义——描述越清晰,代理表现越准确。

数据墙DBW 产品文档与开发指南。