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
| Herramienta | Descripción | Entradas |
|---|---|---|
list-topics | Listar todos los temas | ninguna |
describe-topic | Obtener detalles del tema (particiones, réplicas) | topic |
create-topic | Crear un nuevo tema | topic, numPartitions (predeterminado 1), replicationFactor (predeterminado 1) |
delete-topic | Eliminar un tema | topic |
Producir / Consumir
| Herramienta | Descripción | Entradas |
|---|---|---|
produce | Enviar un mensaje a un tema | topic, value, key (opcional) |
consume | Leer mensajes de un tema | topic, 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
| Herramienta | Descripción | Entradas |
|---|---|---|
get-cluster-info | Obtener información del broker | ninguna |
list-consumer-groups | Listar todos los grupos de consumidores | ninguna |
describe-consumer-group | Obtener detalles del grupo de consumidores | groupId |
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