Skip to main content
Glama
Pedro21062014

novacrm-mcp

README.md
# novacrm-mcp

Servidor **MCP (Model Context Protocol)** oficial do **NovaCRM**. Conecta IAs
como **Claude Desktop, Cursor, Claude Code, Gemini CLI, Zed e Cline** aos dados
e operações da sua loja — clientes, produtos, estoque, pedidos, cupons,
webhooks e métricas — tudo através da **API pública v1** do NovaCRM,
autenticado pela chave de API da loja.

- **Zero dependências**: JSON-RPC 2.0 sobre STDIO implementado na mão (Node ≥ 18).
- **27 ferramentas** cobrindo o dia a dia da loja + **2 prompts prontos**.
- **Escopos respeitados**: a chave define o que a IA pode fazer (leitura e/ou
  escrita), e os limites do plano e o rate limit valem normalmente.

```
┌──────────────┐   JSON-RPC/STDIO   ┌──────────────┐   HTTPS Bearer   ┌─────────────────┐
│  IA (Claude, │ ─────────────────▶ │ novacrm-mcp  │ ───────────────▶ │  API v1 do      │
│  Cursor, …)  │ ◀───────────────── │  (npx)       │ ◀─────────────── │  NovaCRM        │
└──────────────┘                    └──────────────┘                  └─────────────────┘
```

## Instalação e uso rápido

```bash
# direto, sem instalar nada
NOVACRM_API_KEY="ncrm_live.suachave" npx novacrm-mcp

# ou instalando globalmente
npm install -g novacrm-mcp
NOVACRM_API_KEY="ncrm_live.suachave" novacrm-mcp
```

Gere sua chave em **Console da API → Chaves de API** no painel do NovaCRM
(produção `ncrm_live.…` ou sandbox `ncrm_test.…`). A chave só é exibida na
criação.

> A chave define o que a IA pode fazer pelos **escopos** (ex.: `products:read`,
> `orders:write`). Crie uma chave enxuta se a IA só vai ler, e uma com escopos
> de escrita apenas quando confiar no agente.

## Configuração por cliente

### Claude Desktop

Edite `claude_desktop_config.json`
(`~/Library/Application Support/Claude/claude_desktop_config.json` no macOS,
`%APPDATA%\Claude\claude_desktop_config.json` no Windows):

```json
{
  "mcpServers": {
    "novacrm": {
      "command": "npx",
      "args": ["novacrm-mcp"],
      "env": {
        "NOVACRM_API_KEY": "ncrm_live.suachave.aqui"
      }
    }
  }
}
```

Reinicie o Claude Desktop — o martelinho 🔨 aparecerá com as ferramentas
`novacrm_*` disponíveis.

### Cursor

Crie `.cursor/mcp.json` no projeto (ou configure em Settings → MCP):

```json
{
  "mcpServers": {
    "novacrm": {
      "command": "npx",
      "args": ["novacrm-mcp"],
      "env": {
        "NOVACRM_API_KEY": "ncrm_live.suachave.aqui"
      }
    }
  }
}
```

### Claude Code

```bash
claude mcp add novacrm -e NOVACRM_API_KEY=ncrm_live.suachave.aqui -- npx novacrm-mcp
```

### Gemini CLI

Adicione ao `settings.json` do Gemini CLI:

```json
{
  "mcpServers": {
    "novacrm": {
      "command": "npx",
      "args": ["novacrm-mcp"],
      "env": { "NOVACRM_API_KEY": "ncrm_live.suachave.aqui" },
      "timeout": 15000
    }
  }
}
```

### Zed, Cline e outros

Qualquer cliente MCP com transporte STDIO funciona: aponte o comando para
`npx novacrm-mcp` com a variável `NOVACRM_API_KEY`.

## Ferramentas disponíveis (27)

| Grupo | Ferramentas |
| --- | --- |
| Diagnóstico | `novacrm_ping` |
| Métricas | `novacrm_get_metrics` (overview / revenue / orders / products / clients / inventory) |
| Clientes | `novacrm_list_clients`, `novacrm_get_client`, `novacrm_create_client`, `novacrm_update_client`, `novacrm_import_clients` |
| Produtos | `novacrm_list_products`, `novacrm_get_product`, `novacrm_create_product`, `novacrm_update_product`, `novacrm_delete_product` |
| Estoque | `novacrm_inventory_alerts`, `novacrm_adjust_stock` |
| Pedidos | `novacrm_list_orders`, `novacrm_get_order`, `novacrm_create_order`, `novacrm_update_order_status`, `novacrm_cancel_order` |
| Cupons | `novacrm_list_coupons`, `novacrm_create_coupon`, `novacrm_validate_coupon` |
| Loja | `novacrm_get_store`, `novacrm_update_store`, `novacrm_set_store_status` |
| Webhooks | `novacrm_list_webhooks`, `novacrm_create_webhook` |

Status de pedido válidos: `pending_payment`, `new`, `processing`,
`completed`, `cancelled`.

## Prompts prontos

- `resumo_diario_loja` — briefing executivo da loja (faturamento, pedidos
  pendentes e alertas de estoque).
- `auditoria_estoque` — auditoria do catálogo com plano de reposição
  (aceita `limite_alerta`).

## Variáveis de ambiente

| Variável | Obrigatória | Padrão |
| --- | --- | --- |
| `NOVACRM_API_KEY` | sim | — |
| `NOVACRM_BASE_URL` | não | `https://console.novacrm.com.br/api/v1` |

Para apontar para o sandbox: `NOVACRM_BASE_URL=https://sandbox.novacrm.com.br/api/v1`
com uma chave `ncrm_test.…`.

## Segurança

- A chave trafega apenas no header `Authorization` da API (no STDIO fica na
  variável de ambiente do processo local, nunca sai da sua máquina).
- Toda chamada passa pelo **rate limit por chave** e pelos **limites do plano**
  (Free 100/mês, Pro 10.000/mês, Enterprise 100.000/mês).
- **Escopos por ferramenta**: uma chave sem `orders:write` nunca cancela um
  pedido, mesmo que a IA tente. Deletar definitivamente exige o escopo
  `dangerous:delete`.
- **Zero dependências npm**: nada para instalar ou vulnerabilizar.

## Desenvolvimento

Sem etapa de build — o servidor é um único arquivo ESM:

```bash
git clone https://github.com/Pedro21062014/novacrm-mcp.git
cd novacrm-mcp
node test/e2e.mjs   # suíte e2e: sobe uma API v1 simulada e valida o servidor
```

O teste valida o protocolo completo (initialize, tools/list, tools/call de
leitura e escrita, prompts, erros, lote JSON-RPC e execução sem chave).

## Licença

[MIT](./LICENSE) © NovaCRM