Kafka Schema Registry MCP Server
About
A comprehensive Message Control Protocol (MCP) server for Kafka Schema Registry.
Details
- License
- MIT
Explore
docker run -e SCHEMA_REGISTRY_URL=http://localhost:8081 aywengo/kafka-schema-reg-mcp:stable
``
- π€ Claude Desktop Integration - Direct MCP integration with natural language interface
- π’ Multi-Registry Support - Manage up to 8 Schema Registry instances simultaneously
- π Schema Contexts - Logical grouping for production/staging environment isolation
- π Schema Migration - Cross-registry migration with backup and verification
- π Comprehensive Export - JSON, Avro IDL formats for backup and documentation
- π Production Safety - VIEWONLY mode and per-registry access control
- π OAuth 2.1 Authentication - Enterprise-grade security with scope-based permissions
- π Real-time Progress - Async operations with progress tracking and cancellation
- π Resource Linking - HATEOAS navigation with enhanced tool responses
- π§ͺ Full MCP Compliance - 50+ tools following MCP 2025-06-18 specification
- π SLIM_MODE - Reduce tool overhead from 50+ to ~9 essential tools for better LLM performance
> π See detailed feature descriptions: docs/api-reference.md
- β
Natural language schema generation with templates
- β
Automatic compatibility checking (BACKWARD, FORWARD, FULL)
- β
Migration planning with rollback procedures
- β
Pre-commit and pre-push quality automation
- β
Integration with Black, Ruff, isort, Flake8
- β
Docker-based test execution
- β
Comprehensive error handling and auto-fix
Try it now: /schema-generate event TestEvent "test with id and timestamp"`
- VIEWONLY Mode - Prevent accidental changes in production
- URL Validation - SSRF protection with configurable localhost access
- Scope-based Authorization - Fine-grained tool-level permissions
- Per-Registry Controls - Independent safety settings
> π Security guide: docs/deployment.md#security
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Kafka Schema Registry MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Copy a ready-to-use configuration from config-examples/:
Quick Start: Read .claude-code/SKILLS_GUIDE.md - 5-minute tutorial
Complete Reference: .claude-code/skills/README.md - Full documentation
Setup Summary: .claude-code/skills/README.md - Configuration details
To reduce LLM overhead, run with SLIM_MODE enabled:
bash
Pre-configured examples available in config-examples/:
| Configuration | Use Case | File |
|---------------|----------|------|
| Production | Stable Docker deployment | claude_desktop_stable_config.json |
| Multi-Environment | DEV/STAGING/PROD registries | claude_desktop_multi_registry_docker.json |
| Local Development | Python local execution | claude_desktop_config.json |
| View-Only Safety | Production with safety | claude_desktop_viewonly_config.json |
> π Complete configuration guide: config-examples/README.md
SLIM_MODE reduces the number of exposed MCP tools to an essential subset, significantly reducing LLM overhead and improving response times.
> π‘ Recommendation: SLIM_MODE is recommended for most use cases as it provides all essential schema management capabilities with optimal performance.
export ENABLE_AUTH=true
export AUTH_ISSUER_URL="https://your-oauth-provider.com"
export AUTH_AUDIENCE="your-client-id"
Supported Providers: Azure AD, Google OAuth, Keycloak, Okta, GitHub
Permission Scopes:
- read - View schemas, configurations
- write - Register schemas, update configs (includes read)
- admin - Delete subjects, full control (includes write + read)
bashcd tests/
./run_all_tests.sh --quick # Essential tests
./run_all_tests.sh # Complete test suite
bashgit clone https://github.com/aywengo/kafka-schema-reg-mcp
cd kafka-schema-reg-mcp
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python kafka_schema_registry_unified_mcp.py
```
ping
Server health check
set_default_registry
, `get_default_registry` - Registry management
count_contexts
, `count_schemas`, `count_schema_versions` - Statistics
register_schema
Register new schemas
check_compatibility
Schema compatibility checking
create_context
Create new contexts
export_schema
Export single schema
export_subject
Export all subject versions
list_registries
β
get_registry_info
β
test_registry_connection
β
test_all_registries
β
list_subjects
β
get_schema
β
get_schema_versions
β
get_global_config
β
get_mode
β
list_contexts
β
get_subject_config
β
get_subject_mode
β
docker run -e SCHEMA_REGISTRY_URL=http://localhost:8081 -e SLIM_MODE=true 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
``
> π‘ SLIM_MODE Benefits:
> - Reduces tool count to an essential subset
> - Significantly faster LLM response times
> - Lower token usage and reduced costs
> - Ideal for production read-only operations
> - Maintains full remote deployment support
Essential Read-Only Tools:
- ping - Server health checkset_default_registry
- , get_default_registry - Registry managementcount_contexts
- , count_schemas, count_schema_versions - Statistics
Basic Write Operations:
- register_schema - Register new schemascheck_compatibility
- - Schema compatibility checkingcreate_context
- - Create new contexts
Essential Export Operations:
- export_schema - Export single schemaexport_subject
- - Export all subject versions
Resources Available (All Modes):
- All 19 resources remain available in SLIM_MODE
- registry://, schema://, subject:// resource URIs
- Full read access through resource-first approach
Tools Hidden in SLIM_MODE:
- All migration tools (migrate_schema, migrate_context)clear_context_batch
- All batch operations ()export_context
- Advanced export/import tools (, export_global)*_interactive
- All interactive/elicitation tools ( variants)
- Heavy statistics tools with async operations
- Workflow tools
- Configuration update tools
- Delete operations
> Note: Task status tracking is now handled by FastMCP's built-in Docket system. Custom task management tools have been removed in favor of FastMCP's native task tracking.
> Note: You can switch between modes by restarting with SLIM_MODE=false to access the full tool set.
This section provides a comprehensive analysis of all MCP tools and resources exposed by the Kafka Schema Registry MCP Server.
These tools are maintained for backward compatibility with existing clients. They internally use efficient implementations but are exposed as tools to prevent "Tool not listed" errors. Consider migrating to the corresponding resources for better performance.
| Tool Name | SLIM_MODE | Scope | Recommended Resource | Description |
|---------------|---------------|-----------|--------------------------|-----------------|
| list_registries | β
| read | registry://names | List all configured registries |get_registry_info
| | β
| read | registry://info/{name} | Get registry information |test_registry_connection
| | β
| read | registry://status/{name} | Test registry connection |test_all_registries
| | β
| read | registry://status | Test all registry connections |list_subjects
| | β
| read | registry://{name}/subjects | List all subjects |get_schema
| | β
| read | schema://{name}/{context}/{subject} | Get schema content |get_schema_versions
| | β
| read | schema://{name}/{context}/{subject}/versions | Get schema versions |get_global_config
| | β
| read | registry://{name}/config | Get global configuration |get_mode
| | β
| read | registry://mode | Get registry mode |list_contexts
| | β
| read | registry://{name}/contexts | List all contexts |get_subject_config
| | β
| read | subject://{name}/{context}/{subject}/config | Get subject configuration |get_subject_mode
| | β
| read | subject://{name}/{context}/{subject}/mode | Get subject mode |
| Category | Name | Type | SLIM_MODE | Scope | Description |
|--------------|----------|----------|---------------|-----------|-----------------|
| Core | ping | Tool | β
| read | MCP ping/pong health check |set_default_registry
| Registry Management | | Tool | β
| admin | Set default registry |get_default_registry
| Registry Management | | Tool | β
| read | Get current default registry |register_schema
| Schema Operations | | Tool | β
| write | Register new schema version |check_compatibility
| Schema Operations | | Tool | β
| read | Check schema compatibility |create_context
| Context Management | | Tool | β
| write | Create new context |delete_context
| Context Management | | Tool | β | admin | Delete context |delete_subject
| Subject Management | | Tool | β | admin | Delete subject and versions |update_global_config
| Configuration | | Tool | β | admin | Update global configuration |update_subject_config
| Configuration | | Tool | β | admin | Update subject configuration |add_subject_alias
| Configuration | | Tool | β | write | Create alias subject pointing to an existing subject |delete_subject_alias
| Configuration | | Tool | β | write | Remove an alias subject |update_mode
| Mode Management | | Tool | β | admin | Update registry mode |update_subject_mode
| Mode Management | | Tool | β | admin | Update subject mode |count_contexts
| Statistics | | Tool | β
| read | Count contexts |count_schemas
| Statistics | | Tool | β
| read | Count schemas |count_schema_versions
| Statistics | | Tool | β
| read | Count schema versions |get_registry_statistics
| Statistics | | Tool | β | read | Get comprehensive registry stats |export_schema
| Export | | Tool | β
| read | Export single schema |export_subject
| Export | | Tool | β
| read | Export all subject versions |export_context
| Export | | Tool | β | read | Export all context subjects |export_global
| Export | | Tool | β | read | Export all contexts/schemas |export_global_interactive
| Export | | Tool | β | read | Interactive global export |migrate_schema
| Migration | | Tool | β | admin | Migrate schema between registries |migrate_context
| Migration | | Tool | β | admin | Migrate context between registries |migrate_context_interactive
| Migration | | Tool | β | admin | Interactive context migration |compare_registries
| Comparison | | Tool | β | read | Compare two registries |compare_contexts_across_registries
| Comparison | | Tool | β | read | Compare contexts across registries |find_missing_schemas
| Comparison | | Tool | β | read | Find missing schemas |clear_context_batch
| Batch Operations | | Tool | β | admin | Clear context with batch operations |clear_multiple_contexts_batch
| Batch Operations | | Tool | β | admin | Clear multiple contexts |register_schema_interactive
| Interactive | | Tool | β | write | Interactive schema registration |check_compatibility_interactive
| Interactive | | Tool | β | read | Interactive compatibility check |create_context_interactive
| Interactive | | Tool | β | write | Interactive context creation |list_available_resources
| Resource Discovery | | Tool | β
| read | List all available resources |suggest_resource_for_tool
| Resource Discovery | | Tool | β
| read | Get resource migration suggestions |generate_resource_templates
| Resource Discovery | | Tool | β
| read | Generate resource URI templates |submit_elicitation_response
| Elicitation | | Tool | β | write | Submit elicitation response |list_elicitation_requests
| Elicitation | | Tool | β | read | List elicitation requests |get_elicitation_request
| Elicitation | | Tool | β | read | Get elicitation request details |cancel_elicitation_request
| Elicitation | | Tool | β | admin | Cancel elicitation request |get_elicitation_status
| Elicitation | | Tool | β | read | Get elicitation system status |list_available_workflows
| Workflows | | Tool | β | read | List available workflows |get_workflow_status
| Workflows | | Tool | β | read | Get workflow status |guided_schema_migration
| Workflows | | Tool | β | admin | Start schema migration wizard |guided_context_reorganization
| Workflows | | Tool | β | admin | Start context reorganization wizard |guided_disaster_recovery
| Workflows | | Tool | β | admin | Start disaster recovery wizard |get_mcp_compliance_status_tool
| Utility | | Tool | β | read | Get MCP compliance status |get_oauth_scopes_info_tool
| Utility | | Tool | β | read | Get OAuth scopes information |test_oauth_discovery_endpoints
| Utility | | Tool | β | read | Test OAuth discovery endpoints |get_operation_info_tool
| Utility | | Tool | β | read | Get operation metadata |check_viewonly_mode
| Utility | | Tool | β | read | Check if registry is in viewonly mode |registry://status
| RESOURCES | | Resource | β
| read | Overall registry connection status |registry://info
| RESOURCES | | Resource | β
| read | Detailed server configuration |registry://mode
| RESOURCES | | Resource | β
| read | Registry mode detection |registry://names
| RESOURCES | | Resource | β
| read | List of configured registry names |registry://status/{name}
| RESOURCES | | Resource | β
| read | Specific registry connection status |registry://info/{name}
| RESOURCES | | Resource | β
| read | Specific registry configuration |registry://mode/{name}
| RESOURCES | | Resource | β
| read | Specific registry mode |registry://{name}/subjects
| RESOURCES | | Resource | β
| read | List subjects for registry |registry://{name}/contexts
| RESOURCES | | Resource | β
| read | List contexts for registry |registry://{name}/config
| RESOURCES | | Resource | β
| read | Global config for registry |schema://{name}/{context}/{subject}
| RESOURCES | | Resource | β
| read | Schema content with context |schema://{name}/{subject}
| RESOURCES | | Resource | β
| read | Schema content default context |schema://{name}/{context}/{subject}/versions
| RESOURCES | | Resource | β
| read | Schema versions with context |schema://{name}/{subject}/versions
| RESOURCES | | Resource | β
| read | Schema versions default context |subject://{name}/{context}/{subject}/config
| RESOURCES | | Resource | β
| read | Subject config with context |subject://{name}/{subject}/config
| RESOURCES | | Resource | β
| read | Subject config default context |subject://{name}/{context}/{subject}/mode
| RESOURCES | | Resource | β
| read | Subject mode with context |subject://{name}/{subject}/mode
| RESOURCES | | Resource | β
| read | Subject mode default context |elicitation://response/{request_id}` | Resource | β | write | Elicitation response handling |
| RESOURCES |
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"kafka schema registry mcp server": {
"kafka-schema-registry-multi": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--network",
"host",
"-e",
"SCHEMA_REGISTRY_NAME_1",
"-e",
"SCHEMA_REGISTRY_URL_1",
"-e",
"SCHEMA_REGISTRY_USER_1",
"-e",
"SCHEMA_REGISTRY_PASSWORD_1",
"-e",
"READONLY_1",
"-e",
"SCHEMA_REGISTRY_NAME_2",
"-e",
"SCHEMA_REGISTRY_URL_2",
"-e",
"SCHEMA_REGISTRY_USER_2",
"-e",
"SCHEMA_REGISTRY_PASSWORD_2",
"-e",
"READONLY_2",
"aywengo/kafka-schema-reg-mcp:stable",
"python",
"kafka_schema_registry_unified_mcp.py"
],
"env": {
"SCHEMA_REGISTRY_NAME_1": "<NAME of SR 1>",
"SCHEMA_REGISTRY_URL_1": "<URL of SR 1>",
"SCHEMA_REGISTRY_USER_1": "",
"SCHEMA_REGISTRY_PASSWORD_1": "",
"READONLY_1": "false",
"SCHEMA_REGISTRY_NAME_2": "<NAME of SR 2>",
"SCHEMA_REGISTRY_URL_2": "<URL of SR 2>",
"SCHEMA_REGISTRY_USER_2": "",
"SCHEMA_REGISTRY_PASSWORD_2": "",
"READONLY_2": "false"
}
}
}
}
}
McpServers
{
"kafka-schema-registry-multi": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--network",
"host",
"-e",
"SCHEMA_REGISTRY_NAME_1",
"-e",
"SCHEMA_REGISTRY_URL_1",
"-e",
"SCHEMA_REGISTRY_USER_1",
"-e",
"SCHEMA_REGISTRY_PASSWORD_1",
"-e",
"READONLY_1",
"-e",
"SCHEMA_REGISTRY_NAME_2",
"-e",
"SCHEMA_REGISTRY_URL_2",
"-e",
"SCHEMA_REGISTRY_USER_2",
"-e",
"SCHEMA_REGISTRY_PASSWORD_2",
"-e",
"READONLY_2",
"aywengo/kafka-schema-reg-mcp:stable",
"python",
"kafka_schema_registry_unified_mcp.py"
],
"env": {
"SCHEMA_REGISTRY_NAME_1": "<NAME of SR 1>",
"SCHEMA_REGISTRY_URL_1": "<URL of SR 1>",
"SCHEMA_REGISTRY_USER_1": "",
"SCHEMA_REGISTRY_PASSWORD_1": "",
"READONLY_1": "false",
"SCHEMA_REGISTRY_NAME_2": "<NAME of SR 2>",
"SCHEMA_REGISTRY_URL_2": "<URL of SR 2>",
"SCHEMA_REGISTRY_USER_2": "",
"SCHEMA_REGISTRY_PASSWORD_2": "",
"READONLY_2": "false"
}
}
}
A comprehensive Model Context Protocol (MCP) server that provides Claude Desktop and other MCP clients with tools for Kafka Schema Registry operations. Features advanced schema context support, multi-registry management, and comprehensive schema export capabilities.
<table width="100%">
<tr>
<td width="33%" style="vertical-align: top;">
<div style="background-color: white; padding: 20px; border-radius: 10px;">

</div>
</td>
<td width="67%" style="vertical-align: top; padding-left: 20px;">
> π― True MCP Implementation: Uses modern FastMCP 2.8.0+ framework with full MCP 2025-06-18 specification compliance. Fully compatible with Claude Desktop and other MCP clients using JSON-RPC over stdio.
Latest Version: v2.1.5 | Docker: aywengo/kafka-schema-reg-mcp:stable
</td>
</tr>
</table>
π Table of Contents
- π Quick Start
- β¨ Key Features
- π οΈ Claude Code Skills
- π¦ Installation
- βοΈ Configuration
- π¬ Usage Examples
- π Authentication & Security
- π Documentation
- π§ͺ Testing
- π Deployment
- π€ Contributing
- π What's New
π Quick Start
1. Run with Docker (Recommended)
```bashSign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



