连接 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.jsonrole:<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 startMCP 端点地址:http://host:5000/mcp
使用 MCP Inspector 调试
MCP Inspector 是官方调试工具,可以以代理模式连接 HTTP MCP 端点:
bash
npx -y @modelcontextprotocol/inspector http://localhost:5000/mcpInspector 通过代理转发请求,自动处理 CORS 和会话头的兼容性问题。
自定义 MCP 路径
json
{
"runtime": {
"mcp": {
"enabled": true,
"path": "/my-mcp-endpoint"
}
}
}Stdio vs HTTP 选择
| 维度 | Stdio | HTTP |
|---|---|---|
| 网络端口 | 不开放 | 监听端口 |
| 认证方式 | Simulator(自动) | 配置文件指定 |
| 多客户端共享 | 不支持 | 支持 |
| 进程管理 | 客户端管理 | 独立启动和管理 |
| 适用场景 | 本地开发、IDE 集成 | 远程服务、生产部署 |
常见问题
Stdio 模式启动失败
错误 Failed to start the engine in MCP stdio mode:
- 运行
dab validate检查配置文件是否正确。 - 确认数据库连接字符串可达。
- 确认
runtime.mcp.enabled为true。
代理端的工具列表中看不到实体
- 确认实体级
mcp.dml-tools未设为false。 - 确认全局
dml-tools未整体关闭。 - 确认当前角色在该实体上有对应的权限。
Stdio 模式输出乱码
将日志级别设为 Error 减少 stdout 输出,并确认没有启动脚本向 stdout 输出非 MCP 消息。
下一步
- 启用 MCP 服务 — 全局和实体级 MCP 配置。
- 配置 MCP 身份验证 — 入站认证配置。
