Claude Media
Kafka MCPサーバーでトピックとコンシューマーグループを調べる

Kafka MCPサーバーでトピックとコンシューマーグループを調べる

公式MCPサーバーが無いKafkaで、非公式実装kanapuli/mcp-kafkaとtuannvm/kafka-mcp-serverを使いトピック調査とコンシューマーラグ確認をClaude Codeから行う手順です。

Kafka向けのMCPサーバーは、ConfluentもApache Software Foundationも公式には配布していません。存在するのは第三者が個別に開発したOSS実装で、代表的なものがtuannvm/kafka-mcp-serverkanapuli/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-serverkanapuli/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.1kanapuli/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-server

claude mcp listkafkaが接続済みと表示されれば準備完了です。Homebrewを使わない場合はソースからビルドできます。

git clone https://github.com/tuannvm/kafka-mcp-server.git
cd kafka-mcp-server
go build -o kafka-mcp-server ./cmd

GHCR(GitHub Container Registry)にもコンテナイメージが公開されており、ghcr.io/tuannvm/kafka-mcp-serverのパッケージページからタグを確認して取得できます。KubernetesやECSのようなコンテナ基盤上でMCPサーバーを常駐させたい場合はこちらが選択肢になります。

Claude Desktopで使う場合はclaude_desktop_config.jsonmcpServersに次のブロックを追加し、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_groupinclude_offsets=trueを渡してパーティションごとのラグを取得します。次にcluster_overviewでブローカーの稼働状況や未同期パーティションの有無を確認し、Kafka側の問題かコンシューマー側の問題かを切り分けます。

ラグがコンシューマー側の処理遅延によるものだと分かれば、max.poll.recordsmax.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-server

HTTPトランスポートで動かす場合のみ、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_overviewkafka_health_checkkafka_under_replicated_partitionskafka_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パーティションで作って」と指示すれば、topicnum_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 listFailed 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の認証設定を必ず環境変数で明示し、書き込み権限を持つ資格情報をむやみに渡さないようにしてください。

この記事を共有:XはてブLinkedIn