RabbitMQ MCP Go

Um servidor MCP baseado em Go para integração com o broker de mensagens RabbitMQ.

Documentação

RabbitMQ MCP Go

Uma implementação em Go do servidor Model Control Protocol (MCP) para integração com RabbitMQ.

Este servidor fornece uma implementação para interagir com RabbitMQ por meio do protocolo MCP, permitindo que modelos de LLM realizem operações comuns do RabbitMQ através de uma interface padronizada.

Go Report Card Go Version SLSA 3 Go Reference GitHub Release License: MIT

rabbitmq-mcp-demo

Visão Geral

O RabbitMQ MCP Server preenche a lacuna entre modelos de LLM e RabbitMQ, permitindo que eles:

  • Publiquem uma mensagem em uma fila ou exchange do RabbitMQ

Estrutura do Projeto

.
├── cmd/                    # Application entry points
├── internal/              # Private application code
│   ├── config/           # Configuration management
│   ├── tools/            # MCP tools implementations
│   ├── prompts/          # Prompt templates and configurations
│   └── resources/        # Shared resources and utilities
├── pkg/                   # Public library code
├── api/                   # API definitions and documentation
└── scripts/              # Build and utility scripts

Visão Geral dos Diretórios

Estrutura de Diretórios Interna

  • tools/: Contém todas as implementações das ferramentas MCP. Cada ferramenta é um pacote separado que implementa a interface de ferramenta MCP.
  • prompts/: Armazena modelos de prompt e configurações usados pelas ferramentas MCP.
  • resources/: Abriga utilitários compartilhados, funções auxiliares e componentes reutilizáveis.
  • config/: Gerencia a configuração da aplicação.

Primeiros Passos

  1. Instale o Go 1.24.3:
asdf install golang 1.24.3
  1. Clone o repositório:
git clone https://github.com/yourusername/rabbitmq-mcp-go.git
cd rabbitmq-mcp-go
  1. Instale as dependências:
go mod download
  1. Compile o projeto:
go build ./cmd/...

Integração com Cliente MCP

Configuração Básica

Adicione esta configuração às configurações do seu cliente MCP:

{
  "mcpServers": {
    "rabbitmq": {
      "command": "rabbitmq-mcp-server",
      "env": {
        "RABBITMQ_URL": "amqp://guest:guest@localhost:5672/"
      }
    }
  }
}

Integração com Cursor

Para usar com o Cursor, crie ou edite ~/.cursor/mcp.json:

{
  "mcpServers": {
    "rabbitmq": {
      "command": "rabbitmq-mcp-server",
      "env": {
        "RABBITMQ_URL": "amqp://guest:guest@localhost:5672/"
      }
    }
  }
}

Integração com Claude Desktop

Para usar com o Claude Desktop, edite seu arquivo de configuração:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "rabbitmq": {
      "command": "rabbitmq-mcp-server",
      "env": {
        "RABBITMQ_URL": "amqp://guest:guest@localhost:5672/"
      }
    }
  }
}

Usando a Ferramenta de Publicação do RabbitMQ

A ferramenta de publicação permite enviar mensagens para filas ou exchanges do RabbitMQ por meio da interface MCP.

Parâmetros da Ferramenta

  • queue (string, opcional): Nome da fila para publicar
  • exchange (string, opcional): Nome da exchange para publicar
  • message (string, obrigatório): Conteúdo da mensagem a ser publicada
  • content_type (string, opcional): Tipo de conteúdo da mensagem
    • Valores suportados: "text/plain" (padrão), "application/json"
  • headers (string, opcional): Cabeçalhos da mensagem em formato JSON

Exemplos de Interação

1. Publicando em uma Fila:

Usuário: "Envie uma mensagem 'Hello World' para a fila 'my_queue'"

O Assistente de IA usará a ferramenta de publicação:

{
  "queue": "my_queue",
  "message": "Hello, World!",
  "content_type": "text/plain"
}

Resposta:

"Message published successfully to my_queue"

2. Publicando JSON em uma Exchange:

Usuário: "Publique uma atualização de status do pedido na exchange 'orders'"

O Assistente de IA usará a ferramenta de publicação:

{
  "exchange": "orders",
  "message": "{\"order_id\": \"12345\", \"status\": \"completed\"}",
  "content_type": "application/json"
}

Resposta:

"Message published successfully to orders"

1. Publicando com Cabeçalhos:

Usuário: "Envie uma mensagem de alta prioridade para a fila de notificações"

O Assistente de IA usará a ferramenta de publicação:

{
  "queue": "notifications",
  "message": "Important system update",
  "headers": "{\"priority\": \"high\", \"timestamp\": \"2024-03-20T12:00:00Z\"}"
}

Tratamento de Erros

A ferramenta retornará um erro nos seguintes casos:

  • Nem fila nem exchange são especificadas
  • O parâmetro obrigatório da mensagem está ausente
  • Formato JSON inválido quando content_type é "application/json"
  • Erros de conexão ou publicação no RabbitMQ

Desenvolvimento

Para adicionar uma nova ferramenta MCP:

  1. Crie um novo diretório em internal/tools/
  2. Implemente a interface de ferramenta MCP
  3. Registre a ferramenta no aplicativo principal
  4. Adicione os prompts correspondentes em internal/prompts/ se necessário
  5. Documente a ferramenta no README das ferramentas

Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.