kafka-mcp-server

Expone operaciones de Apache Kafka (temas, producir, consumir, grupos de consumidores) como herramientas MCP.

Documentación

Servidor MCP de Kafka

Un servidor de Protocolo de Contexto de Modelo (MCP) que expone operaciones de Apache Kafka como herramientas. Construido con TypeScript, transporte stdio y el cliente Kafka de Confluent.

Requisitos previos

  • Node.js 18.18+ o 20.9+
  • Un broker compatible con Kafka en ejecución (Apache Kafka, Redpanda, etc.)

Configuración

npm install
npm run build

Configuración

Establezca la variable de entorno KAFKA_BROKERS (obligatoria):

export KAFKA_BROKERS=localhost:9092

Varios brokers pueden separarse con comas: broker1:9092,broker2:9092.

Ejecución

npm start

El servidor se comunica a través de stdio utilizando el protocolo MCP.

Claude Code

Agregue el servidor MCP usando la CLI:

claude mcp add kafka-mcp-server -e KAFKA_BROKERS=localhost:9092 node /path/to/kafka-mcp-server/dist/index.js

O agréguelo a .mcp.json en la raíz de su proyecto:

{
  "mcpServers": {
    "kafka": {
      "command": "node",
      "args": ["/path/to/kafka-mcp-server/dist/index.js"],
      "env": {
        "KAFKA_BROKERS": "localhost:9092"
      }
    }
  }
}

Claude Desktop

Agréguelo a la configuración de Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "kafka": {
      "command": "node",
      "args": ["/path/to/kafka-mcp-server/dist/index.js"],
      "env": {
        "KAFKA_BROKERS": "localhost:9092"
      }
    }
  }
}

Herramientas

Temas

HerramientaDescripciónEntradas
list-topicsListar todos los temasninguna
describe-topicObtener detalles del tema (particiones, réplicas)topic
create-topicCrear un nuevo tematopic, numPartitions (predeterminado 1), replicationFactor (predeterminado 1)
delete-topicEliminar un tematopic

Producir / Consumir

HerramientaDescripciónEntradas
produceEnviar un mensaje a un tematopic, value, key (opcional)
consumeLeer mensajes de un tematopic, maxMessages (predeterminado 10), timeout (predeterminado 5000ms)

La herramienta consume crea un consumidor efímero que lee desde el offset más antiguo sin confirmar. Se desconecta después de alcanzar maxMessages o el tiempo de espera.

Clúster

HerramientaDescripciónEntradas
get-cluster-infoObtener información del brokerninguna
list-consumer-groupsListar todos los grupos de consumidoresninguna
describe-consumer-groupObtener detalles del grupo de consumidoresgroupId

Desarrollo

npm run build          # Compile TypeScript
npm start              # Run the server
npm run lint           # Run ESLint
npm run lint:fix       # Run ESLint with auto-fix
npm run format         # Format code with Prettier
npm run format:check   # Check formatting