通过MCP Server接入PolarDB PostgreSQL Agentic Database

更新时间:
复制 MD 格式

本文以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

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

通过阿里云控制台创建。

Bearer Token

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

使用上述API Key。

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

适用范围

  • 已注册阿里云账号并完成实名认证。

  • 已下载并安装支持MCP协议的客户端,例如Qoder、Hermes、Cursor、Claude Desktop/CLI等。

步骤一:获取API Key

  1. 登录PolarDB控制台,在左侧导航栏选择PolarDB AI > AgenticDB 集群列表,进入AgenticDB集群列表页面。

  2. 在页面顶部切换至PostgreSQL页签,选择已开通的AgenticDB集群,进入租户管理

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

  4. 请妥善保存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 IDAccessKey Secret(用于调用PolarDB OpenAPI)。

环境变量配置

创建.env文件或在环境中设置以下变量:

变量名

是否必填

说明

默认值

POLARDB_ACCESS_KEY_ID

阿里云AccessKey ID。

POLARDB_ACCESS_KEY_SECRET

阿里云AccessKey Secret。

POLARDB_REGION_ID

PolarDB地域。

cn-hangzhou

POLARDB_API_ENDPOINT

PolarDB API端点。

polardb.aliyuncs.com

MCP_TRANSPORT

传输模式。

http

MCP_PORT

HTTP服务端口。

3000

MCP_HOST

HTTP服务绑定地址。

0.0.0.0

方式一:使用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: false

Qoder

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提供以下工具能力。

项目管理

工具名称

说明

是否只读

list_projects

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

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,然后从数据库中查询它。”

安全机制

多层安全保障

  • 凭证隔离:数据库地址、账号、密码由MCP Server加密托管,AI Agent上下文中不会出现任何连接信息。

  • 访问控制:每个API Key仅可操作其绑定的集群和租户,不能跨账号、跨集群访问。

  • 三层Key校验:格式校验→Payload解析→远程OpenAPI验证+一致性校验,防止Key伪造或篡改。

  • 破坏性操作保护delete_projectdelete_branchrun_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_projectdelete_branch、含DROP/DELETE/TRUNCATESQL、lakebase_delete_object)都不会自主执行,Agent会先向您确认。

  • Q:可以限制Agent只执行只读操作吗?

    A:当前版本暂不支持只读模式配置,但Agent在执行写操作前会遵循确认机制。

  • Q:支持哪些MCP客户端?

    A:支持所有实现了MCP Streamable HTTP协议的客户端,包括Qoder、Cursor、Claude Desktop、Windsurf等。

故障排查

现象

可能原因

解决方法

连接时返回401 Unauthorized: missing Bearer token

客户端未配置Authorization头。

检查MCP配置中是否正确添加了headers.Authorization字段。

连接时返回401 Unauthorized: InvalidKeyFormat

API Key格式错误。

确认Keypagc_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超时或服务端重启。

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