Skip to main content
Glama
vaquarkhan

Kafka MCP Enterprise Server

by vaquarkhan

Kafka MCP Enterprise Server

PyPI Python License

Scope: This is a stdio, in-memory conformance reference for the KIP-1318 security control model. Real brokers, Streamable HTTP, OAuth 2.1, EOS/fencing, Connect tooling, distributed rate/breaker state, and durable audit topics are specified in the KIP (Java production track under KAFKA-20436) and are not implemented here. Full matrix: doc/kip-alignment.md.

Implemented vs Spec-only

Area

This reference

KIP / Java track

Transport

stdio only

stdio + Streamable HTTP + OAuth

Backend

In-memory Kafka

Real Admin / Producer / Consumer

Tools

13 registered

~30+ (incl. Connect, EOS, group admin)

Resources

subset + Phase-1 lag/offsets

~20 kafka:// URIs

Rate / quarantine

per-process

optional distributed backend

Audit

in-memory hash chain

durable audit topic

Default allow-list

read/consume only (SECURE_DEFAULT_TOOLS)

same secure-by-default posture

Conformance

302/302 checks

KIP test plan

Website

PyPI

pip install kafka-mcp-enterprise
echo {"jsonrpc":"2.0","id":1,"method":"tools/list"} | kafka-mcp-enterprise

Package

kafka-mcp-enterprise

CLI

kafka-mcp-enterprise

Import

import kafka_mcp

Optional

pip install kafka-mcp-enterprise[otel]

Publish

Tag v*.github/workflows/publish.yml (Trusted Publishing / OIDC - see doc/publishing.md)

Agents & skills (Cursor, Kiro, ChatGPT, Gemini, Copilot, …)

AGENTS.md

AGENTS.md - canonical instructions for every coding agent

Skills

.cursor/skills/ (Cursor) · skills/ (portable)

Guide

doc/agents-and-skills.md - how to load in each IDE


Python conformance reference for KIP-1318: a Model Context Protocol (MCP) control plane for agent access to Kafka. The KIP's production target is Java. This package validates the fail-closed security model over stdio against an in-memory backend - it is not a drop-in for the forthcoming first-party Java MCP server.

KIP

KIP-1318: MCP Server for Apache Kafka

Jira

KAFKA-20436 - Implement KIP-1318

Discuss

[DISCUSS] KIP-1318 on dev@kafka.apache.org

This repo

Stdlib Python reference / conformance server (teaching, demos, security validation)

KIP production target

Java module (tools/mcp-server) wrapping native Kafka clients - see the KIP

Scope clarity: The Apache Kafka project tracks the official implementation under KAFKA-20436. This repository is an independent, zero-dependency reference that encodes the enterprise control plane, error model, and conformance tests so designs can be validated before or alongside the Java work. It is not a drop-in replacement for the forthcoming first-party Java MCP server.


Why this exists

AI agents need governed Kafka access-not ad-hoc scripts, unbounded consumes, or shared "god" principals. KIP-1318 proposes a standalone MCP process (stdio / HTTP in the spec) that exposes tools and kafka:// resources without changing the Kafka wire protocol. This reference implements the fail-closed security control plane over stdio against an in-memory backend (see matrix above).

Broker ACLs remain authoritative. Guardrails here complement them; they never replace them.

What’s included

Kafka MCP Enterprise - what’s included

Documentation product image (not a web UI). Checklist of what this Python stdio reference implements: fail-closed pipeline, DLP, 13 tools, kafka:// resources, tests, and examples.

How it runs

flowchart LR
  Agent["Agent / IDE"]
  MCP["kafka-mcp-enterprise<br/>stdio JSON-RPC + pipeline"]
  Mem["InMemoryKafka<br/>conformance backend"]
  Agent -->|"MCP tools/call"| MCP
  MCP -->|"tools / resources"| Mem

This repo: Python stdlib reference (in-memory Kafka for tests). KIP production track: Java wrapping real Admin/Producer/Consumer (KAFKA-20436), not shipped here.

Fail-closed pipeline (overview)

flowchart TB
  A["1 Auth"] --> B["2 Deny-list"] --> C["3 Allow / readonly"]
  C --> D["4 Scope"] --> E["5 Policy"] --> F["6 Taint / IFC"]
  F --> G["7 Approval"] --> H["8 Rate limit"] --> I["9 Breaker execute"]

Full detail: doc/security-controls.md · architecture: doc/architecture.md.


Related MCP server: MCP Toolkit

Complete features, security controls & guardrails

Nothing below is optional marketing - every item is implemented in kafka_mcp/ and covered by the 302/302 conformance suite and/or demos/examples unless noted as a documented reference gap.

A. MCP protocol & surface

Feature

Detail

JSON-RPC 2.0

Strict jsonrpc: "2.0" request/response

initialize

protocolVersion, serverInfo, capabilities

tools/list

Visible tools honor deny-list, allow-list, and readonly

tools/call

Full fail-closed pipeline + handler

resources/list

Catalog of kafka:// URIs

resources/read

Topic/cluster/group/audit/health reads

stdio transport

Newline-delimited JSON (serve_stdio / kafka-mcp-enterprise)

HTTP notes

Stateless HTTP design documented; full HTTP listener is a KIP/Java concern

Stateless approvals

HMAC tokens self-contained (no sticky session required for authz correctness)

Correlation IDs

Per-call corr_id on audit entries

B. Tools (13) - classified

Tool

kind

module

Kafka op

list_topics

read

control_plane

DESCRIBE

describe_topic

read

control_plane

DESCRIBE

describe_cluster

read

control_plane

DESCRIBE

list_consumer_groups

read

control_plane

DESCRIBE

describe_consumer_group

read

control_plane

DESCRIBE

consume_messages

read

data_plane

READ

create_topic

mutate

control_plane

CREATE

alter_topic_config

mutate

control_plane

ALTER

produce_message

mutate

data_plane

WRITE

alter_consumer_group_offsets

mutate

control_plane

ALTER

delete_topic

destructive

control_plane

DELETE

delete_consumer_group

destructive

control_plane

DELETE

create_acls

destructive

control_plane

ALTER

Shipped default exposes the six read tools only (SECURE_DEFAULT_TOOLS).

C. Resources (kafka://)

URI

Purpose

kafka://topics

List topics

kafka://topics/{name}

Describe topic

kafka://topics/{name}/offsets

Earliest/latest offsets per partition

kafka://cluster

Cluster id + brokers

kafka://groups

Consumer groups

kafka://groups/{id}

Describe a consumer group

kafka://groups/{id}/offsets

Committed offsets

kafka://groups/{id}/lag

Per-topic/partition lag (KIP Phase 1)

kafka://audit/recent

Recent audit entries

kafka://health

Liveness + per-module circuit breaker state

D. Fail-closed security pipeline (exact order)

Every tools/call - first denial wins:

Step

Control

Denial code

1

Bearer auth - audience / issuer validation (off until configured)

-32001 UNAUTHORIZED

2

Deny-list (tools_denied)

-32044 POLICY_DENIED

3

Allow-list (tools_allowed) + readonly (blocks all non-read, including produce)

-32044

4

Topic prefix scope + group prefix scope

-32041 SCOPE_VIOLATION

5

Policy engine - callable; deny or exception → fail-closed

-32044

6

Taint guard / IFC - destructive tools; optional ifc_strict; approval bypasses

-32040 TAINT_VIOLATION

7

Approval gate - HMAC signed TTL token (_approval_token)

-32042 APPROVAL_REQUIRED

8

Rate limit - general vs admin/control-plane buckets

-32029 RATE_LIMITED

9

Execute via per-module circuit breaker + dependency check

-32043 DEPENDENCY_UNAVAILABLE

Pre / around execute (also enforced):

Guardrail

Behavior

Code

Input validation

Identifier charset; max_value_bytes on produce values

-32046 VALIDATION_FAILED

Rogue-agent kill-switch

Per-identity destructive burst → quarantine

-32047 QUARANTINED

Identity propagation

Optional per-principal broker ACL check before execute

-32044

Sensitive-topic gating

Pattern match on consume → requires approval

-32042

Egress DLP

Block secret categories on produce

-32045 SENSITIVE_DATA_BLOCKED

Dry-run tools

dryrun_tools returns plan without mutation

-

Consume clamp

maxMessages capped by hard_max_records

-

Byte bounds

hard_max_bytes trims consume payload; max_output_bytes truncates scrubbed output

truncation tags

Post-execute DLP scrub

Redact/scrub whole result tree

-

Taint registration

Consumed values registered into session taint set

-

Audit

ALLOW/DENY recorded (params truncated, hash-chained)

-

E. Data-protection guardrails (DLP)

Capability

Detail

Modes

redact | block | off (dlp_mode)

Default block categories

private_key, aws_access_key, jwt

Detectors (10)

email, ssn, credit_card (Luhn-validated), phone, ipv4, aws_access_key, private_key, jwt, iban, secret_assignment

Consume path

Redact PII in records; block-mode can refuse

Produce path

Egress scan → -32045

Sensitive configs

Mask password/secret-like keys on describe (redact_sensitive_configs)

Scrub all outputs

Walk entire JSON result (scrub_all_outputs)

Legacy interceptor

interceptor.redact_record kept for compatibility; DLP is primary

F. Approval, taint & IFC

Capability

Detail

HMAC approval tokens

mint / verify; TTL (default 300s); tool-bound

Forged / expired tokens

Rejected → -32042

Default approval-required tools

delete_topic, delete_records, create_acls, delete_acls, alter_partition_reassignments, alter_broker_config

Taint guard

Best-effort substring match of session tainted values into destructive args

ifc_strict

After untrusted read, blocks destructive/control-plane without approval

Honesty

Taint is defeatable by laundering; least-privilege broker ACLs are load-bearing

G. Scoping, exposure & identity

Capability

Detail

Tool allow-list / deny-list

tools_allowed, tools_denied

Secure-by-default guidance

Shipped default is read/consume only; expand tools_allowed for mutate/destructive

Readonly mode

Disables create/produce/alter/delete/ACLs

Topic prefixes

allowed_topic_prefixes

Group prefixes

allowed_group_prefixes

Identity propagation

identity_propagation + in-memory per-principal ACLs (set_principal_acl / authorize)

Session identity

session["identity"] for audit, quarantine, ACL principal

H. Resilience & blast-radius controls

Capability

Detail

Circuit breakers

Per module: data_plane, control_plane, ecosystem

Breaker isolation

Control-plane open does not take down data-plane consume/produce

Dependency failure hook

_inject_dependency_failure / _fail_module-32043

Rate limits

rate_requests_per_second + rate_admin_requests_per_second

Quarantine

max_destructive_per_minute per identity

Health resource

Breaker states on kafka://health

I. Consume semantics (Direct Partition Assignment)

Mode

Behavior

No groupId

assignment=direct, no consumer group, no rebalance

With groupId

Classic group path; register offsets; rebalance counter increments

J. Backend surface (in-memory Kafka)

create_topic, delete_topic, list_topics, describe_topic, alter_topic_config, produce, consume, list_groups, describe_group, group_lag, create_acls, list_acls, describe_cluster, principal ACLs, rebalance counter, dependency hooks.

K. Audit

Capability

Detail

Ring buffer

Recent entries (maxlen=1000)

Hash chaining

Tamper-resistant best-effort chain

Param truncation

Long params truncated (>64 chars)

Decisions

ALLOW / DENY with identity, tool, corr_id

Resource

kafka://audit/recent

audit_topic

Config name present; durable Kafka mirror is a documented reference gap

L. Error codes (complete - 15)

Code

Constant

Meaning

-32700

PARSE_ERROR

JSON parse error

-32600

INVALID_REQUEST

Invalid request

-32601

METHOD_NOT_FOUND

Unknown method/tool

-32602

INVALID_PARAMS

Invalid params / structured Kafka errors

-32603

INTERNAL_ERROR

Internal error

-32001

UNAUTHORIZED

Bad/missing bearer

-32029

RATE_LIMITED

Rate limited

-32040

TAINT_VIOLATION

Tainted value into destructive tool

-32041

SCOPE_VIOLATION

Topic/group out of scope

-32042

APPROVAL_REQUIRED

Destructive/sensitive needs approval

-32043

DEPENDENCY_UNAVAILABLE

Circuit breaker open / dependency down

-32044

POLICY_DENIED

Deny/allow/readonly/policy/ACL propagation

-32045

SENSITIVE_DATA_BLOCKED

Egress / DLP block

-32046

VALIDATION_FAILED

Malformed identifier / oversized value

-32047

QUARANTINED

Rogue-agent kill-switch

M. Configuration surface (32 fields)

bootstrap_servers, transport, tools_allowed, tools_denied, readonly, allowed_topic_prefixes, allowed_group_prefixes, taint_guard_enabled, approval_required_tools, dryrun_tools, audit_topic, policy_engine, circuit_breaker_enabled, dependency_timeout_ms, rate_requests_per_second, rate_admin_requests_per_second, oauth_expected_audience, oauth_expected_issuer, approval_signing_secret, redaction_enabled, dlp_mode, dlp_block_categories, scrub_all_outputs, redact_sensitive_configs, sensitive_topic_patterns, max_value_bytes, max_output_bytes, max_destructive_per_minute, ifc_strict, hard_max_records, hard_max_bytes, identity_propagation.

Full defaults: doc/configuration.md.

N. Quality, packaging & agent DX

Feature

Detail

Conformance suite

302/302 checks (incl. KIP Test Plan matrix + coverage gap-fill)

Line coverage

100% of kafka_mcp/ via python run_coverage.py (optional coverage package)

Smoke + demo

test_kafka_mcp.py (16), demo_end_to_end.py (22 steps, all security codes)

Examples

Six folders with real-world data/ fixtures

PyPI

kafka-mcp-enterprise · CLI kafka-mcp-enterprise

Stdlib-only core

No hard third-party deps

Optional OTel

pip install …[otel] - not required (doc/observability.md)

AGENTS.md + skills

Cursor / Kiro / Copilot / ChatGPT / Gemini (doc/agents-and-skills.md)

O. Documented reference gaps (intentional)

HTTP full server · real brokers · HTTP policy URL client · durable audit_topic publish · wall-clock dependency_timeout_ms · some approval tool names reserved but not all registered · production language = Java (this package is the Python reference). See doc/kip-alignment.md.


Quick start

Requires Python 3.8+. Core has no third-party packages.

# From source
python run_tests.py
python demo_end_to_end.py
python examples/01_sre_readonly_triage/run.py
echo {"jsonrpc":"2.0","id":1,"method":"tools/list"} | python serve_stdio.py

See the PyPI section at the top for pip install, or doc/publishing.md to publish a release.


Documentation & examples

Resource

Description

doc/

End-to-end guides: getting started, architecture, security, config, tools, errors, testing

doc/kip-alignment.md

Feature matrix vs KIP-1318 - what is implemented vs intentional reference gaps

doc/publishing.md

PyPI package kafka-mcp-enterprise

doc/observability.md

OpenTelemetry: optional, not required

doc/agents-and-skills.md

AGENTS.md + skills for all IDEs

examples/

Six folder-based scenarios (run.py + real-world data/ fixtures)


Repository layout

flowchart TB
  root["kafka-mcp-enterprise-server"]
  pkg["kafka_mcp/<br/>reference server"]
  tests["tests/<br/>302-check suite"]
  docs["doc/<br/>guides + diagrams"]
  ex["examples/<br/>6 scenarios"]
  entry["serve_stdio.py · run_tests.py · demo_end_to_end.py"]
  root --> pkg
  root --> tests
  root --> docs
  root --> ex
  root --> entry

Engineering standards

This reference aims at production-grade practice even while staying a teaching implementation:

Practice

How it shows up

Fail-closed

First denial wins; no execute-then-check paths

Least privilege

Prefix scopes, allow/deny lists, readonly, approval for destructive ops

Defense in depth

MCP controls + explicit honesty that broker ACLs are load-bearing

Bounded blast radius

Hard record/byte caps, rate limits, per-plane breakers, quarantine

Observable denials

Stable error codes, correlation IDs, audit ALLOW/DENY

Testability

Deterministic in-memory backend; security + integration coverage

Zero dependency debt

Python stdlib only - easy to audit and run in CI

Clear product boundary

Official Kafka delivery tracked on KAFKA-20436 (Java)

Honest limitations (by design)

  • Taint / IFC is best-effort - defeatable by data laundering; do not treat as complete mediation.

  • In-memory Kafka - validates control logic; not a broker client.

  • stdio-first - HTTP is specified in the KIP; this reference documents notes, full HTTP is a Java/production concern.

  • Secure-by-default - shipped tools_allowed is read/consume only (SECURE_DEFAULT_TOOLS); enable mutate/destructive explicitly.

Note: Python reference vs Java production code

This repository is a Python reference implementation for validating the KIP-1318 security control model (stdio + in-memory backend + conformance tests). It is not written in Java and is not the official Apache Kafka MCP server.

Items listed as intentional gaps (Streamable HTTP / OAuth, live Admin-Producer-Consumer, EOS/fencing, Connect tools, distributed rate/audit state, JMX, and remaining tools/resources) are specified for the real implementation tracked under KAFKA-20436. Those belong in the actual Java production module (tools/mcp-server) and will be added there - not claimed as complete in this Python reference.

Full matrix: doc/kip-alignment.md.



License & affiliation

Apache Kafka, KIP-1318, and KAFKA-20436 are trademarks / projects of the Apache Software Foundation. This repository is a community reference aligned with that proposal; it is not the official ASF deliverable unless and until merged under the Kafka project.

Available Tools

11 tools
alter_topic_configD

mutate / control_plane / ALTER

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavioral traits. It merely implies mutation (mutate) but does not explain what happens, what permissions are needed, or any side effects. This is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short but not concise; it omits essential purpose information. Every sentence should earn its place, but here there is no real content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description should be complete on its own. It is not, as it does not explain the tool's role among siblings like delete_topic or describe_topic.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although there are zero parameters and schema coverage is 100%, the description should still add meaning. It fails to explain what 'alter_topic_config' does, providing no value beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'mutate / control_plane / ALTER' is a set of tags rather than a clear verb-resource pair. It does not specify what resource or configuration is being altered, making it nearly impossible to infer the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as describe_cluster or create_topic. The description offers no context about prerequisites or typical usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consume_messagesD

read / data_plane / READ

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description provides no behavioral details such as whether consumption is blocking, if messages are deleted, or prerequisites. The text is essentially meaningless.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short (three words) but is under-specified and not informative. It lacks structure and content that an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the critical nature of message consumption and the lack of output schema, the description is entirely inadequate. It does not explain what the tool returns, side effects, or how it interacts with the data plane.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty (0 parameters), so schema coverage is 100%. The description adds no parameter information, but with no parameters, the baseline is 3; however, it fails to add any useful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'read / data_plane / READ' is a tautology that restates the tool name without specifying what is consumed (messages? from where?) or the scope. It fails to distinguish from siblings like describe_topic or list_topics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not mention when to use consume_messages versus alternatives like produce_message or describe_consumer_group.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_aclsD

destructive / control_plane / ALTER

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must disclose behavior. The term 'destructive' hints at modification, but lacks detail on permissions, reversibility, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise, but at the cost of clarity. The brevity results in under-specification rather than efficient communication.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no output schema, and empty annotations, the description should compensate with rich behavioral context. It fails to provide enough information for an agent to understand the tool's function.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in the schema, so schema coverage is 100%. Baseline score of 3 is appropriate; the description does not need to explain parameters but adds no additional value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description only provides tags 'destructive / control_plane / ALTER' without explicitly stating the tool creates ACLs. It is vague and does not clearly identify the resource or action, leaving the agent uncertain about its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like alter_topic_config or describe_cluster. The description offers no context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_topicD

mutate / control_plane / CREATE

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations and a vague description, the tool's behavior is entirely opaque. The word 'mutate' implies creation, but there is no disclosure of side effects, permissions, or error conditions (e.g., topic already exists).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise but at the expense of clarity. It uses only a few words, which is not an example of good conciseness because it omits essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of parameters, output schema, and annotations, the description is the sole source of context. It fails to provide any meaningful information about the tool's purpose, behavior, or expected outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema provides full coverage trivially. However, the description adds no value; it does not explain what the tool does beyond the name. A baseline of 4 is not warranted because purpose is unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'mutate / control_plane / CREATE' is essentially a tautology that restates the tool name without specifying the actual operation. It does not explain what creating a topic entails, nor does it distinguish from sibling tools like delete_topic or alter_topic_config.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as alter_topic_config or delete_topic. The description fails to indicate prerequisites, context, or scenarios where this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_topicC

destructive / control_plane / DELETE

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description includes 'destructive' which hints at mutation, but does not disclose what exactly happens (e.g., permanent deletion, impact on producers/consumers). With no annotations, the description carries full burden but provides minimal information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short but fails to convey essential purpose. Conciseness is not valuable when it omits necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no parameters, the description should at least state 'Deletes a topic'. It does not, leaving the agent to infer from the name alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100% (empty schema). The description adds no param info, but baseline for zero params is 4. No extra value needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'destructive / control_plane / DELETE' is not a clear statement of what the tool does. It provides tags but not a verb+resource. The name suggests deletion, but the description is too vague to confirm.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'alter_topic_config' or 'create_topic'. No context on prerequisites or consequences.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_clusterC

read / control_plane / DESCRIBE

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so description carries full burden. It hints at a read-only operation but provides no detail on what the output contains, side effects, or permissions. Barely meets minimum transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short and front-loaded, but lacks substance. Conciseness is appropriate for a simple tool, but the content is too cryptic to be fully useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no params, no output schema), a brief description could suffice, but 'read / control_plane / DESCRIBE' is insufficient. It fails to clarify the exact resource and behavior, leaving agents with ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so the description doesn't need to add parameter semantics. Baseline of 4 applies as no information is missing regarding parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'read / control_plane / DESCRIBE', which indicates a read operation on the control plane but doesn't explicitly say what is being described (presumably the cluster). It distinguishes from siblings like describe_topic only by the resource, but it's vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. No mention of prerequisites, context, or comparison to sibling tools like describe_topic or list_topics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_consumer_groupD

read / control_plane / DESCRIBE

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden of disclosing behavioral traits. It only states 'read', which hints at read-only access but does not confirm safety, permissions, or side effects. No information about what gets returned or any constraints is provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short but lacks necessary detail, resembling a tag rather than a usable description. While conciseness is valued, this is under-specification that hinders understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of describing a consumer group in Kafka and no output schema, the description is completely inadequate. It does not mention what information is returned (e.g., offsets, members, state) or any behavioral expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite having zero parameters (schema coverage 100%), the description fails to add meaning beyond the schema. The cryptic label 'read / control_plane / DESCRIBE' does not explain what consumer group is being described or how the tool operates without any input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'read / control_plane / DESCRIBE' is tautological, merely repeating the verb from the name and providing no specific information about what the tool does or what resource it acts on. It does not clarify that a consumer group is being described, nor does it differentiate from sibling tools like list_consumer_groups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives such as describe_topic or list_consumer_groups. There is no mention of prerequisites, context, or excluded scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_topicD

read / control_plane / DESCRIBE

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description bears full responsibility. It only states 'read' which implies a safe operation, but gives no additional behavior details (e.g., whether it requires authentication, what it returns, or if it has side effects).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short but under-specifying. It is not informative, consisting only of a phrase that adds no new insight beyond the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even with zero parameters and no output schema, the description fails to explain what the tool returns or how it behaves. A minimal tool still needs a sentence clarifying its output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With no parameters and 100% schema coverage, the baseline is 3. The description adds no parameter information, but the schema already covers everything (empty). No credit for adding meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description repeats the tool's purpose with 'read / DESCRIBE' but does not specify what resource is described (e.g., which topic, or whether it describes a single topic or all topics). It adds no specific verb-resource pairing beyond the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like describe_cluster or describe_consumer_group. No conditions, prerequisites, or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_consumer_groupsD

read / control_plane / DESCRIBE

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No behavioral traits are disclosed. The description does not indicate that this is a read-only operation or any potential side effects. Annotations are empty, so the description carries the full burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short but not front-loaded with useful information. It lacks structure and clarity, making it under-specified rather than concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is far too minimal. It fails to explain what the tool returns or how it behaves, leaving the agent without critical context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the baseline is 3. The description adds no additional meaning beyond the schema, but no parameter information is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'read / control_plane / DESCRIBE' is cryptic and does not clearly state that the tool lists consumer groups. It fails to convey the tool's core function in plain language.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like describe_consumer_group or list_topics. The description lacks any usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_topicsD

read / control_plane / DESCRIBE

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It does not mention anything about read-only nature, permissions, or output behavior. The cryptic text offers no transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While very short, the description is not clear. It uses a cryptic format that confuses rather than clarifies. Conciseness is good only when it retains clarity, which is not the case here.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a simple tool, the description fails to provide essential context. It doesn't explain what the tool lists, what it returns, or any usage notes. Completely insufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty (0 parameters), so schema description coverage is trivially 100%. The description adds no extra meaning, but there is nothing to add. Baseline of 3 is appropriate as no additional parameter context is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'read / control_plane / DESCRIBE' is cryptic and does not explicitly state that this tool lists topics. The name 'list_topics' hints at the purpose, but the description adds little clarity and could be considered a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus sibling tools like describe_topic or create_topic. The description provides no context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

produce_messageD

mutate / data_plane / WRITE

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description only says 'WRITE', which implies mutation but offers no details about side effects, idempotency, or authorization requirements. The description fails to disclose behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short but lacks substance. Every word should earn its place; here they do not convey useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and a vague description, the tool is severely underspecified. An agent cannot understand what the tool does, making it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the baseline is 4, but the description adds no meaning beyond the empty schema. It does not explain what the tool produces or requires, so the agent gains no insight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'mutate / data_plane / WRITE' is vague and does not specify what the tool produces or to what resource. It fails to distinguish from siblings like 'consume_messages' or 'alter_topic_config'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No context about prerequisites or usage scenarios is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.1.0
    • First observedalter_topic_config
    • First observedconsume_messages
    • First observedcreate_acls
    • First observedcreate_topic
    • First observeddelete_topic
    • First observeddescribe_cluster
    • First observeddescribe_consumer_group
    • First observeddescribe_topic
    • First observedlist_consumer_groups
    • First observedlist_topics
    • First observedproduce_message

TDQS

C2.4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct Kafka resource or action (e.g., cluster, topic, consumer group, ACL, message). There is no overlap in purpose, and the descriptions clearly differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., describe_cluster, create_topic, consume_messages). No deviations or mixed conventions.

Tool Count5/5

11 tools cover the essential operations for a Kafka enterprise server: cluster info, topic CRUD, consumer groups, ACLs, and message production/consumption. The scope is well-balanced.

Completeness4/5

Covers most core Kafka lifecycle operations, but missing tools for deleting or listing ACLs and possibly deleting consumer groups. These are minor gaps for an enterprise server.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive Model Context Protocol server implementation that enables AI assistants to interact with file systems, databases, GitHub repositories, web resources, and system tools while maintaining security and control.
    79
    2
    MIT
  • F
    license
    D
    quality
    D
    maintenance
    A ready-to-use starter implementation of the Model Context Protocol (MCP) server that enables applications to provide standardized context for LLMs with sample resources, tools, and prompts.
    2
    6
    1
    -
  • F
    license
    B
    quality
    D
    maintenance
    A basic starter project for building Model Context Protocol (MCP) servers that enables standardized interactions between AI systems and various data sources through secure, controlled tool implementations.
    2
    -