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
[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 使用交互式生成器生成令牌¶
执行:
以下是提示信息(附示例输入):
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-remote(npm 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 面板中查找您的服务器

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日**。如需进一步筛选或统计分析(如按供应商、门店或月份汇总),请告诉我!

扩展阅读¶
- Vertica 监控最佳实践 — 通过 MCP 监控数据库
- Vertica Health Watchdog 智能监控 — 健康监控