使用MCP服务
Agent 数据网关 MCP 服务将数据资产发现、权限查询、DataWiki 知识检索和 SQL 执行能力封装为标准 MCP 工具。将服务配置到支持 MCP 的 AI 客户端后,Agent 可以在数据网关既有的身份、权限、安全策略和审计约束内访问企业数据。本文介绍如何配置和使用 Agent 数据网关 MCP 服务。
功能概述
Agent 数据网关 MCP 服务基于 MCP(Model Context Protocol)Streamable HTTP 协议,把数据网关的核心能力开放给支持 MCP 的 AI 客户端(如 Qoder、Cursor、Codex、Claude Code、OpenCode)。配置完成后,AI 客户端中的 Agent 可以调用标准 MCP 工具完成数据资产发现、权限核对、知识检索和 SQL 执行等操作,全过程遵循数据网关既有的身份、权限、安全策略和审计约束。
MCP 服务具备以下特性:
传输协议:MCP Streamable HTTP。
身份认证:每个请求需携带
Authorization: Bearer <Access Token>。权限边界:MCP 不扩大用户权限,调用继续执行数据网关的 ACL、安全策略和审计。
凭证处理:MCP 服务不保存用户的 Access Token。
准备工作
使用 MCP 服务前,请完成以下准备:
登录Agent 数据网关控制台,开通服务并创建 Agent 身份。具体操作,请参见快速接入Agent数据网关。
为该 Agent 身份授予需要访问的实例或数据权限。具体操作,请参见管理数据源和管理 Agent 身份与权限。
获取对应地域(Region)的 Agent Access Token。
选择与 Access Token 相同地域的 MCP Endpoint。
Access Token 有效期届满、被吊销或所在地域与 Endpoint 不匹配时,服务将拒绝请求。请勿将完整 Token 放入 Prompt、截图、日志或代码仓库。
服务 Endpoint
MCP 服务按地域提供独立的 Endpoint。请根据 Access Token 所在地域选择对应的 Endpoint。当前正式环境支持以下地域:
地域 | MCP Endpoint |
华东1(杭州) |
|
华东2(上海) |
|
华北2(北京) |
|
华南1(深圳) |
|
华北3(张家口) |
|
中国香港 |
|
新加坡 |
|
马来西亚(吉隆坡) |
|
日本(东京) |
|
Endpoint 路径固定为 /mcp/dgate。Access Token、资源和 Endpoint 必须属于同一地域,跨地域调用会返回错误码 401。
配置 MCP 客户端
在 MCP 客户端的配置中加入以下内容,并将 Endpoint 与 Access Token 替换为您的正式环境信息:
{
"mcpServers": {
"dgate": {
"url": "https://dgate-mcp-cn-hangzhou.aliyuncs.com/mcp/dgate",
"headers": {
"Authorization": "Bearer <ACCESS_TOKEN>"
}
}
}
}不同客户端的配置文件位置和界面入口可能不同,但核心配置只有两项:MCP URL 和 Authorization Header。保存后请重新加载 MCP 服务;部分客户端需要重启或新建会话才能刷新工具列表。
验证连接与权限
在 AI 客户端中验证
配置完成后,您可以在 AI 客户端中直接向 Agent 发出以下指令,验证工具是否可用:
请检查 dgate MCP 是否可用,并按顺序执行:
1. 调用 acl_whoami,确认当前身份;
2. 调用 acl_my_permissions,列出当前真实数据权限;
3. 调用 meta_catalog_list,列出可见的数据实例;
4. 如果存在已授权数据库,调用 exec_sql 执行 SELECT 1;
5. 汇总每一步的状态;失败时给出 errorCode、errorMessage 和 requestId,不要输出 Access Token。满足以下条件时,表示接入成功:
客户端能够发现 dgate 工具。
acl_whoami能返回当前 Agent 身份。acl_my_permissions能返回授权清单或明确的空清单。对已授权数据库执行只读语句成功。
使用 curl 验证协议链路
您也可以使用 curl 直接验证 MCP 协议链路:
curl -sS -X POST \
'https://dgate-mcp-cn-hangzhou.aliyuncs.com/mcp/dgate' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'连接成功时返回 HTTP 200,且 result.serverInfo.name 为 dgate-mcp。
工具清单
当前正式服务注册 13 个 MCP 工具,按用途分为元数据、数据源、权限、知识、执行和扩展六类。
分类 | 工具 | 用途 |
元数据 |
| 列出当前身份可见的数据实例。 |
| 按关键词、资源类型或数据库类型搜索实例。 | |
| 列出指定实例下的数据库。 | |
| 列出指定数据库下的表。 | |
| 查看指定表的字段、类型和注释。 | |
| 查看指定表的索引定义。 | |
数据源 |
| 列出数据源的管控面元数据。 |
权限 |
| 查询当前身份的平台角色与管理员标记。 |
| 查询当前身份被授予的真实数据权限。 | |
知识 |
| 检索 DataWiki 中的表含义、样例 SQL 和业务口径。 |
执行 |
| 通过数据网关执行单条 SQL 或命令并返回结果。 |
扩展 |
| 查看可供扩展调用的 Action 及参数。 |
| 调用尚未提供专属工具的长尾管控 Action。 |
常用参数说明:
列表类工具使用
MaxResults和NextToken分页。返回pagination.hasMore=true时,将pagination.nextToken原样传入下一次调用。meta_database_list需要CatalogUuid;meta_table_list需要DatabaseUuid。meta_table_columns和meta_table_indexes需要databaseUuid与tableQualifiedName。wiki_search需要wikiUuid与query。使用
gateway_call前,请先调用gateway_describe查看 Action、参数以及是否属于写操作。
执行 SQL 或命令
exec_sql 每次只执行一条 statement。调用时至少通过以下一种方式指定目标:
databaseUuid。catalogUuid,可配合qualifiedName指定数据库或 schema。catalogName,可配合qualifiedName指定数据库或 schema。
常用可选参数包括 timeout、maxRows、columnTruncate 和 waitSeconds。建议先执行带 LIMIT 的只读语句,并逐步缩小查询范围。
若返回 NEEDS_CONFIRMATION,表示语句命中数据网关的 ASK 安全门禁。必须由用户阅读风险和原因并明确确认后,才可在相同调用中携带 confirm 理由重试。Agent 不得默认附加确认理由或自动绕过门禁。
返回结果与常见状态
业务工具返回结构化结果,其中 requestId 是排障时定位链路的重要信息。列表类工具通过 pagination 字段表示是否还有下一页。
exec_sql 的常见执行状态如下:
状态 | 含义 | 建议处理 |
| 执行成功。 | 读取结果;若结果被截断,缩小范围后重试。 |
| 执行失败。 | 查看 |
| 命中人工确认门禁。 | 完成人工审查后携带 |
| 同步等待超时。 | 检查执行状态,或调整 |
| 已转为异步执行。 | 保留返回的任务信息并按提示查询进度。 |
权限及安全
权限口径
使用 MCP 服务时,请区分以下三个概念:
acl_whoami返回的ADMIN是平台角色,不代表拥有所有实例的查询权限。meta_catalog_list或datasource_list能看到资源,只表示元数据可见,不代表可以执行 SQL。当前身份的真实数据授权以
acl_my_permissions的返回结果为准。
因此,遇到“能看到实例但不能查询”的情况时,请先检查 acl_my_permissions,再由管理员补充目标实例或数据库的权限。
安全建议
仅通过 HTTPS 和
Authorization: Bearer <Access Token>传递凭证。不要将 Token 放入 URL、Prompt、截图、日志、工单正文或代码仓库。
Token 泄露、过期或人员权限变化后,应立即轮换。
SQL 写操作和危险语句始终受数据网关安全策略约束。
gateway_call的写操作默认不放行,涉及凭证密文的 Action 禁止通过 MCP 返回。MCP 调用按当前真实的 Agent 身份进入数据网关审计链路。
常见问题
以下是使用MCP服务过程中常见的问题及对应处理方式。如未包含您遇到的问题,可以进行问题反馈。
提交问题时,请提供发生时间、地域、MCP 工具名、脱敏后的参数、errorCode、errorMessage 和 requestId,请勿提供完整的 Access Token。
现象 | 可能原因 | 处理方式 |
返回 401 或 | Token 缺失、过期、被吊销,或地域不匹配。 | 检查 Bearer Header,重新签发 Token,并确认 Token 与 Endpoint 属于同一地域。 |
返回 403 或 | 当前身份未获得目标资源权限。 | 调用 |
客户端看不到 dgate 工具。 | MCP 配置未生效、客户端未刷新或 URL 错误。 | 重新加载或重启客户端,并用 curl |
能列出实例但不能执行 SQL。 | 元数据可见不等于执行权限。 | 以 |
返回 | SQL 命中 ASK 安全策略。 | 人工审查风险后填写确认理由重试,禁止自动确认。 |
返回 429。 | 调用频率超过限制。 | 按响应中的 |
结果不完整或被截断。 | 命中行数或返回大小限制。 | 增加筛选条件、使用 |