Claude Media
Kafka Schema Registry MCPサーバーでスキーマ管理をClaudeに任せる

Kafka Schema Registry MCPサーバーでスキーマ管理をClaudeに任せる

aywengo/kafka-schema-reg-mcpは50以上のツールを持つ非公式MCPサーバーです。スキーマの登録・互換性チェック・レジストリ間マイグレーションをClaude Desktop/Codeから行う手順をまとめます。

Kafkaのトピック操作向けMCPサーバーとは別に、Schema Registry専用の実装がaywengo/kafka-schema-reg-mcpです。スキーマの登録・互換性チェック・複数レジストリ間のマイグレーションといった、Schema Registryならではの運用をClaude Desktop・Claude Codeから自然言語で行えます。

Kafka Schema Registry MCPサーバーとは — 50以上のツールを持つ非公式実装

aywengo/kafka-schema-reg-mcpはPython製のMCPサーバーで、Confluent互換のSchema Registryに対して50以上のツールと19のリソースを公開します。MCPの2025-11-25仕様に準拠し、FastMCP 3.2.0以上(3.x系、4未満)を実行基盤に使います。ConfluentもApache Kafkaプロジェクトも公式のSchema Registry向けMCPサーバーは配布しておらず、これも第三者によるOSS実装です。

対応する操作はスキーマの登録・バージョン管理・互換性チェックに加え、最大8つのレジストリを同時に扱うマルチレジストリ管理、レジストリ間のスキーマ移行、JSON/Avro IDL形式でのエクスポートまで及びます。

Claude Desktop・Claude Codeへの追加手順

最も手早いのはDockerです。

docker pull aywengo/kafka-schema-reg-mcp:stable
docker run -e SCHEMA_REGISTRY_URL=http://localhost:8081 \
  -e SLIM_MODE=true \
  aywengo/kafka-schema-reg-mcp:stable

Claude Desktopでは、リポジトリのconfig-examples/に用意された設定ファイルをコピーします。

# macOS
cp config-examples/claude_desktop_stable_config.json \
  ~/Library/Application\ Support/Claude/claude_desktop_config.json

Claude Codeで使う場合は、他のstdioサーバーと同じ形でclaude mcp addに環境変数を渡します。

claude mcp add schema-registry \
  --env SCHEMA_REGISTRY_URL=http://localhost:8081 \
  --env SLIM_MODE=true \
  -- python kafka_schema_registry_unified_mcp.py

Dockerを使わずローカルのPython環境で動かす場合は、リポジトリをクローンして依存関係を入れます。

git clone https://github.com/aywengo/kafka-schema-reg-mcp
cd kafka-schema-reg-mcp
pip install -r requirements.txt
python kafka_schema_registry_unified_mcp.py

SLIM_MODEでツール数を絞る

50以上あるツールをすべて公開すると、LLM側のツール選択が遅くなりトークン消費も増えます。SLIM_MODE=trueを指定すると、公開ツールは9個程度の必須セットに絞られます。

ツール群SLIM_MODE内容
基本の読み取りSLIM_MODE含む内容ping・レジストリ切り替え・件数集計
基本の書き込みSLIM_MODE含む内容register_schemacheck_compatibilitycreate_context
エクスポートSLIM_MODE含む内容export_schemaexport_subject
マイグレーションSLIM_MODE含まない内容migrate_schemamigrate_context
バッチ削除SLIM_MODE含まない内容clear_context_batchほか
インタラクティブ操作SLIM_MODE含まない内容*_interactive系の対話型ツール

読み取り中心の本番運用ならSLIM_MODEが既定の選択肢です。スキーマ移行やコンテキストの一括整理といった管理者・SRE向けの操作をするときだけ、SLIM_MODEを外して全ツールセットで起動します。読み取り専用のリソース(registry://schema://subject://のURI群、計19種類)はSLIM_MODEの有無にかかわらず常に使えます。

スキーマの登録と互換性チェックを自然言語で行う

「idとname、emailフィールドを持つユーザースキーマを登録して」と指示すると、Claude側がAvroスキーマの形に組み立ててregister_schemaツールを呼び出します。既存スキーマを変更する場合は「更新したスキーマに互換性があるか確認して」と伝えるだけで、check_compatibilityツールがBACKWARD・FORWARD・FULLいずれかのモードで判定します。

ツールよりリソースを使うと何が速くなるか

このMCPサーバーはlist_registriesget_schemaのような従来型のツールに加え、registry://namesschema://{name}/{context}/{subject}のようなリソースURIも並行して提供します。読み取り専用の操作は、性能面ではリソース経由の方が効率的です。ツール版は既存クライアントとの互換性を保つために残されている「バックワード互換ラッパー」で、内部的にはリソースと同じ実装を呼び出しています。

どのリソースを使えばよいか迷ったときのために、suggest_resource_for_toolというツール自体も用意されています。使いたいツール名を渡すと、対応するリソースURIを教えてくれる、いわば移行支援用のツールです。読み取りが中心のワークロードでは、ツールよりリソースを優先すると応答が速くなります。

マルチレジストリでdev/stg/prodを横断管理する

環境ごとに別々のSchema Registryを立てている構成では、レジストリを最大8つまで同時登録できます。

export SCHEMA_REGISTRY_NAME_1="development"
export SCHEMA_REGISTRY_URL_1="http://dev-registry:8081"
export VIEWONLY_1="false"
 
export SCHEMA_REGISTRY_NAME_2="production"
export SCHEMA_REGISTRY_URL_2="http://prod-registry:8081"
export VIEWONLY_2="true"

VIEWONLYはレジストリ単位で設定します。本番用のレジストリだけtrueにしておけば、開発環境のスキーマを操作するつもりの指示が誤って本番に書き込まれることはありません。「開発と本番のレジストリを比較して」「本番にだけ存在しないスキーマを探して」といった横断的な指示も、compare_registriesfind_missing_schemasツールで対応します。

スキーマのエクスポートとレジストリ間マイグレーション

バックアップやドキュメント化の目的で、スキーマをJSON・Avro IDL形式でエクスポートできます。単一スキーマのexport_schemaから、サブジェクト全体のexport_subject、コンテキスト単位のexport_context、レジストリ全体のexport_globalまで、対象範囲を段階的に広げられます。

レジストリ間のマイグレーションは、移行前の自動バックアップと移行後の検証が組み込まれています。「stagingのuser-eventsスキーマをproductionに移行して」と指示すると、移行元のバックアップ作成、スキーマのコピー、移行後の整合性確認までが1つの操作として実行されます。複雑な移行ではユーザーの好みを対話的に確認しながら進めるguided_schema_migrationワークフローも用意されています。

Claude Codeスキルで定型作業を自動化する

このリポジトリはMCPサーバー本体とは別に、Claude Code向けのスキルを5種類同梱しています。/schema-generateは自然言語からAvroスキーマの雛形を生成し、/schema-evolveは既存スキーマへのフィールド追加を互換性チェック込みで実行します。/migration-planは環境間の移行計画をロールバック手順込みで作成し、/lint-and-testはBlack・Ruff・isort・Flake8を使った品質チェックをコミット前・push前の段階別に実行します。/context-compareはコンテキスト間のスキーマ差分比較に使います。

認証とプロダクションセーフティ

OAuth 2.1認証はAzure AD・Google OAuth・Keycloak・Okta・GitHubに対応し、権限はreadwriteadminの3スコープで管理します。

export ENABLE_AUTH=true
export AUTH_ISSUER_URL="https://your-oauth-provider.com"
export AUTH_AUDIENCE="your-client-id"

これとは別に、URLバリデーションによるSSRF対策も組み込まれています。localhostへのアクセスを許可するかどうかを設定で切り替えられるため、社内ネットワーク限定の運用では制限を強めに倒せます。

最近のセキュリティ修正

直近のv2.2.2(2026年8月22日リリース)では、setuptoolsの脆弱性(CVE-2025-47273)とmsgpackの脆弱性(GHSA-6v7p-g79w-8964)への対応で依存関係を固定し、Docker本番イメージからはpip・setuptools・wheelを取り除いてスキャンノイズも減らしています。さらに開発版(Unreleased)では、FastMCPの認証済みSSRF脆弱性(CVE-2026-32871)とOAuthProxyのconfused deputy脆弱性(CVE-2026-27124)への対応として、FastMCPを3.2.0以上・4未満に固定する変更も進んでいます。継続的にDependabotのPRを取り込んで依存関係を更新しているこの頻度とCVE対応の速さは、OSSのMCPサーバーを本番に繋ぐ前の選定基準に入れておくと安心です。

使い分け早見表

状況設定理由
本番の読み取り専用運用設定SLIM_MODE=true + VIEWONLY=true理由誤操作の余地を最小化できる
スキーマの新規開発・頻繁な変更設定SLIM_MODE=false理由register/check_compatibilityに加え対話型ツールも使える
dev/stg/prodの横断管理設定マルチレジストリ設定(最大8つ)理由レジストリごとにVIEWONLYを独立制御できる
CI/CDでの互換性ゲート設定SLIM_MODE=true、read/writeスコープのみ理由管理者権限を渡さずチェックだけ回せる

よくあるつまずき

  • SLIM_MODE=trueにしたらマイグレーションツールが見えなくなった: 想定どおりの挙動です。migrate_schemaclear_context_batchのような管理者向け操作はSLIM_MODEでは非表示になります。必要なときだけSLIM_MODE=falseで再起動してください
  • 本番レジストリへの書き込みが誤って通ってしまった: VIEWONLY_2のようにレジストリ番号ごとの環境変数を設定しているか確認します。全体を一括で読み取り専用にする単一のフラグはなく、レジストリ単位での設定が必要です
  • Dockerで起動したのにポートに繋がらない: 直接Dockerで起動する場合はホスト側のポートを明示的にマッピングする必要があります。docker run -d -p 38000:8000のようにポート指定を忘れないでください
  • FastMCP 4系にアップデートしたら動かなくなった: このMCPサーバーはFastMCPを3.2.0以上・4未満に固定して運用する前提です(開発版ではCVE対応も兼ねてこの範囲固定を進めています)。4系への追随はFastMCP 4のGA後に予定されており、現状は3.x系での運用が前提です

トピックの一覧やコンシューマーラグの確認までClaudeに任せたい場合は、Kafka MCPサーバーでトピックとコンシューマーグループを調べるを参照してください。Dockerで配布されるMCPサーバーの追加パターンはDocker Hub MCPサーバーでClaudeにイメージを検索・選定させる、MCPサーバー追加コマンドの構文全般はClaude Code MCP設定ガイドにまとめています。

まとめ

aywengo/kafka-schema-reg-mcpは、トピック操作向けのKafka MCPサーバーとは別物のSchema Registry専用実装です。まずはSLIM_MODE=trueで必要最小限のツールから試し、マイグレーションのような管理者向け操作が必要になったタイミングでフルモードに切り替えるのが安全です。本番レジストリにはVIEWONLYを個別に設定し、FastMCPのバージョン固定によるセキュリティ対応も定期的に確認してください。

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