kafka-mcp-server について
kafka-mcp-serverは、自然言語による操作のためにMCPクライアントをApache Kafkaクラスターへ接続します。トピックやメッセージの操作、クラスター情報、コンシューマーグループ情報を扱えます。
主な機能
- 01トピックの一覧表示と作成
- 02メッセージの消費と送信
- 03ブローカーとコントローラーの確認
- 04コンシューマーグループと遅延の一覧表示
- 05最古・最新オフセットの取得
- 06ツール呼び出しの順次一括実行
活用シーン
- 01Kafkaクラスター内のトピック確認
- 02Kafkaメッセージの送受信
- 03コンシューマーグループの遅延確認
- 04依存するツール呼び出しを1リクエストで実行
MCP 対応
Kafkaクラスター操作をMCPツールとして提供します。オプションのMultiplexToolは呼び出しを順番にまとめ、先行する出力を後続の入力に利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e KAFKA_MCP_BOOTSTRAP_SERVERS ghcr.io/cefboud/kafka-mcp-serverKAFKA_MCP_BOOTSTRAP_SERVERSローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/cefboud/kafka-mcp-serverstdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Kafka MCP Server
Kafka MCP Server は、自然言語(LLM)を使って Kafka クラスターとやり取りできるよう、Apache Kafka との統合を提供する Model Context Protocol (MCP) サーバーです。
前提条件
MCP サーバーをローカルで実行するには、Docker または Golang が必要です。
はじめに
Kafka クラスターにアクセスできる必要があります。クイックスタートドキュメントに従ってください。
docker pull apache/kafka:4.0.0
docker run -p 9092:9092 apache/kafka:4.0.0
Kafka は現在 localhost:9092 で利用できます。
Claude Desktop での使用方法
Docker:
{
"mcpServers": {
"kafka": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"KAFKA_MCP_BOOTSTRAP_SERVERS",
"ghcr.io/cefboud/kafka-mcp-server"
],
"env": {
"KAFKA_MCP_BOOTSTRAP_SERVERS": "localhost:9092"
}
}
}
}
ローカルでのビルド
cd <workdir>
git clone https://github.com/CefBoud/kafka-mcp-server.git
cd kafka-mcp-server
go build -o kafka-mcp-server cmd/kafka-mcp-server/main.go
{
"mcpServers": {
"kafka": {
"command": "<workdir>/kafka-mcp-server/kafka-mcp-server",
"args": [
"stdio",
],
"env": {
"KAFKA_MCP_BOOTSTRAP_SERVERS": "localhost:9092"
}
}
}
}
オプション:
--bootstrap-servers string Comma-separated list of the Kafka servers to connect to.
--enable-command-logging When enabled, the server will log all command requests and responses to the log file
--log-file string Path to log file
--read-only Restrict the server to read-only operations
すべてのオプションは環境変数として渡すことができます。大文字にし、ハイフンをアンダースコアに置き換え、MCP_KAFKA_ を前置します。たとえば、--bootstrap-servers は MCP_KAFKA_BOOTSTRAP_SERVERS になります。
利用可能な MCP ツール
- トピックの一覧表示
- トピックの作成
- メッセージの消費。
- メッセージの生成。
- クラスターの説明(ブローカーとコントローラーの一覧)
- コンシューマーグループとそのラグの一覧表示。
- トピックの最古および最新のオフセットの取得(GetOffsetShell)
- コンシューマーグループのオフセットのリセット。
- Kafka Connect ??
- Schema Registry ??
🔀 MultiplexTool
多くのツールを順番に実行するのは、特に各ツールが直前の出力に依存する場合、面倒で時間がかかります。そのため、クライアントとサーバーの間で何度もやり取りする必要があります。
MultiplexTool を使うと、クライアントはツール呼び出しのリストを1つのリクエストにまとめ、順番に実行できます。また、プロンプトベースのプレースホルダーを使って以前の出力を参照し、ツール間の動的な依存関係をサポートします。
ツールの入力が前の結果に依存する場合、クライアントは PROMPT_ARGUMENT: 形式を使用して、LLM へのプロンプトを通じてその入力を動的に生成します(現在は Gemini のみサポートされています)。
例:
"userId": "PROMPT_ARGUMENT: the ID of the created user"
CLI フラグ:
--enable-multiplex:ツール呼び出しの多重化を有効にします。--multiplex-model:PROMPT_ARGUMENTの推論に使用するモデル(例:gemini)を指定します。GEMINI_API_KEY環境変数が必要です。
{
"mcpServers": {
"kafka": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"KAFKA_MCP_BOOTSTRAP_SERVERS",
"ghcr.io/cefboud/kafka-mcp-server",
"--enable-multiplex",
"--multiplex-model",
"gemini"
],
"env": {
"KAFKA_MCP_BOOTSTRAP_SERVERS": "localhost:9092",
"GEMINI_API_KEY": "....."
}
}
}
}
クレジット
- github.com/github/github-mcp-server
- github.com/mark3labs/mcp-go
- github.com/IBM/sarama
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。