mcp-schema-registry client
mcp-schema-registry client
The mcp-schema-registry client binding exposes a Karapace-compatible schema registry's subject, schema, and compatibility operations as a fixed set of intrinsic MCP tools, connecting directly to the registry named by options.server — unlike mcp-openapi, there is no upstream spec or per-tool schema to author. mcp-kafka and mcp-kafka-connect follow the same fixed-tool pattern for the Kafka broker and Kafka Connect REST APIs.
mcp_schema_registry_client:
type: mcp-schema-registry
kind: client
options:
server: http://karapace-registry.examples.dev:8081
routes:
- when:
- tool: register_schema
guarded:
my_guard:
- kafka-sr:write
- when:
- tool: "*"Configuration (* required)
options*
object
The client specific options.
options:
server: http://karapace-registry.examples.dev:8081options.server*
string
Base URL of the schema registry this binding proxies to.
routes*
arrayofobject
Conditional mcp-schema-registry specific routes, matching by tool name or glob pattern. At least one route is required. Routes are evaluated in order; the first matching route wins.
routes:
- when:
- tool: register_schema
guarded:
my_guard:
- kafka-sr:write
- when:
- tool: "*"routes[].when*
arrayofobject
List of conditions (any match) restricting this route to particular tools. Required.
routes:
- when:
- tool: register_schema
- tool: set_compatibilitywhen[].tool*
stringorarrayofstring
Tool name matched by tools/call, or a * glob pattern matching many tool names in bulk (such as list_*). Required.
routes[].guarded
objectas map of namedarrayofstring
Roles required by the named guard for a tools/call against this route. Roles for the same guard are unioned into one entry; roles naming a different guard add a separate entry that must also authorize.
routes:
- when:
- tool: register_schema
guarded:
my_guard:
- kafka-sr:writetelemetry
object
Defines the desired telemetry for the binding.
telemetry.metrics
array
Telemetry metrics to track
telemetry:
metrics:
- stream.*telemetry.attributes
objectas map of namedstringproperties
Telemetry attributes to add to the binding metrics.
Tools
The mcp-schema-registry client exposes a fixed set of intrinsic tools, derived from a bundled schema registry API specification — there is no options.tools to author, and no upstream server or spec to select. Each tool's inputSchema validates tools/call arguments before Zilla dispatches the matching request to options.server. None of these tools declare a fixed outputSchema, so each tool's structuredContent mirrors the raw upstream JSON response with no fixed property list, and its summary text may interpolate fields out of that same response, such as ${result.id}.
list_subjects
Read-only, idempotent
Lists every subject registered in the schema registry.
No arguments.
The result's structuredContent mirrors the raw upstream JSON response — an array of subject names.
describe_subject
Read-only, idempotent
Lists the schema version numbers registered for a subject.
| Argument | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | Subject to list versions for. |
The result's structuredContent mirrors the raw upstream JSON response — an array of version numbers.
register_schema
Not destructive, not idempotent
Registers a new schema version under a subject.
| Argument | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | Subject to register the schema under. |
schema | string | No | Schema document to register. |
schemaType | string | No | Schema format, such as AVRO, JSON, or PROTOBUF. Defaults to AVRO when omitted. |
The summary interpolates ${result.id}, such as Registered schema with id 1.
get_schema
Read-only, idempotent
Retrieves a specific registered schema version for a subject.
| Argument | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | Subject to read from. |
version | string | Yes | Schema version number, or latest. |
The summary interpolates ${result.id} and ${result.version}, such as Retrieved schema id 1, version 1.
delete_schema_version
Destructive, idempotent
Deletes a specific registered schema version for a subject.
| Argument | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | Subject to delete from. |
version | string | Yes | Schema version number, or latest. |
delete_subject
Destructive, idempotent
Deletes a subject and every schema version registered under it.
| Argument | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | Subject to delete. |
The result's structuredContent mirrors the raw upstream JSON response — an array of the deleted subject's version numbers.
check_compatibility
Read-only, idempotent
Checks whether a schema is compatible with a specific already-registered version of a subject.
| Argument | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | Subject to check compatibility against. |
version | string | Yes | Schema version number, or latest, to check compatibility against. |
schema | string | No | Schema document to check. |
schemaType | string | No | Schema format, such as AVRO, JSON, or PROTOBUF. Defaults to AVRO when omitted. |
The summary interpolates ${result.is_compatible}, such as Compatibility check result: true.
get_compatibility
Read-only, idempotent
Reads the compatibility level configured for a subject.
| Argument | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | Subject to read the compatibility level of. |
The summary interpolates ${result.compatibilityLevel}, such as Compatibility level is FULL.
set_compatibility
Not destructive, idempotent
Sets the compatibility level for a subject.
| Argument | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | Subject to set the compatibility level of. |
compatibility | string | No | Compatibility level, such as BACKWARD, FORWARD, FULL, or NONE. |
The summary interpolates ${result.compatibility}, such as Compatibility level set to FULL.

