本文以Qoder为例,介绍如何通过API Key认证接入PolarDB Agentic Database MCP Server。完成接入后,AI Agent即可通过MCP协议直接调用数据库管理工具,使用自然语言完成项目管理、分支操作、SQL执行、Schema浏览及Lakebase对象存储等操作,整个过程无需手动配置数据库地址、账号或密码。
PolarDB PostgreSQL Agentic Database目前处于内测阶段。如需使用该功能或对当前功能有任何疑问,可通过钉钉搜索群号入群咨询。
钉钉群号:175205010586
背景信息
PolarDB PostgreSQL Agentic Database MCP Server采用API Key认证机制,确保使用者身份可信、操作范围可控。
认证要素 | 说明 | 获得方式 |
API Key | 格式为 | 通过阿里云控制台创建。 |
Bearer Token | 在MCP客户端配置中以 | 使用上述API Key。 |
API Key中内嵌了Agentic Database集群和租户信息,MCP Server在首次连接时自动完成三层校验(格式校验→Payload解析→远程验证),验证通过后创建Session,后续调用在该Session上下文中执行,AI Agent和使用者全程不接触任何数据库地址、账号或密码。
适用范围
已注册阿里云账号并完成实名认证。
已下载并安装支持MCP协议的客户端,例如Qoder、Hermes、Cursor、Claude Desktop/CLI等。
步骤一:获取API Key
登录PolarDB控制台,在左侧导航栏选择,进入AgenticDB集群列表页面。
在页面顶部切换至PostgreSQL页签,选择已开通的AgenticDB集群,进入租户管理。
单击创建API Key,系统将生成格式为
pagc_key_xxx的密钥。请妥善保存API Key(仅创建时展示一次)。
API Key包含集群ID(pagc-xxx)和租户ID(t-xxx)信息,用于确定Agent操作范围。每个API Key仅可访问其绑定的集群和租户下的资源。
步骤二:本地部署MCP Server
当前PolarDB PostgreSQL Agentic Database MCP Server未提供远端服务,需要在本地以HTTP模式部署运行。
前置条件
Node.js>=20.0.0。
阿里云AccessKey ID和AccessKey Secret(用于调用PolarDB OpenAPI)。
环境变量配置
创建.env文件或在环境中设置以下变量:
变量名 | 是否必填 | 说明 | 默认值 |
| 是 | 阿里云AccessKey ID。 | 无 |
| 是 | 阿里云AccessKey Secret。 | 无 |
| 否 | PolarDB地域。 |
|
| 否 | PolarDB API端点。 |
|
| 否 | 传输模式。 |
|
| 否 | HTTP服务端口。 |
|
| 否 | HTTP服务绑定地址。 |
|
方式一:使用npx快速启动(无需安装)
MCP_TRANSPORT=http npx -y mcp-server-polardb-agentic方式二:全局安装后启动
npm install -g mcp-server-polardb-agentic
MCP_TRANSPORT=http mcp-server-polardb-agentic启动成功后,MCP Server监听在http://127.0.0.1:3000/mcp。
步骤三:在MCP客户端中配置连接
在客户端的MCP Server配置中添加以下条目(以JSON配置文件为例):
{
"mcpServers": {
"polardb-agentic": {
"type": "http",
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer pagc_key_xxxxx.yyyyy"
}
}
}
}将pagc_key_xxxxx.yyyyy替换为步骤一中获取的实际API Key。
服务器类型选择Streamable HTTP。
添加后客户端会自动发起连接,MCP Server将校验API Key并建立Session。
操作示例
Hermes
您需修改config.yaml。
mcp_servers:
polardb_agentic:
url: http://127.0.0.1:3000/mcp
headers:
Authorization: Bearer pagc_key_xxxxx.yyyyy
timeout: 180
connect_timeout: 60
request_timeout: 120
read_timeout: 120
tool_call_timeout: 120
max_retries: 0
retry: falseQoder
在Qoder右上角的个人头像,单击Qoder设置,在MCP服务中单击添加按钮,将对应的配置添加进去。
{
"mcpServers": {
"polardb-agentic": {
"type": "http",
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer pagc_key_xxxxx.yyyyy"
}
}
}
}Claude CLI
推荐使用
claude mcp add命令行方式添加,在终端执行:claude mcp add polardb-agentic \ --transport http \ --url http://127.0.0.1:3000/mcp \ --header "Authorization: Bearer pagc_key_xxxxx.yyyyy"添加成功后,执行
claude mcp list可查看已配置的 MCP Server 列表。您也可以直接编辑 Claude 配置文件(用户级:
~/.claude.json;项目级:项目根目录下的.claude.json),在mcpServers节点下加入以下 JSON:{ "mcpServers": { "polardb-agentic": { "type": "http", "url": "http://127.0.0.1:3000/mcp", "headers": { "Authorization": "Bearer pagc_key_xxxxx.yyyyy" } } } }
配置生效后重启claude命令行会话即可连接。
步骤四:验证连接
配置完成后,客户端显示连接成功状态即表示认证通过。您可以直接使用自然语言与AI Agent交互,例如:
“列出我所有的项目”
“在项目 my-app 中创建一个新分支”
“查看 users 表的表结构”
“执行 SELECT * FROM orders LIMIT 10”
功能概览
PolarDB PostgreSQL Agentic Database MCP Server提供以下工具能力。
项目管理
工具名称 | 说明 | 是否只读 |
| 列出当前租户下的所有Agentic Database项目,支持分页。 | 是 |
| 获取指定项目的详细信息。 | 是 |
| 创建新项目,返回项目详情及默认分支名称。 | 否 |
| 删除项目及其所有数据(需人工确认)。 | 否(破坏性) |
分支管理
工具名称 | 说明 | 是否只读 |
| 列出当前租户下所有分支,支持按项目筛选。 | 是 |
| 获取指定分支的详细信息。 | 是 |
| 从已有分支创建新分支(即时Fork)。 | 否 |
| 删除指定分支(需人工确认)。 | 否(破坏性) |
| 获取分支的PostgreSQL连接串,无计算节点时自动分配。 | 是 |
Schema浏览
工具名称 | 说明 | 是否只读 |
| 列出数据库中所有表的Schema、名称、类型和注释。 | 是 |
| 获取指定表的列定义、数据类型和约束。 | 是 |
SQL执行
工具名称 | 说明 | 是否只读 |
| 执行单条SQL语句。 | 否 |
| 在单个事务中原子执行多条SQL语句。 | 否 |
| 使用EXPLAIN ANALYZE分析查询执行计划。 | 是 |
Lakebase对象存储
工具名称 | 说明 | 是否只读 |
| 列出当前集群关联的Lakebase(PolarFS)实例。 | 是 |
| 获取S3网关连接信息(Endpoint、凭证、Bucket)。 | 是 |
| 列出Lakebase实例中的对象,支持前缀过滤和分页。 | 是 |
| 通过S3协议上传文本内容为对象。 | 否 |
| 通过S3协议下载并读取对象。 | 是 |
| 删除对象(需人工确认)。 | 否(破坏性) |
日常使用
连接建立后,MCP客户端通过Session ID维持会话状态,后续使用无需再次认证。使用示例如下:
创建项目:“创建一个名为 my-app 的新项目,并建立 users 表包含 id、name、email 和 created_at 字段。”
查看Schema:“查看 my-app 项目中 users 表的完整结构。”
分支操作:“从 main 分支创建一个名为 feature-auth 的开发分支。”
对象存储:“将这份 CSV 数据上传到 Lakebase,然后从数据库中查询它。”
安全机制
多层安全保障
凭证隔离:数据库地址、账号、密码由MCP Server加密托管,AI Agent上下文中不会出现任何连接信息。
访问控制:每个API Key仅可操作其绑定的集群和租户,不能跨账号、跨集群访问。
三层Key校验:格式校验→Payload解析→远程OpenAPI验证+一致性校验,防止Key伪造或篡改。
破坏性操作保护:
delete_project、delete_branch、run_sql(包含DROP/DELETE/TRUNCATE)等破坏性操作不会自主执行,Agent始终先向您确认。Session隔离:每个Session拥有独立的操作上下文(集群ID+租户ID),不同Session之间完全隔离。
API Key管理
Key格式:
pagc_key_{base64url(clusterId:tenantId:random)}.{hmac_signature}。Key有效期:创建时可指定过期时间,也可设置为永不过期。
Key吊销:可在控制台随时吊销已发放的API Key。
多Key支持:同一租户可创建多个API Key,适用于不同Agent或使用场景。
常见问题
Q:API Key过期后需要重新配置吗?
A:是的。API Key过期后连接会返回401错误,需要在控制台重新创建API Key并更新客户端配置。
Q:多人或多Agent如何使用?
A:每个Agent使用独立的API Key连接,各自拥有独立的Session,互不干扰。同一租户下可创建多个API Key。
Q:哪些操作需要人工确认?
A:所有标记为破坏性的操作(
delete_project、delete_branch、含DROP/DELETE/TRUNCATE的SQL、lakebase_delete_object)都不会自主执行,Agent会先向您确认。Q:可以限制Agent只执行只读操作吗?
A:当前版本暂不支持只读模式配置,但Agent在执行写操作前会遵循确认机制。
Q:支持哪些MCP客户端?
A:支持所有实现了MCP Streamable HTTP协议的客户端,包括Qoder、Cursor、Claude Desktop、Windsurf等。
故障排查
现象 | 可能原因 | 解决方法 |
连接时返回 | 客户端未配置Authorization头。 | 检查MCP配置中是否正确添加了 |
连接时返回 | API Key格式错误。 | 确认Key以 |
连接时返回 | API Key Payload解析失败。 | 确认使用的是控制台生成的完整API Key。 |
连接时返回 | API Key不存在或已被删除。 | 在控制台确认Key状态,或重新创建。 |
连接时返回 | API Key已过期。 | 在控制台创建新的API Key并更新配置。 |
连接时返回 | API Key已被吊销。 | 在控制台创建新的API Key并更新配置。 |
工具调用报错“实例准备中” | 计算节点正在分配。 | 等待数秒后重试。 |
客户端显示连接断开 | Session超时或服务端重启。 | 重新发起连接,客户端会自动重新认证。 |