通过MCP Server接入PolarDB PostgreSQL Agentic Database

更新时间:
复制 MD 格式

本文介绍如何通过 API Key 认证接入PolarDB PostgreSQL Agentic Database MCP Server。完成接入后,AI Agent 即可通过 MCP 协议直接调用数据库管理工具,使用自然语言完成项目管理、分支操作、SQL 执行、Schema 浏览及 Lakebase 对象存储等操作,整个过程无需手动配置数据库地址、账号或密码。

说明

PolarDB PostgreSQL Agentic Database目前处于公测阶段。公测期间,不承诺服务等级协议SLA。如您对当前功能有任何疑问,可通过钉钉搜索群号入群咨询。钉钉群号:175205010586

背景信息

PolarDB PostgreSQL Agentic Database MCP Server 采用 API Key 认证机制,确保使用者身份可信、操作范围可控。

认证要素

说明

获得方式

API Key

格式为 pagc_key_xxx,包含集群 ID 和租户 ID 信息。

通过阿里云控制台创建。

Bearer Token

在 MCP 客户端配置中以 Authorization: Bearer <API_Key> 形式传递。

使用上述 API Key。

API Key 中内嵌了 AgenticDB 集群和租户信息。MCP Server 在首次连接时自动完成格式校验、Payload 解析和远程验证。验证通过后创建 Session,后续调用在该 Session 上下文中执行。AI Agent 和使用者全程不接触任何数据库地址、账号或密码。

适用范围

步骤一:获取 API Key

  1. 登录PolarDB控制台。

  2. 在左侧导航栏,选择AgenticDB 集群列表 > PostgreSQL,进入AgenticDB 集群列表页面。

  3. 选择已开通的AgenticDB 集群,进入配置与管理 > API Key 管理页面。

  4. 单击创建 API Key,系统将生成格式为 pagc_key_xxx 的密钥。

说明
  • 妥善保存 API Key。该密钥仅在创建时展示一次。

  • API Key 包含集群 ID(pagc-xxx)和租户 ID(t-xxx)信息,用于确定 Agent 的操作范围。每个 API Key 仅可访问其绑定集群和租户下的资源。

步骤二:配置本地 MCP 工具

配置 MCP Server 前,请满足以下条件:

在客户端的 MCP Server 配置中添加以下条目。以下示例使用 JSON 配置文件:

{
  "mcpServers": {
    "polardb-agentic": {
      "command": "npx",
      "args": ["-y", "mcp-server-polardb-agentic@latest"],
      "env": {
        "POLARDB_ACCESS_KEY_ID": "<your-accesskey-id>",
        "POLARDB_ACCESS_KEY_SECRET": "<your-accesskey-secret>",
        "POLARDB_AGENTIC_API_KEY": "pagc_key_xxx"
      }
    }
  }
}

将配置中的 pagc_key_xxx 替换为步骤一获取的实际 API Key,并将 your-accesskey-id 和 your-accesskey-secret 分别替换为已获取的 AccessKey ID 和 AccessKey Secret。添加后,客户端会自动发起连接。MCP Server 将校验 API Key 并建立 Session。

操作示例

Qoder

在Qoder桌面版中依次选择扩展 > 连接器,单击添加 > 粘贴 JSON 配置。在弹出的对话框中添加下述配置。

{
  "mcpServers": {
    "polardb-agentic": {
      "command": "npx",
      "args": ["-y", "mcp-server-polardb-agentic@latest"],
      "env": {
        "POLARDB_ACCESS_KEY_ID": "<your-accesskey-id>",
        "POLARDB_ACCESS_KEY_SECRET": "<your-accesskey-secret>",
        "POLARDB_AGENTIC_API_KEY": "pagc_key_xxx"
      }
    }
  }
}

Qoder IDE

在Qoder IDE右上角单击个人头像,选择Qoder IDE 设置。在MCP 服务中单击添加,并添加下述配置。

{
  "mcpServers": {
    "polardb-agentic": {
      "command": "npx",
      "args": ["-y", "mcp-server-polardb-agentic@latest"],
      "env": {
        "POLARDB_ACCESS_KEY_ID": "<your-accesskey-id>",
        "POLARDB_ACCESS_KEY_SECRET": "<your-accesskey-secret>",
        "POLARDB_AGENTIC_API_KEY": "pagc_key_xxx"
      }
    }
  }
}

Claude CLI

  • 推荐使用 claude mcp add 命令添加 MCP Server。在终端执行:

    claude mcp add polardb-agentic --transport stdio \
      --env POLARDB_ACCESS_KEY_ID=<your-accesskey-id> \
      --env POLARDB_ACCESS_KEY_SECRET=<your-accesskey-secret> \
      --env POLARDB_AGENTIC_API_KEY=pagc_key_xxx \
      -- npx -y mcp-server-polardb-agentic@latest

    添加成功后,执行 claude mcp list 查看已配置的 MCP Server 列表。

  • 也可以直接编辑 Claude 配置文件:用户级配置文件为 ~/.claude.json,项目级配置文件为项目根目录下的 .claude.json。在 mcpServers 节点下加入以下 JSON:

    {
      "mcpServers": {
        "polardb-agentic": {
          "command": "npx",
          "args": ["-y", "mcp-server-polardb-agentic@latest"],
          "env": {
            "POLARDB_ACCESS_KEY_ID": "<your-accesskey-id>",
            "POLARDB_ACCESS_KEY_SECRET": "<your-accesskey-secret>",
            "POLARDB_AGENTIC_API_KEY": "pagc_key_xxx"
          }
        }
      }
    }

配置生效后,重启 Claude 命令行会话即可连接。

Hermes

修改 ~/.hermes/config.yaml:

mcp_servers:
  polardb_agentic:
    command: "npx"
    args: ["-y", "mcp-server-polardb-agentic@latest"]
    env:
      POLARDB_ACCESS_KEY_ID: "<your-accesskey-id>"
      POLARDB_ACCESS_KEY_SECRET: "<your-accesskey-secret>"
      POLARDB_AGENTIC_API_KEY: "pagc_key_xxx"

步骤三:验证连接

配置完成后,客户端显示连接成功状态即表示认证通过。您可以直接使用自然语言与 AI Agent 交互,例如:

  • “列出我所有的项目”。

  • “在项目 my-app 中创建一个新分支”。

  • “查看 users 表的表结构”。

  • “执行 SELECT * FROM orders LIMIT 10”。

功能概览

PolarDB PostgreSQL Agentic Database MCP Server 提供以下工具能力。

项目管理

工具名称

说明

是否只读

list_projects

列出当前租户下的所有 AgenticDB 项目,支持分页。

是

describe_project

获取指定项目的详细信息。

是

create_project

创建新项目,返回项目详情及默认分支名称。

否

delete_project

删除项目及其所有数据,需要您手动确认。

否(破坏性)

分支管理

工具名称

说明

是否只读

list_branches

列出当前租户下所有分支,支持按项目筛选。

是

describe_branch

获取指定分支的详细信息。

是

create_branch

从已有分支创建新分支(即时fork)。

否

delete_branch

删除指定分支,需要您手动确认。

否(破坏性)

get_connection_string

获取分支的 PostgreSQL 连接串,无计算节点时自动分配。

是

Schema 浏览

工具名称

说明

是否只读

get_database_tables

列出数据库中所有表的 Schema、名称、类型和注释。

是

describe_table_schema

获取指定表的列定义、数据类型和约束。

是

SQL 执行

工具名称

说明

是否只读

run_sql

执行单条 SQL 语句。

否

run_sql_transaction

在单个事务中原子执行多条 SQL 语句。

否

explain_sql_statement

使用 EXPLAIN ANALYZE 分析查询执行计划。

是

Lakebase 对象存储

工具名称

说明

是否只读

describe_lakebase_instances

列出当前集群关联的 Lakebase(PolarFS)实例。

是

get_lakebase_connection_info

获取 S3 网关连接信息(endpoint、凭证、bucket)。

是

lakebase_list_objects

列出 Lakebase 实例中的对象,支持前缀过滤和分页。

是

lakebase_upload_object

通过 S3 协议上传文本内容为对象。

否

lakebase_download_object

通过 S3 协议下载并读取对象。

是

lakebase_delete_object

删除对象,需要您手动确认。

否(破坏性)

日常使用

连接建立后,MCP 客户端通过 Session ID 维持会话状态,后续使用无需再次认证。您可以使用以下自然语言指令:

  • 创建项目:“创建一个名为 my-app 的新项目,并建立 users 表,包含 id、name、email 和 created_at 字段。”

  • 查看 Schema:“查看 my-app 项目中 users 表的完整结构。”

  • 分支操作:“从 main 分支创建一个名为 feature-auth 的开发分支。”

  • 对象存储:“将这份 CSV 数据上传到 Lakebase,然后从数据库中查询它。”

安全机制

PolarDB Agentic Database 内置多层安全保障

  • 凭证隔离:数据库地址、账号和密码由 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 stdio 协议的客户端,包括 Qoder、Cursor、Claude Desktop 和 Windsurf 等。

故障排查

现象

可能原因

解决方法

连接时返回 401 Unauthorized: InvalidKeyFormat

API Key 格式错误。

确认 Key 以 pagc_key_ 开头且包含 . 分隔符。

连接时返回 401 Unauthorized: InvalidPayload

API Key Payload 解析失败。

确认使用的是控制台生成的完整 API Key。

连接时返回 401 Unauthorized: KeyNotFound

API Key 不存在或已被删除。

在控制台确认 Key 状态,或重新创建。

连接时返回 401 Unauthorized: KeyExpired

API Key 已过期。

在控制台创建新的 API Key 并更新配置。

连接时返回 401 Unauthorized: KeyRevoked

API Key 已被吊销。

在控制台创建新的 API Key 并更新配置。

工具调用报错“实例准备中”

计算节点正在分配。

等待数秒后重试。

客户端显示连接断开

Session 超时或服务端重启。

重新发起连接,客户端会自动重新认证。