Kafka MCPサーバーでトピックとコンシューマーグループを調べる
公式MCPサーバーが無いKafkaで、非公式実装kanapuli/mcp-kafkaとtuannvm/kafka-mcp-serverを使いトピック調査とコンシューマーラグ確認をClaude Codeから行う手順です。
Kafka向けのMCPサーバーは、ConfluentもApache Software Foundationも公式には配布していません。存在するのは第三者が個別に開発したOSS実装で、代表的なものがtuannvm/kafka-mcp-serverとkanapuli/mcp-kafkaです。どちらもGo製で、トピック一覧やコンシューマーグループのラグ確認をClaude Codeから自然言語で行えます。
Kafka MCPサーバーとは — 公式実装が存在しない領域
Model Context Protocol(MCP)自体はAnthropicが仕様を公開するオープンな標準ですが、各ミドルウェア向けのサーバー実装は原則としてコミュニティやベンダーが個別に作ります。Kafkaも例外ではなく、Confluent社もApache Kafkaプロジェクト本体も、MCPサーバーを公式リポジトリとして公開していません。
検索すると複数の非公式実装が見つかりますが、本記事ではリポジトリで機能とツール一覧が公開されている2つを扱います。tuannvm/kafka-mcp-serverはプロデュース・コンシューム・コンシューマーグループ監視・クラスタヘルスチェックまでを1つのバイナリでカバーする、機能面で最も充実した実装です。kanapuli/mcp-kafkaはトピックのCRUDとメッセージの送受信に絞った、より小さな実装です。
2つの実装の違い
同じ「Kafka MCPサーバー」でも、カバーする範囲とメンテナンス状況が大きく異なります。tuannvm/kafka-mcp-serverはコンシューマーグループの監視やクラスタ診断など運用寄りの機能を担い、kanapuli/mcp-kafkaはトピックのCRUDに特化しています。RabbitMQ・NATS向けの実装はRabbitMQ MCPサーバーとNATS MCPサーバーでそれぞれ扱っています。
| 項目 | tuannvm/kafka-mcp-server | kanapuli/mcp-kafka |
|---|---|---|
| トピック操作 | tuannvm/kafka-mcp-server一覧・詳細取得(作成・削除ツールは無し) | kanapuli/mcp-kafka作成・一覧・削除・詳細取得 |
| コンシューマーグループ監視 | tuannvm/kafka-mcp-server一覧・詳細・ラグ確認に対応 | kanapuli/mcp-kafka非対応 |
| クラスタヘルスチェック | tuannvm/kafka-mcp-servercluster_overviewリソースで対応 | kanapuli/mcp-kafka非対応 |
| 認証方式 | tuannvm/kafka-mcp-serverSASL(PLAIN/SCRAM-SHA-256/SCRAM-SHA-512)・TLS・OAuth 2.1 | kanapuli/mcp-kafkaSASL_PLAINTEXTとPLAINTEXTのみ(SASL_SSL非対応) |
| 配布形態 | tuannvm/kafka-mcp-serverHomebrewのtap、Dockerイメージ、ソースビルド | kanapuli/mcp-kafkaソースビルドのみ |
tuannvm/kafka-mcp-serverはコンシューマーグループのラグ調査という、運用で最も需要が大きい機能を備えています。以降の手順はこちらを主に扱い、kanapuli/mcp-kafkaは後段で別途紹介します。
tuannvm/kafka-mcp-serverをClaude Codeに追加する
macOS・LinuxならHomebrewが最短です。
brew tap tuannvm/mcp
brew install kafka-mcp-serverインストール後、Claude Codeにclaude mcp addで登録します。ブローカーのアドレスなどは環境変数で渡します。
claude mcp add kafka \
--env KAFKA_BROKERS=localhost:9092 \
--env KAFKA_CLIENT_ID=kafka-mcp-server \
--env MCP_TRANSPORT=stdio \
-- kafka-mcp-serverclaude mcp listでkafkaが接続済みと表示されれば準備完了です。Homebrewを使わない場合はソースからビルドできます。
git clone https://github.com/tuannvm/kafka-mcp-server.git
cd kafka-mcp-server
go build -o kafka-mcp-server ./cmdGHCR(GitHub Container Registry)にもコンテナイメージが公開されており、ghcr.io/tuannvm/kafka-mcp-serverのパッケージページからタグを確認して取得できます。KubernetesやECSのようなコンテナ基盤上でMCPサーバーを常駐させたい場合はこちらが選択肢になります。
Claude Desktopで使う場合はclaude_desktop_config.jsonのmcpServersに次のブロックを追加し、Claude Desktopを再起動します。
{
"mcpServers": {
"kafka": {
"command": "kafka-mcp-server",
"args": [],
"env": {
"KAFKA_BROKERS": "localhost:9092",
"KAFKA_CLIENT_ID": "kafka-mcp-server",
"MCP_TRANSPORT": "stdio"
}
}
}
}提供ツールで何ができるか
tuannvm/kafka-mcp-serverは9個のツールを公開します。
| ツール | できること |
|---|---|
list_topics | できること全トピックの一覧とパーティション・レプリケーション情報の取得 |
describe_topic | できること特定トピックの詳細メタデータ取得 |
produce_message | できることトピックへのメッセージ送信 |
consume_messages | できることトピックからのメッセージ取得(バッチ) |
list_consumer_groups | できることクラスタ内の全コンシューマーグループ一覧 |
describe_consumer_group | できることラグを含むコンシューマーグループの詳細情報 |
list_brokers | できること設定済みブローカーアドレスの一覧 |
describe_configs | できることKafkaリソースの設定値取得 |
cluster_overview | できることクラスタ全体のヘルスサマリー |
トピックの作成・削除ツールはこの実装には含まれていません。読み取りと監視、メッセージの送受信が中心の構成です。
コンシューマーラグを調べる実際の流れ
「注文処理パイプラインが遅れている理由を調べて」のような指示を出すと、Claude Codeは複数のツールを順に組み合わせて調査します。まずlist_consumer_groupsで対象のコンシューマーグループを特定し、describe_consumer_groupにinclude_offsets=trueを渡してパーティションごとのラグを取得します。次にcluster_overviewでブローカーの稼働状況や未同期パーティションの有無を確認し、Kafka側の問題かコンシューマー側の問題かを切り分けます。
ラグがコンシューマー側の処理遅延によるものだと分かれば、max.poll.recordsやmax.poll.interval.msの見直し、コンシューマーインスタンスの増設といった対処案も、同じ会話の中で相談できます。ツールを個別に呼び出す指示を都度書く必要はなく、自然言語の質問だけで調査から提案まで進められます。
認証設定 — SASL・TLS・OAuth 2.1
本番のKafkaクラスタに繋ぐ場合は、認証情報を環境変数で渡します。
claude mcp add kafka \
--env KAFKA_BROKERS=broker1:9092,broker2:9092 \
--env KAFKA_SASL_MECHANISM=scram-sha-512 \
--env KAFKA_SASL_USER=your_user \
--env KAFKA_SASL_PASSWORD=your_password \
--env KAFKA_TLS_ENABLE=true \
-- kafka-mcp-serverHTTPトランスポートで動かす場合のみ、OAuth 2.1認証も選べます。Okta・Google・Azure AD・HMACの4プロバイダーに対応しており、OAUTH_MODEをnativeかproxyで切り替えます。STDIOトランスポート(既定)ではOAuthは使えません。
OAuth有効時のBearerトークン検証には5分間のキャッシュが使われており、リクエストのたびに認可サーバーへ問い合わせる必要はありません。READMEによれば、ユーザー入力の検証やエラーハンドリングも内部の詳細情報を外部に漏らさない設計方針で実装されているとのことです。
Cursorなど他クライアントでの設定
tuannvm/kafka-mcp-serverはClaude Desktop・Claude Code以外に、Cursor・Windsurf・ChatWiseからも同じバイナリで接続できます。Cursorなら~/.cursor/mcp.jsonに、Claude Desktopとほぼ同じ形式のJSONブロックを追加するだけです。
{
"mcpServers": {
"kafka": {
"command": "kafka-mcp-server",
"args": [],
"env": {
"KAFKA_BROKERS": "localhost:9092",
"KAFKA_CLIENT_ID": "kafka-mcp-server",
"MCP_TRANSPORT": "stdio"
}
}
}
}MCPサーバーとしての実装は1つなので、クライアントを切り替えても認証設定やツールの挙動は変わりません。チームで複数のエディタ・クライアントが混在している環境でも、Kafka接続情報の管理方法を1つに統一できます。
複数クライアントの設定をまとめて管理する
Cursor・Claude Desktop・Windsurf・ChatWiseなど、複数のMCPクライアントを併用していると、同じKafka接続情報をクライアントごとに個別編集する手間が生じます。tuannvm/kafka-mcp-serverの作者は、この課題向けにmcpenetesという別ツールも公開しています。go install github.com/tuannvm/mcpenetes@latestで導入し、mcpenetes applyを実行すると、1か所で管理した設定を対応する全クライアントへ一括反映できます。開発用・本番用のように複数のKafka接続を切り替えたい場合、設定のバックアップと復元もこのツールが担います。
MCPリソースとプロンプトでクラスタ診断を定型化する
tuannvm/kafka-mcp-serverはツールとは別に、MCPのリソースとプロンプトという2種類の機能も公開します。リソースはkafka-mcp://overview(クラスタ全体のヘルスサマリー)・kafka-mcp://health-check(対処案付きの詳細な健全性評価)・kafka-mcp://under-replicated-partitions(レプリケーション遅延のあるパーティション分析)・kafka-mcp://consumer-lag-report(閾値を指定できるラグレポート)の4種類です。
プロンプトはkafka_cluster_overview・kafka_health_check・kafka_under_replicated_partitions・kafka_consumer_lag_reportの4つで、いずれもリソースと対になる診断内容を、定型のワークフローとして呼び出せます。Claude Code上ではMCPのプロンプトはスラッシュコマンドとして扱われるため、毎回同じ調査手順を自然言語で説明し直す必要がありません。障害調査のたびに同じ質問を書くより、プロンプトから始める方が速く一貫した結果を得られます。
kanapuli/mcp-kafkaを選ぶ場面
kanapuli/mcp-kafkaはトピックの作成・削除まで含めた、より軽量な実装です。最終コミットは2025年3月18日で、tuannvm/kafka-mcp-serverほど活発には更新されていません。開発環境でトピックをさっと作って消す、といった軽い用途に向いています。
Claude Desktopでの設定はビルドした実行ファイルのパスを直接指定します。
{
"mcpServers": {
"kafka": {
"command": "/path/to/mcp-kafka-darwin-arm64",
"args": [
"--bootstrap-servers=localhost:9092",
"--consumer-group-id=mcp-kafka-consumer-group",
"--username=",
"--password="
],
"env": {}
}
}
}SASL認証はPLAINTEXTとSASL_PLAINTEXTのみに対応し、SASL_SSLは未対応です。TLSで保護されたクラスタに繋ぐ用途では選べません。
トピック作成やメッセージ送信で使うパラメーターは、自然言語の指示から自動で解釈されます。
| パラメーター | 内容 | 必須 |
|---|---|---|
topic | 内容操作対象のトピック名 | 必須必須 |
num_partitions | 内容トピック作成時のパーティション数 | 必須任意 |
replication_factor | 内容トピック作成時のレプリケーション係数 | 必須任意 |
produce_message_key / produce_message_value | 内容送信するメッセージのキーと値 | 必須任意 |
consumer_timeout | 内容メッセージ取得のタイムアウト秒数(既定10秒) | 必須任意 |
「注文完了イベントのトピックを3パーティションで作って」と指示すれば、topicとnum_partitionsが自動で埋まり、明示していないパラメーターは既定値かLLMの推測に委ねられます。
使い分け早見表
| 用途 | おすすめ | 理由 |
|---|---|---|
| コンシューマーラグの調査・障害診断 | おすすめtuannvm/kafka-mcp-server | 理由ラグ確認とクラスタヘルスチェックが揃っている |
| TLS保護されたクラスタへの接続 | おすすめtuannvm/kafka-mcp-server | 理由SASL_SSLとOAuth 2.1に対応 |
| 開発環境でのトピックの作成・削除 | おすすめkanapuli/mcp-kafka | 理由Create/Delete Topicツールを直接持つ |
| CI上での自動テストデータ投入 | おすすめどちらも可 | 理由produce_message系ツールは両実装が持つ |
よくあるつまずき
claude mcp listでFailed to connectと出る:KAFKA_BROKERSが既定のlocalhost:9092のままになっていないか確認します。リモートクラスタなら実際のブローカーアドレスを明示的に渡す必要があります- OAuth設定を入れたのに反映されない: OAuthはHTTPトランスポート専用です。
MCP_TRANSPORT=stdioのままではOAuth関連の環境変数は無視されます kanapuli/mcp-kafkaでSSL接続がエラーになる: この実装はSASL_SSLに対応していません。TLS保護されたクラスタにはtuannvm/kafka-mcp-serverを使ってください- トピックを作成・削除するツールが見つからない:
tuannvm/kafka-mcp-serverには現状Create/Delete Topicツールがありません。作成・削除も含めて自動化したい場合はkanapuli/mcp-kafkaを検討してください
スキーマの互換性チェックやバージョン管理まで含めてClaudeに任せたい場合は、Schema Registry専用の実装を使う手順をKafka Schema Registry MCPサーバーでスキーマ管理をClaudeに任せるにまとめています。MCPサーバー追加コマンドの構文全般やスコープの使い分けはClaude Code MCP設定ガイド、他のインフラ向けMCPサーバーの実装比較はKubernetes MCPサーバーでClaudeからクラスタを操作するを参照してください。
まとめ
ConfluentもApache Kafkaプロジェクトも公式のMCPサーバーは配布していません。コンシューマーラグの調査やクラスタヘルスチェックまで自動化したいならtuannvm/kafka-mcp-server、開発環境でトピックのCRUDを軽く回したいならkanapuli/mcp-kafkaが向いています。本番クラスタに繋ぐ前には、SASL/TLSの認証設定を必ず環境変数で明示し、書き込み権限を持つ資格情報をむやみに渡さないようにしてください。