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の製品ではなく、個人のリポジトリで公開されている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/に用意された設定ファイルをコピーします。cpは同名のファイルを上書きするので、すでに他のサーバーを登録している場合は、サンプルのmcpServersの中身だけを既存の設定へ書き足します。

# 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で起動すると公開ツールが必須セットに絞られます。ただし「何個に絞られるか」は、READMEの中でも箇所によって数字が違います。

数字

READMEに出てくるツールの数

  • 全ツール(フルモード)

    50+

    READMEの機能紹介

  • SLIM_MODEの見出し

    約9

    「Reduces tools from 50+ to ~9」

  • SLIM_MODEの列挙

    11

    ping・件数集計3種・登録・互換性チェックなど

  • 表で✅のツール

    26

    従来型の読み取りツールを含む

数え方によって9〜26の幅がある

表の26個には、list_subjectsやget_schemaといった互換ラッパー12個と、list_available_resourcesなど3個が含まれます。リソースは19種類すべてがSLIM_MODEでも使えるので、読み取りの入口はどの数え方でも揃っています。絞り込みで消えるのは、書き換え・削除・移行の側です。

くらべる

SLIM_MODEの有無で変わるツール

既定の選択肢

SLIM_MODE=true

基本の書き込みのregister_schema・check_compatibility・create_contextと、export_schema・export_subjectが残ります。READMEは、日常の運用と読み取り中心の本番運用ではこちらを選ぶ構成として書いています。

管理者・SRE向け

SLIM_MODE=false

migrate_schema・migrate_contextと、clear_context_batchなどのバッチ削除が加わります。*_interactiveの対話型ツールとexport_context・export_globalも同様です。設定の更新や削除系のツールも、フルモードでだけ見えます。

SLIM_MODEに残るツールにも権限の違いがあります。READMEの表ではregister_schemaとcreate_contextがwrite、check_compatibilityがreadです。set_default_registryだけはadminです。表の分類どおりなら、OAuthでread・writeだけを渡したユーザーには、SLIM_MODEでも既定レジストリの切り替えが許されないことになります。

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

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

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

このMCPサーバーはlist_registriesやget_schemaのような従来型のツールに加え、registry://namesやschema://{name}/{context}/{subject}のようなリソースURIも並行して提供します。READMEは、読み取り専用の操作ではリソース経由への移行を勧めています。ツール版は既存クライアントとの互換性のために残された「バックワード互換ラッパー」で、内部では効率的な実装を使います。ツールとして公開し続けるのは、クライアントが「Tool not listed」エラーを出さないようにするためです。

どのリソースを使えばよいか迷ったときのために、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_1のように番号を付けるとレジストリ単位、番号なしのVIEWONLYは単一レジストリ構成での読み取り専用モードです(どちらも既定はfalse)。本番用のレジストリだけtrueにしておけば、開発環境を操作するつもりの指示が本番を書き換える事故を抑えられます。READMEはこの機能を「本番での誤変更を防ぐ」ものと位置づけています。「開発と本番のレジストリを比較して」「本番にだけ存在しないスキーマを探して」といった横断的な指示は、compare_registriesやfind_missing_schemasツールで対応します。どちらもSLIM_MODE=falseのときだけ使えます。

読み取り専用の構成はリポジトリのconfig-examples/にも用意されていて、claude_desktop_viewonly_config.jsonが本番向けの安全設定、claude_desktop_multi_registry_docker.jsonがDockerでのマルチレジストリ構成です。対象のレジストリが読み取り専用かどうかは、check_viewonly_modeツール(SLIM_MODE=falseで利用可、権限はread)でClaude側から確かめられます。

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

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

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

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

このリポジトリはMCPサーバー本体とは別に、Claude Code向けのスキルを5種類同梱しています(置き場所はリポジトリ内の.claude-code/です)。/schema-generateは自然言語からAvroスキーマの雛形を生成します。/schema-evolveは既存スキーマへのフィールド追加を互換性チェック込みで実行するスキルで、/schema-evolve user-profile "add optional phoneNumber field"のように呼びます。/migration-planは環境間の移行計画をロールバック手順込みで作成します。/lint-and-testはBlack・Ruff・isort・Flake8を使った品質チェックです。quick(コミット前、2〜3秒)・fix(自動修正、20〜30秒)・pre-push(10〜15秒)の3段階があります。/context-compareはコンテキスト間のスキーマ差分比較に使います。

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

認証は2層に分かれています。Schema Registryへの接続用のSCHEMA_REGISTRY_USER・SCHEMA_REGISTRY_PASSWORDは、MCPサーバーの利用者を認証する資格情報ではありません。利用者側はOAuth 2.1で、Azure AD・Google OAuth・Keycloak・Okta・GitHubに対応します。権限をread・write・adminの3スコープで管理します。

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

ENABLE_AUTHを設定しなければ、デプロイガイドの説明どおりアクセスは無認証のまま開きます。スコープの既定値(AUTH_DEFAULT_SCOPES)はreadで、書き込みや管理操作を許すにはwrite・adminを付与する設計です。デプロイガイドの本番チェックリストには、ENABLE_AUTH=trueとVIEWONLY=trueに加えて、TLS接続の使用が挙がっています。証明書検証はENFORCE_SSL_TLS_VERIFICATIONで既定で有効、社内認証局を使う場合はCUSTOM_CA_BUNDLE_PATHで指定します。

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

依存関係のセキュリティ修正の履歴

2026年のリリースでCHANGELOGにSecurity項目があるのは、v2.2.1とv2.2.2、それに未リリースの開発版です。

あゆみ

2026年のセキュリティ関連の更新

  1. 2026-04-06v2.2.1

    jaraco-context>=6.1.0を必須にして、GHSA-58pv-8j8x-9vj2(パストラバーサル)に対応しました。FastMCPからkeyring経由で入る間接依存です。

  2. 2026-08-22v2.2.2

    setuptools>=78.1.1でCVE-2025-47273、msgpack>=1.2.1でGHSA-6v7p-g79w-8964に対応しました。Docker本番イメージからはpip・setuptools・wheelを取り除き、スキャンの誤検知を減らしています。

  3. Unreleased開発版

    FastMCPを>=3.2.0,<4に固定します。FastMCPの認証済みSSRF(CVE-2026-32871)とOAuthProxyのconfused deputy(CVE-2026-27124)は、どちらも3.2.0で修正済みです。4系のGAまでは上限を置きます。

2026年のリリース間隔は3か月から4か月半ほどで、修正の中身は直接のコードより依存パッケージの脆弱性が中心です。社内のSchema Registryにつなぐ用途では、使うバージョンのCHANGELOGで依存の下限が最近のCVEに追いついているかを見ておく価値があります。

使い分け早見表

状況設定理由
本番の読み取り専用運用設定SLIM_MODE=true + VIEWONLY=true理由管理・移行・削除系ツールが見えず、残る書き込み系(register_schema・create_context)も読み取り専用モードで止まる
スキーマの新規開発・頻繁な変更設定SLIM_MODE=false理由register/check_compatibilityに加え対話型ツールも使える
dev/stg/prodの横断管理設定マルチレジストリ設定(最大8つ)理由レジストリごとにVIEWONLYを独立制御できる
CI/CDでの互換性ゲート設定SLIM_MODE=true、read/writeスコープのみ理由check_compatibilityはread、register_schemaはwriteで足りる

よくあるつまずき

  • SLIM_MODEを切り替えたのに公開ツールが変わらない: READMEのNoteによると、切り替えにはサーバーの再起動が必要です。
  • Dockerで起動したのにポートに繋がらない: 直接Dockerで起動する場合はホスト側のポートを明示的にマッピングする必要があります。READMEの本番例はdocker run -d -p 38000:8000で、コンテナ内の8000番をホストの38000番に出す形です

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

まとめ

共有環境ではENABLE_AUTHの有無を最初に確かめます。認証を設定しなければ無認証で開くためです。移行や削除はフルモードで立ち上げ直したときだけ行う使い方が、事故の余地を小さく保てます。

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