Aiven-Open/mcp-aiven

分类Database
作者Community
星标607
定价Free

简介

mcp-aiven 是一个将 Aiven 云端数据库能力直接接入 AI 客户端的 MCP 服务端。它允许开发者在对话界面中直接管理和查询 Aiven 平台上的 PostgreSQL、Kafka、ClickHouse 和 OpenSearch 等托管服务。无需在管理控制台和 IDE 之间频繁切换,你可以通过自然语言快速检索服务状态或执行基础操作。对于习惯使用 Cursor 或 Claude Desktop 的用户来说,这相当于给 AI 助手安装了一个 Aiven 资源管理插件,极大地简化了云端数据库的运维和交互流程,上手门槛极低。

核心亮点

  • 统一管理 Aiven 平台的多种托管数据库
  • 通过自然语言直接交互云端服务状态
  • 消除控制台与开发环境的切换成本
  • 快速集成至 Cursor 等支持 MCP 的客户端

完整文档

Aiven MCP Server

一个用于 Aiven 云数据平台的 Model Context Protocol (MCP) server。

直接通过 Claude、Cursor 和 VS Code Copilot 等 AI 助手管理 PostgreSQL、Apache Kafka、应用程序以及其他 Aiven 服务。

> [!WARNING]
> 谨慎使用。 此 MCP server 可以代表您创建、修改和删除 Aiven 服务及数据。AI agent 可能会根据其对您提示词的理解执行破坏性操作(如删除数据库、删除服务、发送消息)。您对通过此工具执行的操作负全部责任。
>
> 权限: 访问权限由与认证账户关联的 Aiven 用户权限控制。MCP server 只能执行您的 Aiven 用户被允许的操作。
>
> AI Agent 安全性: AI agent 可能需要访问凭据(数据库连接字符串、streaming tokens)才能代表您执行操作。请审查 agent 的操作,尤其是在生产环境中。在授予 AI agent 访问敏感资源的权限之前,请遵循您组织的安全策略并进行风险评估。

Quick Start

选项 1:远程(由 Aiven 托管)

MCP server 托管在 https://mcp.aiven.live/mcp。您的 MCP client 将提示您在 Aiven 上进行授权。

Claude Code

bash
claude mcp add --scope user --transport http aiven-mcp "https://mcp.aiven.live/mcp"
Cursor

![Install MCP Server](https://cursor.com/en-US/install-mcp?name=aiven-mcp&config=eyJ1cmwiOiJodHRwczovL21jcC5haXZlbi5saXZlL21jcCJ9)

或手动添加到 Cursor MCP 设置:

json
{
"mcpServers": {
"aiven-mcp": {
"url": "https://mcp.aiven.live/mcp"
}
}
}
VS Code / Copilot

在工作区的 .vscode/mcp.json 中添加:

json
{
"servers": {
"aiven-mcp": {
"type": "http",
"url": "https://mcp.aiven.live/mcp"
}
}
}
#### 只读模式 (远程)

在 URL 中添加 ?read_only=true 即可启用只读模式。所有写操作将被排除在 MCP 之外:

json
{
"mcpServers": {
"aiven-mcp": {
"url": "https://mcp.aiven.live/mcp?read_only=true"
}
}
}
#### 作用域工具 (远程)

通过在 URL 中添加 ?services_scope= 来减少暴露给 AI agent 的工具范围。当你仅使用部分 Aiven 服务并希望保持 agent 的上下文聚焦时,此功能非常有用。多个值请使用逗号分隔。core(项目/服务发现)始终被隐式包含。

有效作用域:allcorepgkafkaapplicationintegrations。使用 all 可显式加载所有工具(与省略该参数效果相同)。all 不能与其他作用域组合使用。

json
{
"mcpServers": {
"aiven-mcp": {
"url": "https://mcp.aiven.live/mcp?services_scope=kafka"
}
}
}
你也可以将其与 read_only 结合使用:
code
https://mcp.aiven.live/mcp?services_scope=pg&read_only=true
#### 在只读模式下编写异常(远程)

read_only=true 时,添加 ?write_allowlist= 可在保持其他所有内容只读的同时,重新启用特定的写入工具。这在您需要大部分只读访问但仍需允许某项写入操作(例如创建 Kafka topics)时非常有用。多个工具名称请使用逗号分隔。当 read_only 未启用时,此项将被忽略。

code
https://mcp.aiven.live/mcp?read_only=true&write_allowlist=aiven_kafka_topic_create
#### Marketplace 客户 (远程)

如果您通过云 marketplace 订阅了 Aiven,请将您的 marketplace 添加为路径段,以便登录时使用正确的控制台:

| Marketplace | 路径段 |
| --- | --- |
| AWS Marketplace | https://mcp.aiven.live/mcp/aws |
| Azure Marketplace | https://mcp.aiven.live/mcp/azure |
| Google Cloud Marketplace | https://mcp.aiven.live/mcp/gcp |

json
{
"mcpServers": {
"aiven-mcp": {
"url": "https://mcp.aiven.live/mcp/<marketplace>"
}
}
}
路径段与上述查询参数相结合,例如 https://mcp.aiven.live/mcp/gcp?services_scope=pg&read_only=true

选项 2:stdio (本地)

将服务器作为 MCP 客户端的子进程在本地运行。需要 Node.js 18+。

您必须通过 AIVEN_TOKEN 环境变量提供 Aiven API token。在此创建 token

Claude Code

bash
claude mcp add --scope user aiven-mcp -e AIVEN_TOKEN=your-token-here -- npx -y mcp-aiven
Cursor, VS Code -- 添加到你的 MCP 客户端配置:
json
{
"mcpServers": {
"aiven-mcp": {
"command": "npx",
"args": ["-y", "mcp-aiven"],
"env": {
"AIVEN_TOKEN": "your-token-here"
}
}
}
}
配置文件位置:
  • Cursor:Cursor Settings > MCP Servers

  • VS Code:工作区中的 .vscode/mcp.json

选项 3:本地开发

运行服务器的本地构建(适用于开发和测试):

bash
pnpm install && pnpm generate:api-types && pnpm generate && pnpm build && AIVEN_TOKEN="<YOUR_TOKEN>" MCP_TRANSPORT="http" PORT=3000 node dist/index.js
服务器默认监听端口 3000。请将您的 MCP 客户端连接至 http://localhost:3000/mcp

若要将远程部署指向自定义主机(例如您的本地构建),请设置 MCP_HOST

bash
MCP_HOST=http://localhost:3000 node dist/index.js
### 环境变量| 变量 | 必填 | 默认值 | 描述 |
|---|---|---|---|
| AIVEN_TOKEN | 仅 stdio | -- | Aiven API token (在此创建) |
| AIVEN_READ_ONLY | 否 | false | 设置为 true 以仅公开只读工具 |
| AIVEN_SERVICES_SCOPE | 否 | -- | 以逗号分隔的要公开的 scope(例如 kafkapg,kafkaall)。有效值:allcorepgkafkaapplicationintegrationscore 始终包含在内。省略此变量或设置为 all 将加载所有工具。 |
| AIVEN_ALLOW_SECRETS | 否 | false | 设置为 true 以公开 aiven_service_connection_info 工具,该工具会将实时凭据(密码、连接 URI、证书)返回到对话中。当 AIVEN_READ_ONLY=true 时此项禁用。 |
| AIVEN_WRITE_ALLOWLIST | 否 | -- | 以逗号分隔的工具名称,用于在 AIVEN_READ_ONLY=true 时重新启用(例如 aiven_kafka_topic_create)。未启用只读模式时将被忽略。 |
| MCP_HOST | 否 | https://mcp.aiven.live | 覆盖 OAuth 保护的资源主机 |
| MCP_TRANSPORT | 否 | stdio | 设置为 http 以启动 HTTP 服务器而非 stdio |
| MCP_HTTP_RATE_LIMIT_MAX | 否 | 1000 | 每个 bearer token 在 POST /mcp(HTTP 传输)上的每个窗口最大请求数。Cloudflare 预计会对客户端 IP 进行速率限制。 |
| MCP_HTTP_RATE_LIMIT_WINDOW_MS | 否 | 60000 | MCP_HTTP_RATE_LIMIT_MAX 的窗口长度(毫秒)。 |
| EXTRA_PROTECTION | 否 | false | 在 HTTP 部署中设置为 true,要求除 GET /health 以外的每个请求都必须包含有效的 X-Edge-Auth 标头。详见下文 Edge protection rollout。 |
| MCP_EDGE_AUTH_SECRET | 当 EXTRA_PROTECTION=true 时 | -- | 共享密钥;必须与 Cloudflare 通过 Transform Rules 注入的 X-Edge-Auth 值匹配。 |在远程 (HTTP) 模式下,不需要 AIVEN_TOKEN。您的 MCP 客户端会在每次请求时将 token 作为 Bearer token 发送。

生产环境的 HTTP 流量分为两层速率限制:Cloudflare 强制执行基于客户端 IP 的限制(在 Cloudflare 控制面板中配置),而本服务器在 POST /mcp 上针对每个 bearer token 强制执行 MCP_HTTP_RATE_LIMIT_*

Edge protection 部署

EXTRA_PROTECTION=true 时,如果 MCP_EDGE_AUTH_SECRET 与 Cloudflare 注入的 X-Edge-Auth 值不匹配,将导致所有请求返回 403GET /health 除外)。这两个值分别位于网络两端的环境/配置中,因此唯一的恢复路径是修复 secret 并重新部署或更新 Cloudflare。

请按此顺序启用:1. Cloudflare Transform Rule — 添加一条规则,为发往 MCP origin 的流量设置 X-Edge-Auth(如果用于 PG 工具,还需设置 X-Client-IP)。记录你配置的 secret 值。
2. MCP_EDGE_AUTH_SECRET — 部署服务器,并将此环境变量设置为与 Transform Rule 相同的 secret。暂时将 EXTRA_PROTECTION 保持为空或 false;验证 origin 仍能接收流量。
3. EXTRA_PROTECTION=true — 仅在步骤 1-2 生效且匹配后启用。确认正常的 MCP 请求能够成功,且没有 X-Edge-Auth 的直接 origin 访问被拒绝。
4. Secret rotation — 同时更新 Cloudflare 和 MCP_EDGE_AUTH_SECRET(或短暂将 EXTRA_PROTECTION 设为 false),重新部署,然后重新启用。在 flag 开启时,切勿单独更新其中一方。

如果在启动时 EXTRA_PROTECTION=true 且缺失 MCP_EDGE_AUTH_SECRET,进程将立即报错退出。

在持续拒绝请求期间,服务器最多每 15 分钟记录一次配置错误警告(在收到带有有效 X-Edge-Auth 的请求后重置),因此 secret 不匹配会在日志中可见,而不会为每个被拒绝的请求产生一行日志。

Tools

Core| Tool | Description |

|---|---| | aiven_project_list | 列出项目 | | aiven_project_get | 获取项目详情 | | aiven_list_project_clouds | 列出项目的云平台 | | aiven_project_vpc_list | 列出项目的 VPC | | aiven_service_list | 列出服务 | | aiven_service_type_plans | 列出包含云可用性的方案 | | aiven_service_plan_pricing | 获取特定云平台中方案的定价 | | aiven_service_create | 创建服务 | | aiven_service_get | 获取服务信息 | | aiven_service_update | 更新服务(方案、配置、电源状态) | | aiven_service_metrics_fetch | 获取托管数据服务的指标 | | aiven_service_application_metrics_get | 获取应用服务的指标 | | aiven_project_get_service_logs | 获取服务日志条目 | | aiven_service_query_activity | 获取服务的当前查询 | | aiven_project_get_event_logs | 获取项目事件日志条目 |

Kafka| Tool | Description |

|---|---| | aiven_kafka_topic_list | 列出 Kafka topics | | aiven_kafka_topic_create | 创建 Kafka topic | | aiven_kafka_topic_get | 获取 Kafka topic 信息 | | aiven_kafka_topic_update | 更新 Kafka topic | | aiven_kafka_topic_delete | 删除 Kafka topic | | aiven_kafka_topic_message_list | 从 Kafka topic 读取消息 | | aiven_kafka_topic_message_produce | 向 Kafka topic 发送消息 | | aiven_kafka_connect_available_connectors | 列出可用的 connector 类型 | | aiven_kafka_connect_list | 列出正在运行的 connectors | | aiven_kafka_connect_create_connector | 创建 connector | | aiven_kafka_connect_edit_connector | 编辑 connector | | aiven_kafka_connect_get_connector_status | 获取 connector 状态 | | aiven_kafka_connect_pause_connector | 暂停 connector | | aiven_kafka_connect_resume_connector | 恢复 connector | | aiven_kafka_connect_restart_connector | 重启 connector | | aiven_kafka_connect_delete_connector | 删除 connector | | aiven_kafka_schema_registry_subjects | 列出 Schema Registry subjects | | aiven_kafka_schema_registry_subject_version_get | 获取 Schema Registry subject 版本 |

PostgreSQL| Tool | Description |

|---|---| | aiven_pg_service_available_extensions | 列出可用扩展 | | aiven_pg_service_query_statistics | 获取查询统计信息 | | aiven_pg_bouncer_create | 创建 PgBouncer 连接池 | | aiven_pg_bouncer_update | 更新 PgBouncer 连接池 | | aiven_pg_bouncer_delete | 删除 PgBouncer 连接池 | | aiven_pg_read | 执行只读 SQL 查询 | | aiven_pg_write | 执行写 SQL 语句 (INSERT, UPDATE, DELETE, CREATE TABLE 等) | | aiven_pg_optimize_query | AI 驱动的查询优化 (EverSQL) |

Applications

| Tool | Description |
|---|---|
| aiven_application_deploy | 将 Docker 化应用部署到 Aiven |
| aiven_application_redeploy | 重新构建并重新部署现有应用 |
| aiven_vcs_integration_list | 列出已连接的 VCS (GitHub) 账户 |
| aiven_vcs_integration_repository_list | 列出 VCS 集成的仓库 |

Documentation

| Tool | Description |
|---|---|
| aiven_docs_search | 使用自然语言搜索 Aiven 官方文档。仅在托管服务器 (https://mcp.aiven.live/mcp) 上可用 —— 不在自托管部署中提供。 |

Contributing

有关开发环境搭建、本地运行和添加新工具,请参阅 CONTRIBUTING.md

License

Apache-2.0