Skip to content

连接 MCP 客户端

数据墙DBW 的 MCP 服务支持两种传输模式,对应不同的客户端连接方式。Stdio 适合本地开发,HTTP 适合远程服务。

Stdio 模式:本地进程集成

Stdio 模式下 MCP 客户端以子进程方式启动数据墙DBW,进程间通过标准输入/输出通信。不需要网络端口。

启动命令

bash
dab start --mcp-stdio --config ./dab-config.json

指定角色:

bash
dab start --mcp-stdio role:authenticated --config ./dab-config.json

role:<name> 紧跟在 --mcp-stdio 后面,省略时默认为 anonymous。角色名必须与配置中至少一个实体的 permissions 定义一致。

Stdio 模式的内部行为

行为说明
UTF-8 无 BOM控制台输入输出强制为 UTF-8 编码,避免 MCP 客户端解析失败
Simulator 认证自动将认证提供程序覆盖为 Simulator,跳过真实令牌验证
无 HTTP 监听不绑定任何 TCP 端口,所有 MCP 消息通过 stdin/stdout

推荐将日志级别设为 Error 以减少 stdout 的非 MCP 输出:

bash
dab start --mcp-stdio role:anonymous --config ./dab-config.json --LogLevel Error

配置 VS Code

VS Code 通过项目根目录的 .vscode/mcp.json 配置 Stdio 连接:

json
{
  "servers": {
    "sql-mcp-server": {
      "type": "stdio",
      "command": "数据墙DBW",
      "args": [
        "start",
        "--mcp-stdio", "role:anonymous",
        "--config", "${workspaceFolder}/dab-config.json",
        "--LogLevel", "error"
      ]
    }
  }
}

VS Code 会自动识别该配置,在 MCP: List Servers 面板中显示,并管理进程生命周期。

配置 Claude Desktop

Claude Desktop 通过 claude_desktop_config.json 配置:

json
{
  "mcpServers": {
    "sql-mcp-server": {
      "type": "stdio",
      "command": "数据墙DBW",
      "args": [
        "start",
        "--mcp-stdio", "role:anonymous",
        "--config", "/full/path/to/dab-config.json",
        "--LogLevel", "error"
      ]
    }
  }
}

NOTE

Claude Desktop 配置中需要使用配置文件的绝对路径,不能用相对路径或 ${workspaceFolder}

HTTP 模式:远程服务

HTTP 模式下数据墙DBW 正常运行并监听端口,MCP 端点作为 HTTP 路径对外暴露:

bash
dab start

MCP 端点地址:http://host:5000/mcp

使用 MCP Inspector 调试

MCP Inspector 是官方调试工具,可以以代理模式连接 HTTP MCP 端点:

bash
npx -y @modelcontextprotocol/inspector http://localhost:5000/mcp

Inspector 通过代理转发请求,自动处理 CORS 和会话头的兼容性问题。

自定义 MCP 路径

json
{
  "runtime": {
    "mcp": {
      "enabled": true,
      "path": "/my-mcp-endpoint"
    }
  }
}

Stdio vs HTTP 选择

维度StdioHTTP
网络端口不开放监听端口
认证方式Simulator(自动)配置文件指定
多客户端共享不支持支持
进程管理客户端管理独立启动和管理
适用场景本地开发、IDE 集成远程服务、生产部署

常见问题

Stdio 模式启动失败

错误 Failed to start the engine in MCP stdio mode

  • 运行 dab validate 检查配置文件是否正确。
  • 确认数据库连接字符串可达。
  • 确认 runtime.mcp.enabledtrue

代理端的工具列表中看不到实体

  • 确认实体级 mcp.dml-tools 未设为 false
  • 确认全局 dml-tools 未整体关闭。
  • 确认当前角色在该实体上有对应的权限。

Stdio 模式输出乱码

将日志级别设为 Error 减少 stdout 输出,并确认没有启动脚本向 stdout 输出非 MCP 消息。

下一步

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