Skip to content

启用 MCP 服务

MCP 服务是数据墙DBW 的内置能力,默认开启。你可以在全局和实体两个层级控制 MCP 的启用范围和行为。

MCP 服务实现 MCP 协议版本 2025-06-18,支持两种传输方式:streamable HTTP(适合标准托管场景)和 stdio(适合本地开发或 CLI 场景)。

IMPORTANT

数据墙DBW 的 SQL MCP 服务器刻意不支持 NL2SQL。它采用 NL2DBW 模式——依托安全的数据墙DBW 实体抽象层与内置查询构造器,以完全确定性的方式生成准确、格式良好的 T-SQL。这避免了 NL2SQL 带来的风险、额外成本和干扰。同时,MCP 服务器面向数据操作(DML)而非 schema 变更(DDL),符合生产环境中 MCP 的典型使用方式。

全局配置

json
{
  "runtime": {
    "mcp": {
      "enabled": true,
      "path": "/mcp",
      "dml-tools": {
        "describe-entities": true,
        "create-record": true,
        "read-records": true,
        "update-record": true,
        "delete-record": true,
        "execute-entity": true,
        "aggregate-records": {
          "enabled": true,
          "query-timeout": 30
        }
      }
    }
  }
}

配置字段

字段说明默认值
enabled全局启用 MCP 服务true
pathHTTP 模式下 MCP 端点路径,Stdio 模式忽略"/mcp"
description向 MCP 客户端说明服务器用途的 instructions 字段
dml-toolsDML 工具开关,布尔值(全部开/关)或对象(逐个控制)全部启用

dml-tools 两种写法

布尔值(全部统一控制):

json
{
  "dml-tools": true
}

对象(逐个控制):

json
{
  "dml-tools": {
    "describe-entities": true,
    "read-records": true,
    "delete-record": false
  }
}

aggregate-records 支持额外的 query-timeout 字段(1–600 秒,默认 30):

json
{
  "aggregate-records": {
    "enabled": true,
    "query-timeout": 120
  }
}

CLI 配置

bash
# 全局开关
dab configure --runtime.mcp.enabled true

# 逐一控制工具
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.delete-record false
dab configure --runtime.mcp.dml-tools.aggregate-records.query-timeout 60

实体级 MCP 控制

每个实体可以独立控制是否对 MCP 代理暴露:

json
{
  "Book": {
    "source": { "object": "dbo.books", "type": "table" },
    "mcp": {
      "dml-tools": true
    }
  },
  "SensitiveData": {
    "source": { "object": "dbo.sensitive", "type": "table" },
    "mcp": {
      "dml-tools": false
    }
  }
}

默认行为:未配置 mcp 字段的实体自动参与 MCP,等同于 "dml-tools": true

为什么要在实体级禁用

场景做法
敏感数据表不希望被 AI 代理访问实体级 dml-tools: false
仅对 REST/GraphQL 客户端暴露的表同上
内部管理表,仅运维人员使用同上

CLI 配置

bash
dab update SensitiveData --mcp.dml-tools false

两种传输模式

模式启动方式适用场景网络端口
Streamable HTTPdab start远程服务、多客户端共享开放
Stdiodab start --mcp-stdio本地开发、进程内集成不开放

HTTP 模式

服务正常启动,MCP 端点与 REST、GraphQL 并行运行在同一个端口上。客户端通过 http://host:5000/mcp 访问。

Stdio 模式

服务不打开网络端口,通过标准输入/输出(stdin/stdout)与 MCP 客户端进程通信。适用于 VS Code + GitHub Copilot、Claude Desktop 等本地代理。

启动验证

启动服务后,确认 MCP 端点可访问:

bash
# HTTP 模式
curl http://localhost:5000/mcp

# Stdio 模式(由 MCP 客户端管理进程,无需手动验证)

MCP 端点遵循 MCP 协议规范,客户端通过 initializetools/listtools/call 等标准协议交互。

下一步

NOTE

read_records 工具的结果会自动使用数据墙DBW 的缓存系统进行缓存。缓存全局启用并按实体可配置,支持一级缓存和二级缓存。

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