这是一个基于 Model Context Protocol (MCP) 的服务器端应用,旨在为大型语言模型(LLM)客户端提供标准化的方式来访问和操作 Kafka Schema Registry。它充当 LLM 与 Schema Registry 之间的桥梁,允许LLM通过结构化的工具调用来执行模式管理、上下文控制、配置更新、数据导出以及跨注册中心的迁移等任务。
主要功能点
- 模式管理: 提供对 Kafka Schema Registry 中的 Avro、JSON 或 Protobuf 模式进行注册、获取、版本控制、兼容性检查以及删除等操作的能力。
- 模式上下文 (Schema Contexts): 支持 Schema Registry 的上下文特性,允许在逻辑上对模式进行分组(如按环境 DEV/PROD、租户或团队),实现模式的隔离和管理。
- 配置与模式控制: 允许 LLM 控制 Schema Registry 的全局或主题级别的兼容性设置,以及管理注册中心的操作模式(如 'READWRITE', 'READONLY', 'IMPORT')。
- 模式导出与导入: 提供灵活的模式导出能力,支持多种格式(JSON, Avro IDL, ZIP Bundle)和不同范围(单个模式、主题、上下文、全局),便于备份、迁移和文档生成。
- 多注册中心支持: 能够连接并同时管理多个 Kafka Schema Registry 实例,支持跨注册中心的操作,如比较、迁移和同步模式。
- 异步任务处理: 支持将长时间运行的操作(如批量清理、大规模迁移)作为后台异步任务执行,并通过工具查询进度和结果。
- 只读模式 (READONLY): 提供安全特性,可配置服务器全局或按注册中心进入只读模式,阻止修改类操作,保护生产环境。
安装步骤
- 确保已安装前提条件: 需要运行中的 Kafka Schema Registry 实例。推荐使用 Docker 或 Python 3.11+ 环境。
- 使用 Docker (推荐): 直接从 DockerHub 拉取预构建的镜像。
docker pull aywengo/kafka-schema-reg-mcp:stable # 或使用特定版本 # docker pull aywengo/kafka-schema-reg-mcp:vX.Y.Z - 本地安装 Python:
- 克隆仓库: 'git clone https://github.com/aywengo/kafka-schema-reg-mcp'
- 进入目录: 'cd kafka-schema-reg-mcp'
- 安装 Python 依赖: 'pip install -r requirements.txt'
服务器配置
MCP 服务器作为独立的进程运行,并通过标准 I/O (stdio) 与 LLM 客户端通信。LLM 客户端(如 Claude Desktop)需要配置如何启动此服务器进程并传递必要的环境变量。
客户端配置信息通常包含 'command'(启动命令)、'args'(启动参数)和 'env'(环境变量)。您需要根据您的安装方式配置这些信息。
- 启动命令 (command) 和 参数 (args):
- 如果使用 Docker: 'command' 可能设置为 'docker','args' 设置为 '["run", "--rm", "-i", "--network", "host", "-e", "SCHEMA_REGISTRY_URL", "aywengo/kafka-schema-reg-mcp:stable", ...]' (根据需要调整网络、卷、其他环境变量等参数)。
- 如果本地 Python 安装: 'command' 设置为 'python','args' 设置为 '["/path/to/kafka_schema_registry_multi_mcp.py", ...]' (请替换 '/path/to/' 为实际路径)。
- 环境变量 (env): 在 'env' 部分配置连接到 Kafka Schema Registry 的必要信息。
- 单注册中心模式: 设置 'SCHEMA_REGISTRY_URL',可选设置 'SCHEMA_REGISTRY_USER', 'SCHEMA_REGISTRY_PASSWORD' 和 'READONLY'。
{ "command": "...", // 根据安装方式设置 "args": ["...", "..."], // 根据安装方式设置 "env": { "SCHEMA_REGISTRY_URL": "http://localhost:8081", "SCHEMA_REGISTRY_USER": "", "SCHEMA_REGISTRY_PASSWORD": "", "READONLY": "false" } } - 多注册中心模式: 使用编号的环境变量设置多个注册中心(最多支持8个)。例如 'SCHEMA_REGISTRY_NAME_1', 'SCHEMA_REGISTRY_URL_1', 'READONLY_1' 等。
{ "command": "...", "args": ["...", "..."], "env": { "SCHEMA_REGISTRY_NAME_1": "development", "SCHEMA_REGISTRY_URL_1": "http://dev-schema-registry:8081", "READONLY_1": "false", "SCHEMA_REGISTRY_NAME_2": "production", "SCHEMA_REGISTRY_URL_2": "http://prod-schema-registry:8081", "READONLY_2": "true" // 生产环境只读保护 // ... 可配置 SCHEMA_REGISTRY_USER_X, SCHEMA_REGISTRY_PASSWORD_X } }
- 单注册中心模式: 设置 'SCHEMA_REGISTRY_URL',可选设置 'SCHEMA_REGISTRY_USER', 'SCHEMA_REGISTRY_PASSWORD' 和 'READONLY'。
基本使用方法
- 配置您的 LLM 客户端(如 Claude Desktop)以启动和连接到此 MCP 服务器。
- 启动 LLM 客户端。MCP 服务器应作为子进程启动。
- 在 LLM 客户端界面中,您现在可以使用自然语言调用服务器提供的工具和访问资源。
- 例如,您可以尝试以下指令(根据您的具体需求和配置调整):
- "列出所有 Schema Registry 实例" (list_registries)
- "获取 dev 注册中心中的 subjects" (list_subjects, registry="dev")
- "注册一个名为 User 的 schema,包含 id, name, email 字段" (register_schema)
- "导出 production 上 user-events schema 的最新版本,使用 Avro IDL 格式" (export_schema)
- "检查 development 上 user-events schema 的 v2 版本是否与 v1 兼容" (check_compatibility)
- "比较 development 和 staging 注册中心之间的模式差异" (compare_registries)
- "将 user-profile schema 从 development 迁移到 production" (migrate_schema)
- "启动清理 analytics 环境的批量任务" (clear_context_batch)
- "检查正在运行的迁移任务进度" (list_migrations 或 get_task_progress)
服务器通过 JSON-RPC 协议与客户端通信,并提供丰富的工具(Tools)和资源(Resources)供 LLM 调用和访问。
信息
分类
数据库与文件