mcp-kafka
Servidor MCP para Apache Kafka: monitorea y gestiona clústeres, temas y grupos de consumidores (con lag), con modos de acceso, listas de permitidos de temas, control de eliminación, simulación y registro de auditoría.
Documentación
mcp-kafka
Un servidor de Protocolo de Contexto de Modelo para Apache Kafka. Permite que un cliente compatible con MCP (Claude Desktop, Claude Code, etc.) supervise y gestione clústeres de Kafka — temas, particiones, configuraciones y grupos de consumidores (incluido el retraso) — con un comportamiento controlado completamente por banderas.
Seguro por defecto: inicia en modo de solo lectura, puede limitarse a una lista de temas permitidos, protege temas internos/críticos de modificaciones y condiciona las operaciones destructivas a una aceptación explícita.
Características
- Supervisión — información del clúster/agentes, metadatos y offsets de temas, grupos de consumidores y retraso de consumidores por partición + total.
- Gestión — crear temas, añadir particiones, alterar configuraciones de temas, restablecer offsets de grupos; eliminar temas/grupos (admin).
- Modos de acceso —
read-only→read-write→admin, en capas para que un modo nunca exponga herramientas por encima de su nivel. - Banderas de seguridad — lista de temas permitidos, temas protegidos/internos, control de eliminación, simulación y registro de auditoría JSON (ver más abajo).
- Autenticación — texto plano, TLS y SASL (PLAIN / SCRAM-SHA-256 / SCRAM-SHA-512).
Modelo de seguridad
| Preocupación | Bandera | Predeterminado | Efecto |
|---|---|---|---|
| ¿Qué puede hacer el servidor? | KAFKA_MODE | read-only | read-only expone solo supervisión; read-write añade gestión; admin añade eliminaciones. Las herramientas por encima del modo nunca se registran. |
| ¿Qué temas están en alcance? | KAFKA_TOPIC_ALLOWLIST | (todos) | Cuando se establece, se rechazan operaciones en otros temas. |
| Proteger temas internos | KAFKA_PROTECT_INTERNAL_TOPICS | true | Los temas que comienzan con _ pueden leerse pero nunca modificarse. |
| Proteger temas específicos | KAFKA_PROTECTED_TOPICS | (ninguno) | Temas adicionales de solo lectura para siempre. |
| ¿Puede eliminar? | KAFKA_ALLOW_DELETE | false | delete_topic / delete_consumer_group necesitan esto y modo admin. |
| Vista previa sin tocar el clúster | KAFKA_DRY_RUN | false | Las herramientas de escritura/admin validan y registran la intención, luego regresan. |
| Rastro de auditoría | KAFKA_AUDIT_LOG | true | Emite una línea JSON a stderr por operación protegida. |
Herramientas
Lectura (read-only+): cluster_info, list_topics, describe_topic, topic_offsets, list_consumer_groups, describe_consumer_group (con retraso)
Escritura (read-write+): create_topic, create_partitions, alter_topic_config, reset_consumer_group_offsets
Admin (admin): delete_topic, delete_consumer_group (ambas necesitan KAFKA_ALLOW_DELETE)
Inicio rápido — añade a tu agente
Publicado en npm como @dockndevai/mcp-kafka. No se necesita clonar ni compilar — tu cliente MCP lo ejecuta bajo demanda con npx. Comienza en modo read-only; consulta .env.example para cada variable y docs/CLIENTS.md para la guía completa por cliente.
Claude Code (CLI)
claude mcp add kafka -e KAFKA_BROKERS="localhost:9092" -e KAFKA_MODE="read-only" -- npx -y @dockndevai/mcp-kafka
Claude Desktop · Cursor · Windsurf — mismo bloque en claude_desktop_config.json, .cursor/mcp.json o ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"kafka": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-kafka"
],
"env": {
"KAFKA_BROKERS": "localhost:9092",
"KAFKA_MODE": "read-only"
}
}
}
}
OpenAI Codex CLI — en ~/.codex/config.toml:
[mcp_servers.kafka]
command = "npx"
args = ["-y", "@dockndevai/mcp-kafka"]
env = { KAFKA_BROKERS = "localhost:9092", KAFKA_MODE = "read-only" }
VS Code (GitHub Copilot, modo Agente) — en .vscode/mcp.json:
{
"servers": {
"kafka": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-kafka"
],
"env": {
"KAFKA_BROKERS": "localhost:9092",
"KAFKA_MODE": "read-only"
}
}
}
}
Ejemplos de indicaciones
- "¿Qué grupos de consumidores tienen más retraso ahora mismo?"
- "Describe el tema
ordersy muestra sus offsets." - "Crea un tema
eventscon 6 particiones y retención de 7 días." (necesitaread-write)
Ejecutar desde el código fuente (desarrollo)
Prefiere el paquete publicado arriba. Para ejecutar desde un clon:
npm install
npm run build
node dist/index.js # with the environment variables set
Desarrollo
npm run dev
npm test
npm run typecheck
Publicación
Este servidor incluye un server.json para el registro oficial de MCP y un mcpName para validación de propiedad de npm. Consulta PUBLISHING.md para publicar en npm y listar en el registro de MCP, Smithery, Glama, Cursor y PulseMCP.
Licencia
MIT