Aiven MCPをClaude Codeにつなぐ手順 — PostgreSQLとKafkaを安全に作る
Aivenのホスト型MCPサーバーをClaude Codeに登録し、read_onlyとservices_scopeで権限を絞ってからPostgreSQLとKafkaを作る手順です。
Aiven MCPは、マネージドのPostgreSQLとApache Kafkaを、Claude Codeから自然言語で作り、調べ、操作するためのMCPサーバーです。Aivenがホストする https://mcp.aiven.live/mcp に1行で接続でき、ローカルにサーバーを立てる必要はありません。
ただし、このサーバーはサービスの作成・変更・削除までできるものです。READMEも「AIエージェントは、プロンプトの解釈次第でデータベースの削除やサービスの削除といった破壊的操作を実行しうる」と警告しています。そこで本記事は、接続よりも先に「権限をどこまで絞って渡すか」を軸に、PostgreSQLとKafkaを作る流れを組みます。
Aiven MCPで何ができるか
Aiven MCPは、Aivenアカウントの権限で動くMCPサーバーです。サーバー側の説明によると、PostgreSQLではSQLの実行、スキーマ・インデックス・拡張機能・pgvectorの管理ができます。Kafkaではトピックの作成、メッセージの送受信、問題メッセージの追跡ができます。
READMEのツール一覧は、用途ごとに次のように分かれています。
| 区分 | 主なツール | できること |
|---|---|---|
| Core | 主なツールaiven_project_list / aiven_service_list / aiven_service_create / aiven_service_update | できることプロジェクト・サービスの一覧、作成、プランや電源状態の更新 |
| Core | 主なツールaiven_service_plan_pricing / aiven_project_get_service_logs | できることプラン料金の確認、サービスログの取得 |
| PostgreSQL | 主なツールaiven_pg_read / aiven_pg_write | できること読み取り専用SQL、書き込みSQL(INSERT・UPDATE・DELETE・CREATE TABLEなど) |
| PostgreSQL | 主なツールaiven_pg_optimize_query | できることクエリ最適化(EverSQL) |
| Kafka | 主なツールaiven_kafka_topic_create / aiven_kafka_topic_delete | できることトピックの作成・削除 |
| Kafka | 主なツールaiven_kafka_topic_message_list / aiven_kafka_topic_message_produce | できることメッセージの読み取り・送信 |
| Kafka | 主なツールaiven_kafka_connect_* | できることコネクタの一覧・作成・停止・再開・削除 |
| Documentation | 主なツールaiven_docs_search | できることAiven公式ドキュメントの検索(ホスト版のみ) |
料金面では、Aiven MCPサーバー自体はAivenアカウントに含まれて無料と案内されています。ただし作成したサービスの利用料は別です。サービス作成の前に、aiven_service_plan_pricing でプラン料金を確かめられます。
手順1: 読み取り専用で接続する
権限を絞るオプションは、URLのクエリパラメータで指定します。初回は read_only=true を付けた形で登録するのが無難です。書き込み系のツールがそもそも公開されないので、プロンプトの解釈違いで何かが消える経路がなくなります。
claude mcp add --scope user --transport http aiven-mcp \
"https://mcp.aiven.live/mcp?read_only=true"READMEにある基本形は、?read_only=true を付けない claude mcp add --scope user --transport http aiven-mcp "https://mcp.aiven.live/mcp" です。--scope user は全プロジェクトで使える代わりに、設定は ~/.claude.json に保存され、チームには共有されません。特定のリポジトリだけで使うなら、--scope を省いたローカルスコープ(既定)でも登録できます。
登録後にClaude Codeを起動し、/mcp を開きます。認証が必要な状態なら、Aivenのサインインを求められます。ブラウザでAivenにログインして認可すると、ツール一覧が現れます。
/mcpシェル側からは claude mcp get aiven-mcp で接続状態を確かめられます。✔ Connected なら準備完了です。! Needs authentication と出たら、/mcp から認証を済ませます。
認証方式の違い
ホスト版では、Claude CodeがOAuthでAivenにサインインし、トークンをリクエストごとに送ります。READMEでは、リモート(HTTP)モードに AIVEN_TOKEN は不要と説明されています。ローカルのstdio版を選ぶ場合だけ、次のようにAPIトークンを環境変数で渡します。
claude mcp add --scope user aiven-mcp \
-e AIVEN_TOKEN=your-token-here -- npx -y mcp-aivenstdio版はNode.js 18以上が必要です。トークンはAivenアカウントの権限をそのまま持つので、扱いはパスワードと同じです。
手順2: 見せるツールを絞る
URLには、公開するツールの範囲を決める services_scope も付けられます。core(プロジェクトとサービスの検出)は常に含まれ、残りは pg / kafka / application / integrations / opensearch から選びます。カンマで組み合わせられ、all だけは他と併用できません。
| 目的 | URL |
|---|---|
| PostgreSQLを読むだけ | URLhttps://mcp.aiven.live/mcp?services_scope=pg&read_only=true |
| Kafkaだけ触る | URLhttps://mcp.aiven.live/mcp?services_scope=kafka |
| PostgreSQLとKafkaの両方 | URLhttps://mcp.aiven.live/mcp?services_scope=pg,kafka |
範囲を絞ると、Claudeに渡るツール定義が減ります。誤操作の面を狭めるだけでなく、コンテキストの消費も抑えられます。opensearch を指定しても、READMEによれば専用ツールはまだなく、core だけが出ます。
一部の書き込みだけ許可する
「基本は読み取り専用だが、Kafkaトピックだけ作らせたい」場合は write_allowlist を使います。read_only=true のときだけ有効で、指定したツール名の書き込みだけが復活します。
https://mcp.aiven.live/mcp?read_only=true&write_allowlist=aiven_kafka_topic_createこの形なら、トピックの作成はできても、トピックの削除(aiven_kafka_topic_delete)やSQLの書き込み(aiven_pg_write)は公開されません。
接続情報(パスワード)を返すツールは既定で無効
READMEの環境変数表には AIVEN_ALLOW_SECRETS があります。true にすると、パスワード・接続URI・証明書を会話に返す aiven_service_connection_info が公開されます。既定は false で、AIVEN_READ_ONLY=true の間は無効のままです。接続情報が会話に載ると、ログや転記から漏れる経路が増えます。アプリの接続設定は、会話の外でAivenコンソールから取るほうが選択肢です。
手順3: PostgreSQLとKafkaを作る
作成には書き込み権限が要るので、ここでは read_only なしの接続に切り替えます。claude mcp remove aiven-mcp で外してから、書き込み可能なURLで登録し直します。
claude mcp remove aiven-mcp
claude mcp add --scope user --transport http aiven-mcp \
"https://mcp.aiven.live/mcp?services_scope=pg,kafka"プロンプトは、いきなり作らせず「調べる→提案させる→承認して作る」の3段に分けます。
Aivenのプロジェクト一覧を出して。新しい検証用サービスを作る前に、
PostgreSQLとKafkaそれぞれの最小プランの料金(AWSの東京リージョン)を
aiven_service_plan_pricingで調べて表にして。まだ作成はしないこと。料金表を読んだうえで、作成を指示します。
さっきの表のうち、PostgreSQLの最小プランを1つだけ作成して。
サービス名は dev-game-pg。作成後、サービスの状態を確認して
RUNNINGになるまで待ち、結果を報告して。Kafkaはまだ作らないで。「1つだけ」「Kafkaはまだ作らない」と範囲を明示するのがコツです。課金が発生する操作は、1回の指示で1サービスに留めると、請求の追跡も後始末も簡単になります。
サービスが立ち上がったら、Kafkaも同じ型で作ります。トピックの作成と動作確認は次の流れです。
Kafkaサービス dev-game-kafka に player-moves トピックを作成して。
その後、テストメッセージを1件送り、aiven_kafka_topic_message_listで
読み戻して、送ったものと一致するか確認して。Aivenの紹介ページは、この組み合わせの例として「マルチプレイヤーゲームの状態とリーダーボードをPostgreSQLに、プレイヤーの動きをKafkaに置く」というバックエンド構築を挙げています。AIエディタに頼めば、インフラに触れずに配線までできるという趣旨です。
手順4: Claude Code側でも安全柵を足す
Aiven側のURLオプションは、サーバーが公開するツールを絞る仕組みです。これとは別に、Claude Code側の権限設定でも、危険なツールを承認制か拒否にできます。MCPツールの名前は mcp__<サーバー名>__<ツール名> で、サーバー名は登録時に付けた aiven-mcp です。
.claude/settings.json に次のように書くと、削除系は拒否、作成と書き込みは都度確認になります。
{
"permissions": {
"deny": [
"mcp__aiven-mcp__aiven_kafka_topic_delete",
"mcp__aiven-mcp__aiven_kafka_connect_delete_connector"
],
"ask": [
"mcp__aiven-mcp__aiven_service_create",
"mcp__aiven-mcp__aiven_service_update",
"mcp__aiven-mcp__aiven_pg_write"
]
}
}ツール名単位でallow / ask / denyを決める考え方は、Claude CodeのMCPサーバー設定で扱う権限と同じです。mcp__aiven-mcp__* と書けば、このサーバーの全ツールをまとめて指定できます。サーバー名にハイフンを含む aiven-mcp はそのまま書けます。ピリオドや空白を含む名前にした場合は、_ に置き換わる点に注意してください。
CLAUDE.mdにも、人間向けの運用ルールを短く書いておくと効きます。
## Aiven MCPの扱い
- サービスの作成・更新・削除の前に、対象サービス名とプランと概算料金を提示して承認を取る
- 本番プロジェクト(名前に prod を含むもの)には書き込み系ツールを使わない
- 接続文字列やパスワードを会話に出さないCLAUDE.mdは助言であって強制力はありません。強制したい制約は、前掲の permissions かURLオプションで担保し、CLAUDE.mdは「なぜそうするか」を伝える補助に使う分担です。
つまずいたときの切り分け
接続できない、あるいはツールが出ない場合は、上から順に確かめます。
Aiven MCPが使えないときの順番
- Qclaude mcp get aiven-mcp で Connected と出ていますか?答えがいいえのとき答えがはい
Needs authenticationなら /mcpで認証し直します。FailedならURLの綴りと、同名のサーバーが別スコープに残っていないかを確認します。
- Qツール一覧に目的のツールがありますか?答えがいいえのとき答えがはい
read_only=trueやservices_scopeの指定で除外されている可能性があります。URLを見直して登録し直します。
ツールが見えて呼べる状態
あとは権限設定のask / denyにかかっていないかを見れば、指示どおりに動きます。
AWS・Azure・Google Cloudのマーケットプレイス経由でAivenを契約している場合は、サインイン先のコンソールが異なります。READMEでは、URLのパスに /mcp/aws・/mcp/azure・/mcp/gcp を足して登録するよう説明されています。たとえば https://mcp.aiven.live/mcp/gcp?services_scope=pg&read_only=true の形で、クエリパラメータとも併用できます。
アプリケーションのデプロイも同じ入口で扱える
ツール一覧には、PostgreSQLやKafkaのほかに「Applications」の区分もあります。aiven_vcs_integration_initialize でGitHubアカウントとの連携をブラウザ経由で始め、aiven_vcs_integration_repository_scan_container_manifest でContainerfileやDockerfileからAivenのサービス構成の候補を導き、aiven_application_create で初回デプロイまで進める流れです。services_scope=application を付けた接続なら、この区分のツールだけを公開できます。DBとアプリを別々のURLで登録し分けると、権限の粒度も分けられます。
既存のMCP記事との使い分け
Aiven MCPは「マネージドサービスの作成と運用」を含む点が特徴です。既存のDBにつなぐだけなら、専用のPostgreSQL向けMCPで足ります。索引提案やヘルスチェックならPostgres MCP Proの使い方、Kafkaのコンシューマーグループ調査ならKafka MCPサーバーの調査手順が向いています。Aiven側で立てたサービスの調査にも、これらの考え方は流用できます。
MCP全般のリスクの考え方は、MCPセキュリティの全体像にまとめています。
まとめ
Aiven MCPで最初に決めるのは、機能ではなくURLの末尾です。read_only=true で入り、必要になったら services_scope と write_allowlist で書き込みを1つずつ足し、Claude Code側では削除系を deny にしておく。この順で広げれば、PostgreSQLとKafkaを作る場面でも、取り返しのつかない操作を手元で止められます。