kafka-mcp-server
Expor operações do Apache Kafka (tópicos, produzir, consumir, grupos de consumidores) como ferramentas MCP.
Documentação
Servidor MCP Kafka
Um servidor Model Context Protocol (MCP) que expõe operações do Apache Kafka como ferramentas. Construído com TypeScript, transporte stdio e o cliente Confluent Kafka.
Pré-requisitos
- Node.js 18.18+ ou 20.9+
- Um broker compatível com Kafka em execução (Apache Kafka, Redpanda, etc.)
Configuração
npm install
npm run build
Configuração
Defina a variável de ambiente KAFKA_BROKERS (obrigatória):
export KAFKA_BROKERS=localhost:9092
Vários brokers podem ser separados por vírgula: broker1:9092,broker2:9092.
Execução
npm start
O servidor se comunica via stdio usando o protocolo MCP.
Claude Code
Adicione o servidor MCP usando a CLI:
claude mcp add kafka-mcp-server -e KAFKA_BROKERS=localhost:9092 node /path/to/kafka-mcp-server/dist/index.js
Ou adicione ao .mcp.json na raiz do seu projeto:
{
"mcpServers": {
"kafka": {
"command": "node",
"args": ["/path/to/kafka-mcp-server/dist/index.js"],
"env": {
"KAFKA_BROKERS": "localhost:9092"
}
}
}
}
Claude Desktop
Adicione à configuração do Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"kafka": {
"command": "node",
"args": ["/path/to/kafka-mcp-server/dist/index.js"],
"env": {
"KAFKA_BROKERS": "localhost:9092"
}
}
}
}
Ferramentas
Tópicos
| Ferramenta | Descrição | Entradas |
|---|---|---|
list-topics | Listar todos os tópicos | nenhuma |
describe-topic | Obter detalhes do tópico (partições, réplicas) | topic |
create-topic | Criar um novo tópico | topic, numPartitions (padrão 1), replicationFactor (padrão 1) |
delete-topic | Excluir um tópico | topic |
Produzir / Consumir
| Ferramenta | Descrição | Entradas |
|---|---|---|
produce | Enviar uma mensagem para um tópico | topic, value, key (opcional) |
consume | Ler mensagens de um tópico | topic, maxMessages (padrão 10), timeout (padrão 5000ms) |
A ferramenta consume cria um consumidor efêmero que lê do offset mais antigo sem fazer commit. Ela desconecta após atingir maxMessages ou o tempo limite.
Cluster
| Ferramenta | Descrição | Entradas |
|---|---|---|
get-cluster-info | Obter informações do broker | nenhuma |
list-consumer-groups | Listar todos os grupos de consumidores | nenhuma |
describe-consumer-group | Obter detalhes do grupo de consumidores | groupId |
Desenvolvimento
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