跳转至

Claude 通过 MCP Server 连接 Vertica 数据库

作者:JiangChong | 发布时间:2026-04-23

Vertica 分析数据库的 MCP 服务器是一个安全的、经过 JWT 认证的服务器,它实现了模型上下文协议 (MCP),用于数据库和 AI 代理之间的数据库交互,执行查询、管理作业队列以及通过 API 与数据库交互。

  • 操作系统:Linux(Ubuntu/RHEL/CentOS)。
  • OpenText™ 分析数据库:已运行并可访问,26.1及以上版本。
  • VCluster Web 服务正在运行:用于检索节点和集群信息。使用默认配置时,启动 MCP 服务器会自动启动 VCluster Web 服务。

1 启动 MCP Server

在Vertica任一计算节点上运行以下命令启动MCP服务器:

[root@v001 ~]# /opt/vertica/bin/manage_vcluster_server.sh start
Doing action start
No specific server specified, will start both vcluster_server and mcp_server
Starting vcluster server
Started process 3011919
vcluster_server startup verified successfully
Starting MCP server
Started MCP server with PID 3011933
MCP server startup verified successfully
这将同时启动 MCP 服务器和 VCluster 服务器。 仅启动 MCP 服务器:
[root@v001 config]# /opt/vertica/bin/manage_vcluster_server.sh start mcp_server
Doing action start
Removing stale vertica_mcp_server PID file
Starting MCP server
Started MCP server with PID 3011020
Error: vertica_mcp_server failed to start or exited immediately (PID 3011020)
Check the log file for details: /opt/vertica/log/startup_mcp_server.log

可以通过编辑 /opt/vertica/config/mcp_server.yaml 来自定义 MCP 服务器配置。 MCP 服务器的日志文件默认位于 /opt/vertica/log/mcp_server.log/opt/vertica/log/mcp_audit.log

2 获取 JWT tokens

启动 MCP 服务器后,需要使用 JWT 令牌进行身份验证。每个令牌都包含加密的数据库凭据和用户信息。您可以使用交互式生成器创建令牌,也可以在命令行中输入参数。

2.1 使用交互式生成器生成令牌

执行:

/opt/vertica/bin/vertica_mcp_server --generate-token

以下是提示信息(附示例输入):

Missing required parameters for non-interactive mode (--userid and --dbpass).
Falling back to interactive token generation...


═══════════════════════════════════════════════════════════════
              JWT Token Generator for MCP Server
═══════════════════════════════════════════════════════════════

Enter User ID: admin
Enter Database User: dbadmin
Enter Database Password: <dbadmin user password>
Enter Expiration (days from now, default 365):
Enter Description (optional): Database Administrator

Generating JWT token...

 Token generated successfully!

Token Details:
  User ID:    admin
  DB User:    dbadmin
  Expires:    2027-04-23 15:35:10 CST
  Valid Days: 365 days

JWT Token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJhZG1pbiIsImRidXNlciI6ImRiYWRtaW4iLCJwYXNzd29yZCI6IkZKdlZudHJEbmRPN21vZkhZbnZJNVhKWFdlNUpUaVRtOFFSencxb3h5dncyVzYwPSIsImV4cCI6MTgwODQ2NTcxMCwibmJmIjoxNzc2OTI5NzIwLCJpYXQiOjE3NzY5Mjk3MjB9.iURnWSfcGs0hIu8b7pz1H03tlUTKtp9n1dOwu37MjyY

Adding to client configuration...

 Client added to: /opt/vertica/config/mcp_server/client.yaml

You can now use this token in your MCP client requests:
  curl -k -X POST https://localhost:8667/mcp \
    -H "Content-Type: application/json" \
    -H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJhZG1pbiIsImRidXNlciI6ImRiYWRtaW4iLCJwYXNzd29yZCI6IkZKdlZudHJEbmRPN21vZkhZbnZJNVhKWFdlNUpUaVRtOFFSencxb3h5dncyVzYwPSIsImV4cCI6MTgwODQ2NTcxMCwibmJmIjoxNzc2OTI5NzIwLCJpYXQiOjE3NzY5Mjk3MjB9.iURnWSfcGs0hIu8b7pz1H03tlUTKtp9n1dOwu37MjyY" \
    -d '{...}'

═══════════════════════════════════════════════════════════════

输出结果都将是一个 JWT 令牌字符串,令牌签名存储在/opt/vertica/config/mcp_server/client.yaml处,可以在那里管理它们。

可用于对 MCP 服务器的请求进行身份验证:

[root@v001 config]# cat /opt/vertica/config/mcp_server/client.yaml
clients:
    - userid: admin
      apikey_sig: iURnWSfcGs0hIu8b7pz1H03tlUTKtp9n1dOwu37MjyY
      description: Database Administrator
      status: active

token安全最佳实践

  • 对于敏感环境,请使用较短的有效期(30-90 天)。
  • 妥善保管令牌——像对待密码一样对待它们。
  • 永远不要将令牌提交到版本控制系统中。
  • 定期轮换——在过期前重新生成。
  • 仅使用 HTTPS - 切勿通过未加密的连接发送令牌。
  • 监控审计日志 - 查看身份验证尝试。

3 使用 Claude Desktop 配置 MCP 服务器

Claude Desktop 可以连接到您的 MCP 服务器,从而在 Claude 对话中启用数据库查询功能。

3.1 先决条件

  • Claude Desktop 已安装(最新版本)。
  • MCP服务器正在运行且可访问。
  • 用于身份验证的有效 JWT 令牌。
  • 用于从数据库管理员访问 VCluster 服务器的证书。对于数据库管理员,默认证书位于 /opt/vertica/config/vcluster_server/
  • NPX 工具 mcp-remotenpm install -g mcp-remote )。

3.2 配置

Claude Desktop 的配置文件位置因操作系统而异:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

将Vertica服务器上/opt/vertica/config/vcluster_server/目录下的admin.pem, admin.key, ca.pem三个证书下载到本地,并将三个文件的路径填入~/Library/Application Support/Claude/claude_desktop_config.json中。

编辑配置文件并添加您的 MCP 服务器。配置示例:

{
  "mcpServers": {
    "vertica-mcp-server": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://10.211.55.6:8667/mcp",
        "--insecure",
        "--tls-skip-verify",
        "--cert",
        "/Users/simonchiang/Downloads/mcp/admin.pem",
        "--key",
        "/Users/simonchiang/Downloads/mcp/admin.key",
        "--ca-cert",
        "/Users/simonchiang/Downloads/mcp/ca.pem",
        "--header",
        "X-API-Key:${API_KEY_VALUE}"
        ],
      "env": {
        "NODE_TLS_REJECT_UNAUTHORIZED": "0",
        "API_KEY_VALUE": "        eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJhZG1pbiIsImRidXNlciI6ImRiYWRtaW4iLCJwYXNzd29yZCI6IkZKdlZudHJEbmRPN21vZkhZbnZJNVhKWFdlNUpUaVRtOFFSencxb3h5dncyVzYwPSIsImV4cCI6MTgwODQ2NTcxMCwibmJmIjoxNzc2OTI5NzIwLCJpYXQiOjE3NzY5Mjk3MjB9.iURnWSfcGs0hIu8b7pz1H03tlUTKtp9n1dOwu37MjyY"
      }
    }
  }
}

3.3 验证配置

1、保存配置后重启 Claude Desktop(确保结束所有后台进程)

2、查看 Claude 的 MCP 状态 - 在 MCP 面板中查找您的服务器

Claude Mcp Connect 1

3、使用简单查询进行测试:

## You said: 你能访问我的vmart数据库吗?

15:47

## Claude responded: 可以!我已经成功连接到你的数据库了。以下是数据库中的 schema 概览:

Used vertica-mcp-server integration, loaded tools

Used vertica-mcp-server integration, loaded tools

可以!我已经成功连接到你的数据库了。以下是数据库中的 schema 概览:

**用户 Schema(5个):**

- `online_sales` — 线上销售相关数据
- `public` — 默认公共 schema
- `store` — 门店相关数据
- `v_func` — 用户自定义函数
- `v_txtindex` — 文本索引

**系统 Schema(5个):**

- `v_catalog` — 数据库元数据
- `v_monitor` — 系统监控与性能数据
- `v_internal` / `v_internal_tables` — Vertica 内部实现
- `v_secret_managers` — 密钥管理

看起来这是一个 **VMart** 数据库,包含线上销售(`online_sales`)和门店(`store`)两大业务模块。你想做什么?比如查看某个 schema 的表结构、执行查询,或者分析数据,都可以告诉我!


## You said: 统计数据库中占用存储最多的3张表

15:59

## Claude responded: 跨所有用户 schema 查询,并行获取各个 schema 的表大小: 以下是全库存储占用最多的 Top 3 表:

Searched available tools

Searched available tools

跨所有用户 schema 查询,并行获取各个 schema 的表大小:

Used vertica-mcp-server integration

Used vertica-mcp-server integration

以下是全库存储占用最多的 **Top 3 表**:

|排名|Schema|表名|行数|存储大小|
|---|---|---|---|---|
|🥇 1|`online_sales`|`online_sales_fact`|5,000,000|**164.56 MB**|
|🥈 2|`store`|`store_sales_fact`|5,000,000|**104.20 MB**|
|🥉 3|`store`|`store_orders_fact`|300,000|**8.85 MB**|

**小结:**

- 前两名都是事实表(fact table),各有 500 万行,合计占用约 **269 MB**,占全库总存储的绝大部分。
- `online_sales_fact` 比 `store_sales_fact` 大约多占 58%,尽管行数相同,说明线上销售记录的字段更宽或数据压缩率略低。
- 第三名 `store_orders_fact` 存储仅 8.85 MB,与前两名差距悬殊。

## You said: 数据库的硬件资源还有多少

数据库的硬件资源还有多少

16:02

## Claude responded: 结果如下,数据库节点(10.

Used vertica-mcp-server integration

Used vertica-mcp-server integration

结果如下,数据库节点(`10.211.55.6`)当前硬件资源情况:

---

#### 🖥️ CPU

|项目|值|
|---|---|
|物理处理器数|2|
|处理器核心数|2|

---

#### 💾 内存

|项目|数值|占比|
|---|---|---|
|总内存|2.65 GB|100%|
|已使用|1.33 GB|~50%|
|空闲内存|565 MB|~21%|
|Buffer/Cache|793 MB|~30%|

> Buffer/Cache 是系统可回收的缓存,实际可用内存约为 **空闲 + Cache ≈ 1.3 GB**。

---

#### 💿 磁盘

|项目|数值|占比|
|---|---|---|
|总空间|27.32 GB|100%|
|已使用|22.12 GB|**~81%**|
|剩余空间|5.20 GB|~19%|

---

#### 🔄 Swap 交换区

|项目|数值|占比|
|---|---|---|
|总 Swap|3.02 GB|100%|
|已使用|1.04 GB|~34%|
|剩余 Swap|1.99 GB|~66%|

---

**⚠️ 注意事项:**

- **磁盘使用率已达 81%**,剩余空间仅约 5 GB,建议关注数据增长,适时清理或扩容。
- 内存整体尚可,但仅有 2 核 CPU,适合中小规模分析负载。

## You said: 返回乳制品部门中五种脂肪含量最低的产品的数值

返回乳制品部门中五种脂肪含量最低的产品的数值

16:07

## Claude responded: 以下是 乳制品部门(Dairy) 中脂肪含量最低的 5 种产品:

以下是 **乳制品部门(Dairy)** 中脂肪含量最低的 5 种产品:

|排名|产品名称|脂肪含量|净重|单位|售价|饮食类型|
|---|---|---|---|---|---|---|
|1|Brand #374 Grated Parmesan Cheese|80|37|gram|502|Zone|
|2|Brand #426 Whole Milk|80|29|gram|230|Atkins|
|3|Brand #48 Yogurt|80|52|ounce|316|Zone|
|4|Brand #322 Cheddar Cheese|80|79|ounce|202|Weight Watchers|
|5|Brand #545 Grated Parmesan Cheese|80|47|ounce|528|Light|

**说明:** 这 5 款产品的脂肪含量均为 **80**,是乳制品部门中的最低值,涵盖帕马森奶酪、全脂牛奶、酸奶和切达奶酪,分别对应 Zone、Atkins、Weight Watchers 和 Light 等不同饮食方案。

## You said: 提供所有由位于马萨诸塞州的门店以及位于其他地区的供应商,在2003年3月1日之前下达的订单

提供所有由位于马萨诸塞州的门店以及位于其他地区的供应商,在2003年3月1日之前下达的订单

16:12

## Claude responded: 共找到 313 条符合条件的订单(马萨诸塞州门店 + 异地供应商 + 2003年3月1日前下达)。以下是结果摘要:

共找到 **313 条**符合条件的订单(马萨诸塞州门店 + 异地供应商 + 2003年3月1日前下达)。以下是结果摘要:

**门店分布(MA):**

|门店|城市|
|---|---|
|Store12, Store57, Store58, Store75|Lowell|
|Store36, Store138, Store157, Store210, Store237|Boston|
|Store244|Cambridge|

**供应商来源地区分布:**

|供应商地区|代表供应商示例|
|---|---|
|West (CA, UT)|Frozen Discounters, Everything Warehouse, Market Warehouse|
|MidWest (MI, WI, IN, SD, IL)|Frozen Farm, Delicious Farm, Food Emporium|
|South (TX, GA, MS)|Ripe Farm, Big Al's Suppliers, Everything Outlet|
|SouthWest (CO, NV, KS)|Market Wholesale, Food Outlet, Sundry Mart|
|NorthWest (WA)|Big Al's Suppliers|

所有供应商均来自 East 地区以外(MA 门店所在地区),满足"异地供应商"的条件。时间范围覆盖 **2003年1月1日 至 2003年2月10日**。如需进一步筛选或统计分析(如按供应商、门店或月份汇总),请告诉我!

Claude Mcp Connect 2

扩展阅读