Skip to main content
Glama
AyrtonFelipe

Groq MCP Server

by AyrtonFelipe
README.md
# 🚀 Groq MCP Server

Um servidor **Model Context Protocol (MCP)** inteligente e completo, projetado para integrar sua aplicação com a poderosa API Groq, oferecendo acesso otimizado aos modelos de IA mais rápidos do mundo.

Atua como uma ponte inteligente, permitindo que clientes compatíveis (como o Claude Desktop) utilizem os diversos modelos da Groq para completação de texto, transcrição de áudio, análise de visão e processamento em lote.

## ✨ Características Principais

### 🧠 **Modelos Suportados**
Este servidor está configurado para gerenciar e rotear requisições para uma ampla gama de modelos Groq, incluindo:
* **Completamento de Texto (LLMs):**
    * `llama-3.1-8b-instant`
    * `llama-3.3-70b-versatile`
    * `deepseek-r1-distill-llama-70b`
    * `qwen/qwen3-32b` (e `qwen-qwq-32b` para matemática)
    * `compound-beta`, `compound-beta-mini`
    * `allam-2-7b`, `gemma2-9b-it`, `llama3-70b-8192`, `llama3-8b-8192`
    * `mistral-saba-24b`
* **Segurança (Prompt/Content Guard):**
    * `meta-llama/llama-guard-4-12b`
    * `meta-llama/llama-prompt-guard-2-22m`, `meta-llama/llama-prompt-guard-2-86m`
* **Visão (Multimodal):**
    * `meta-llama/llama-4-maverick-17b-128e-instruct`
    * `meta-llama/llama-4-scout-17b-16e-instruct`
* **Áudio (Speech-to-Text):**
    * `whisper-large-v3`, `whisper-large-v3-turbo`
    * `distil-whisper-large-v3-en`
* **Texto para Fala (Text-to-Speech):**
    * `playai-tts`, `playai-tts-arabic`

### ⚡ **Recursos Avançados**

* **Roteamento Inteligente (ModelRouter)**: Seleção dinâmica do modelo ideal com base em prioridades (velocidade, qualidade, custo, raciocínio, matemática, multilíngue), complexidade do prompt e capacidades específicas (visão, áudio).
* **Rate Limiting Controlado**: Gerenciamento inteligente de limites de requisições e tokens por minuto (RPM/TPM) configuráveis para cada modelo, otimizando o uso da API.
* **Cache Otimizado**: Sistema de cache em memória com TTL (Time-To-Live) configurável para respostas de LLMs, reduzindo latência e chamadas redundantes à API.
* **Métricas Detalhadas**: Coleta abrangente de métricas de uso, desempenho (latência, throughput), erros e distribuição de modelos para análise e monitoramento.
* **Tratamento de Erros Robusto**: Sistema centralizado de tratamento de erros com capacidade de re-tentativas automáticas (retry) para requisições de API, aumentando a resiliência.
* **Processamento em Lote**: Suporte à ferramenta de processamento em lote da Groq, permitindo o envio eficiente de grandes volumes de requisições com economia de custo.
* **Logging Estruturado e Depuração**: Sistema de logs profissional com Winston, que gera logs estruturados e direciona a saída colorida para `stderr` em desenvolvimento, facilitando a depuração e o monitoramento.

## 🛠️ Instalação

### Pré-requisitos
* **Node.js**: Versão `v20.17.0` ou superior, ou `v22.9.0` ou superior. Recomenda-se usar [NVM](https://github.com/nvm-sh/nvm) (ou [nvm-windows](https://github.com/coreybutler/nvm-windows)) para gerenciar as versões do Node.js.
* **npm**: Gerenciador de pacotes Node.js (geralmente incluído com o Node.js e compatível com as versões recomendadas).
* **TypeScript**: Versão 5 ou superior.
* **Chave API do Groq**: Necessária para autenticar as requisições à API Groq. Obtenha a sua em [https://console.groq.com/keys](https://console.groq.com/keys).

### Instalação Rápida

1.  **Clone o repositório:**
    ```bash
    git clone [https://github.com/AyrtonFelipe/GroqCloud-MCP_server.git]
    cd groq-mcp-server
    ```

2.  **Instale as dependências do projeto:**
    ```bash
    npm install
    # Instale também a biblioteca para conversão de schemas Zod para JSON Schema
    npm install zod-to-json-schema
    ```

3.  **Configure as variáveis de ambiente:**
    Crie um arquivo `.env` na raiz do projeto (se não existir, você pode copiar do `.env.example` se fornecido):
    ```bash
    cp .env.example .env
    ```
    Edite o arquivo `.env` com sua chave API do Groq:
    ```
    GROQ_API_KEY="sua_chave_api_groq_aqui"
    ```
    *(Opcional: configure outras variáveis como `LOG_LEVEL` conforme necessário.)*

4.  **Atualize `src/config/models.json`:**
    Este arquivo define os modelos Groq que seu servidor irá usar e expor.
    * **Remova** entradas de modelos que não estão mais disponíveis ou que não se deseja usar (verifique as listas mais recentes no console Groq).
    * **Adicione** todos os modelos da lista de "Modelos Suportados" (acima) que ainda não estão presentes. Para cada novo modelo, você deve **preencher todas as suas propriedades** (nome, descrição, capacidades, `costPer1kTokens`, `rateLimits`, etc.) consultando a [documentação oficial da Groq](https://console.groq.com/docs/) para obter os valores precisos.
    * **Ajuste as seções `modelSelectionRules` e `complexityThresholds`** em `models.json` para refletir os modelos que você tem e a lógica de seleção desejada (ex: para prioridades de `reasoning`, `mathematical`, `multilingual`).

5.  **Atualize `src/config/constants.ts`:**
    * Sincronize a constante `RATE_LIMITS` com os modelos presentes no seu `models.json`. Certifique-se de que cada modelo em `models.json` tenha uma entrada correspondente em `RATE_LIMITS` com `rpm` (requests per minute) e `tpm` (tokens per minute) precisos (consulte a documentação da Groq para os valores mais recentes).
    * Atualize também os `z.enum` nos arquivos das suas ferramentas (`src/tools/*.ts`) para incluir os novos modelos que você deseja expor ao cliente.

6.  **Compile o projeto:**
    ```bash
    npm run build
    ```

7.  **Inicie o servidor:**
    ```bash
    npm start
    ```
    Seu servidor estará ativo e aguardando conexões via `stdin/stdout`.

## 🤝 Uso com o Claude Desktop

Uma vez que seu servidor MCP esteja rodando localmente, o Claude Desktop deve ser capaz de descobri-lo e usar suas ferramentas:

1.  **Inicie o Claude Desktop.**
2.  **Verifique as Ferramentas:** As ferramentas Groq (`groq_text_completion`, `groq_audio_transcription`, `groq_vision_analysis`, `groq_batch_processing`) devem aparecer ativadas na interface do Claude Desktop (geralmente no menu de ferramentas ou integração).
3.  **Interaja:** Comece a conversar com o Claude e peça para ele usar as ferramentas. Exemplos:
    * `Use groq_text_completion para gerar um texto sobre as capacidades do Groq para IA.`
    * `Com a ferramenta groq_text_completion, analise os dados financeiros { dados: [100, 250, 80, 400] } e use o modelo: llama-3.3-70b-versatile`
    * `groq_audio_transcription: transcreva o arquivo 'caminho/para/seu/audio.mp3' usando 'whisper-large-v3-turbo'.`
    * `groq_vision_analysis: descreva a imagem em 'https://example.com/sua-imagem.jpg' usando 'meta-llama/llama-4-scout-17b-16e-instruct'.`

## 📊 Estrutura do Projeto

````

.
├── src/
│   ├── config/
│   │   ├── constants.ts         \# Constantes do sistema (RATE\_LIMITS, API\_ENDPOINTS, etc.)
│   │   └── models.json          \# Definições detalhadas dos modelos Groq
│   ├── tools/
│   │   ├── audio-transcription.ts \# Ferramenta para transcrição de áudio
│   │   ├── batch-processing.ts    \# Ferramenta para processamento em lote
│   │   ├── model-router.ts        \# Lógica central para seleção de modelos
│   │   ├── text-completion.ts     \# Ferramenta para completação de texto
│   │   └── vision-analysis.ts     \# Ferramenta para análise de visão
│   │   └── ... (novas ferramentas como Text-to-Speech, se implementadas)
│   ├── types/
│   │   └── groq-types.ts          \# Definições de tipos TypeScript para modelos Groq
│   ├── utils/
│   │   ├── cache-manager.ts       \# Gerenciador de cache
│   │   ├── error-handler.ts       \# Tratamento centralizado de erros e retries
│   │   ├── logger.ts              \# Configuração de logging com Winston
│   │   ├── metrics-tracker.ts     \# Coleta de métricas de uso e desempenho
│   │   └── rate-limiter.ts        \# Implementação de rate limiting
│   └── server.ts                  \# Ponto de entrada principal do servidor MCP
├── dist/                          \# Saída da compilação TypeScript
├── logs/                          \# Logs da aplicação
├── .env                           \# Variáveis de ambiente (ex: GROQ\_API\_KEY)
├── .gitignore                     \# Arquivos e pastas a serem ignorados pelo Git
├── package.json                   \# Metadados e dependências do projeto
├── tsconfig.json                  \# Configurações do compilador TypeScript
└── README.md                      \# Este arquivo

```

## 📈 Próximos Passos (Escalabilidade para Web)

Este projeto está configurado para uso local com `StdioServerTransport`. Para escalar para um ambiente de servidor web (e.g., produção), as seguintes considerações seriam cruciais:

* **Transporte de Comunicação:** Migrar de `StdioServerTransport` para um transporte web como **Server-Sent Events (SSE)** ou WebSockets para comunicação com clientes web.
* **Mecanismo de Start:** Adaptar o ciclo de vida do servidor para um framework web (e.g., Express, Fastify) que escuta em portas HTTP/HTTPS.
* **Protocolagem:** Implementar rotas HTTP que mapeiam para chamadas JSON-RPC do MCP.
* **Segurança:** Adicionar autenticação (e.g., JWT), autorização, HTTPS, e configuração de CORS para proteger o servidor.
* **Escalabilidade:** Implementar estratégias para lidar com múltiplos clientes e alto tráfego (e.g., load balancing, clusters Node.js, caches distribuídos como Redis para `CacheManager` e `RateLimiter`).

---

**Desenvolvido por Ayrton Felipe.**

TDQS

B3.1/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting different Groq service capabilities: audio transcription, batch processing, text completion, and vision analysis. There is no overlap or ambiguity in their functions, making it easy for an agent to select the appropriate tool.

Naming Consistency5/5

All tool names follow a consistent 'groq_' prefix with descriptive snake_case suffixes (e.g., groq_audio_transcription, groq_batch_processing). This uniform pattern enhances predictability and readability across the tool set.

Tool Count4/5

With 4 tools, the count is reasonable for a Groq API server, covering core functionalities like text, audio, vision, and batch processing. It is slightly lean but well-scoped, as each tool serves a distinct purpose without redundancy.

Completeness4/5

The tool set covers key Groq model types (text, audio, vision) and includes batch processing for efficiency, which addresses common use cases. A minor gap might be the lack of specific tools for model management or configuration, but the surface is largely complete for typical inference tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues