npm package: @marcelocorrea/mcp-rabbitmq
Description: MCP server for interacting with RabbitMQ over the Model Context Protocol.
Latest version: 1.0.0

# mcp-rabbitmq

Servidor [Model Context Protocol (MCP)](https://github.com/modelcontextprotocol) para trabalhar com o RabbitMQ usando Node.js e TypeScript. O pacote fornece um conjunto de ferramentas MCP para publicar mensagens, inspecionar filas e realizar operações básicas usando parâmetros de conexão definidos exclusivamente por variáveis de ambiente.

## Recursos

- Conexão via `RABBITMQ_URL` ou parâmetros granulares (`RABBITMQ_HOST`, `RABBITMQ_USERNAME`, etc.).
- Publicação de mensagens em filas ou exchanges, com suporte a payload JSON, persistência e cabeçalhos.
- Inspeção do tamanho e número de consumidores de uma fila (`check_queue`).
- Limpeza rápida de filas com `purge_queue`.
- Binário pronto (`mcp-rabbitmq`) para uso direto via MCP, além de API programática.

## Instalação

```bash
npm install mcp-rabbitmq
```

Ou utilize diretamente com `npx`:

```bash
npx mcp-rabbitmq
```

## Configuração das variáveis de ambiente

Defina os parâmetros de conexão antes de iniciar o servidor.

### Opção 1: URL pronta

```bash
export RABBITMQ_URL="amqp://user:password@host:5672/vhost"
```

### Opção 2: Parâmetros individuais

```bash
export RABBITMQ_HOST="localhost"
export RABBITMQ_PORT="5672"
export RABBITMQ_USERNAME="guest"
export RABBITMQ_PASSWORD="guest"
export RABBITMQ_VHOST="/"
```

Variáveis adicionais:

- `RABBITMQ_PREFETCH`: define o `prefetch` aplicado ao canal usado pelo MCP.

## Uso via MCP

1. Garanta que as variáveis de ambiente estejam carregadas (pode-se usar um arquivo `.env`).
2. Execute o servidor MCP em modo stdio:

```bash
npx mcp-rabbitmq
```

3. Configure seu cliente MCP para apontar para o comando acima.

### Exemplo no Cursor

Crie (ou edite) o arquivo `.cursor/mcp.json` do seu projeto e adicione uma entrada semelhante:

```json
"rabbitmq": {
  "command": "npx",
  "args": [
    "--yes",
    "mcp-rabbitmq"
  ],
  "env": {
    "RABBITMQ_URL": "amqp://user:password@host:5672/vhost"
  }
}
```

Caso prefira configurar os parâmetros individualmente, substitua `RABBITMQ_URL` pelos pares `RABBITMQ_HOST`, `RABBITMQ_PORT`, `RABBITMQ_USERNAME`, `RABBITMQ_PASSWORD` e `RABBITMQ_VHOST`. Depois de salvar, o Cursor exibirá o servidor `rabbitmq` na lista de MCPs disponíveis.

### Exemplo no Cursor (com build local)

Se você preferir usar o build gerado na sua máquina (sem `npx`), primeiro garanta que o pacote esteja instalado e compilado:

```bash
npm install
npm run build
```

Em seguida, referencie o binário gerado em `dist/server.js` no `.cursor/mcp.json`:

```json
"rabbitmq-local": {
  "command": "node",
  "args": [
    "./path/para/mcp-rabbitmq/dist/server.js"
  ],
  "cwd": "./path/para/mcp-rabbitmq",
  "env": {
    "RABBITMQ_HOST": "localhost",
    "RABBITMQ_PORT": "5672",
    "RABBITMQ_USERNAME": "guest",
    "RABBITMQ_PASSWORD": "guest",
    "RABBITMQ_VHOST": "/"
  }
}
```

Troque `./path/para/mcp-rabbitmq` pelo caminho absoluto ou relativo correto no seu projeto. Essa abordagem evita downloads via `npx` e usa diretamente os arquivos já compilados no seu ambiente.

### Exemplo no Codex (npx)

Se estiver usando o Codex CLI, adicione ao arquivo `codex.toml`:

```toml
[mcp.rabbitmq]
command = "npx"
args = ["--yes", "mcp-rabbitmq"]

[mcp.rabbitmq.env]
RABBITMQ_URL = "amqp://user:password@host:5672/vhost"
```

### Exemplo no Codex (build local)

Após instalar e gerar a build local (`npm install && npm run build`), configure o `codex.toml` assim:

```toml
[mcp.rabbitmq-local]
command = "node"
args = ["./path/para/mcp-rabbitmq/dist/server.js"]
cwd = "./path/para/mcp-rabbitmq"

[mcp.rabbitmq-local.env]
RABBITMQ_HOST = "localhost"
RABBITMQ_PORT = "5672"
RABBITMQ_USERNAME = "guest"
RABBITMQ_PASSWORD = "guest"
RABBITMQ_VHOST = "/"
```

Atualize os caminhos conforme a estrutura da sua máquina. O Codex carregará o servidor MCP automaticamente a partir dessas definições.

### Ferramentas expostas

- `publish_message`: publica mensagens em uma fila ou exchange. Argumentos:
  - `queue` *(opcional)* – nome da fila destino.
  - `exchange` *(opcional)* – nome da exchange destino.
  - `routingKey` *(opcional)* – rota utilizada ao publicar em uma exchange.
  - `payload` *(obrigatório)* – string ou objeto JSON com a mensagem.
  - `persistent`, `contentType`, `headers`, `queueOptions`, `exchangeOptions` *(opcionais)* – ajustes finos da publicação.
- `check_queue`: retorna `messageCount` e `consumerCount` de uma fila.
- `purge_queue`: remove todas as mensagens pendentes da fila informada.

## Uso programático

```ts
import { createRabbitMqServer, loadConfig } from "mcp-rabbitmq";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

dotenv.config();

const { server } = createRabbitMqServer({ config: loadConfig() });
server.connect(new StdioServerTransport());
```

## Scripts disponibilizados

- `npm run build`: compila o projeto TypeScript para `dist/`.
- `npm run clean`: remove a pasta `dist/`.
- `npm run lint`: executa o ESLint.

## Publicação no npm

O pacote já está configurado com `files`, `exports` e script `prepare` para gerar a build automaticamente antes de ser publicado com `npm publish`.

## Licença

MIT