Skip to main content
Glama
vertexdevs-hq

elevor-erp360

README.md
# elevor-mcp — MCP server ERP360 / Elevor (DentalInoveh)

Servidor **MCP** que expõe o ERP360 da Elevor para um agente/app. **Construído e testado
ao vivo (10/06)** contra a instalação de produção `s6.elevor.cloud/DentalInoveh/ERP360`.

São **duas APIs** no mesmo ERP, com tokens **por escopo** (auth `Bearer`):

| Escopo | API | Token (.env) | Status |
|---|---|---|---|
| **Clientes** | Comercial `/api/v2/Clientes` | `ELEVOR_TOKEN_CLIENTES` | ✅ funcionando (4.897 clientes) |
| **Pedidos** | Comercial `/api/Pedidos/ConsultarPedidos` | `ELEVOR_TOKEN_PEDIDOS` | ✅ funcionando (83 pedidos c/ itens) |
| **Produtos/Estoque** | Ren9veCommerce `/api/Ren9veCommerce/Produtos*` | `ELEVOR_TOKEN_PRODUTOS` | 🟡 auth OK, catálogo vazio* |

\* *O token de produtos autentica (200 OK), mas o catálogo volta vazio até a Elevor
**marcar os grupos/produtos para o e-commerce** no ERP (config de produção). Quando isso
for feito, `produtos_sync` passa a retornar o catálogo sem mudar nada de código.*

## Tools
| Tool | Escopo | O que faz |
|------|--------|-----------|
| `clientes_list` | clientes | Lista clientes (paginado; filtro por data/cpf/cnpj) |
| `cliente_get` | clientes | Cliente por Cod |
| `cliente_limite_credito` | clientes | Limite de crédito |
| `pedidos_consultar` | pedidos | Consulta pedidos (filtros + paginação); traz Cliente e Produtos |
| `produtos_sync` | produtos | Catálogo: `all` \| `since` \| `changed` (delta) |
| `produto_get` / `estoque_get` | produtos | Produto / saldo por Cod (Estoque + Grades) |
| `produtos_categorias` / `produtos_grades` | produtos | Categorias / grades |
| `pedido_ecommerce_criar` | produtos | **Escrita**: cria pedido (baixa estoque). Requer `ELEVOR_ALLOW_WRITES=true` |

## Setup
```bash
cd ~/elevor-mcp
npm install
cp .env.example .env     # .env já tem os tokens reais (gitignored)
npm run build
node test-live.mjs       # teste read-only contra produção
```

Registrar no cliente MCP (Claude Desktop / OpenClaw):
```json
{
  "mcpServers": {
    "elevor-erp360": {
      "command": "node",
      "args": ["/Users/barboza/elevor-mcp/dist/index.js"],
      "env": { "ELEVOR_RADICAL_URL": "http://s6.elevor.cloud/DentalInoveh/ERP360" }
    }
  }
}
```
(os tokens são lidos do `.env`, ou podem ir no bloco `env`.)

## Pendência única: config do e-commerce (Elevor)
Reunião com o Lucas (Elevor) para configurar no ERP:
1. **Quais grupos/produtos** vão pro e-commerce (destrava o catálogo vazio).
2. Tabela de preço exposta (Preço / Promoção / À Vista).
3. Estoque: `Estoque` já é soma das grades? Há estoque por depósito/filial?
4. Imagens via `ProdutosImagens`. Allowlist de IP. Quem consome o cursor do delta `/Produtos`.

Detalhes técnicos completos em `INTEGRATION_STUDY.md`. Swagger salvo em `erp360-swagger.json`.

TDQS

C2.5/5.0

Scored across 26 tools

Disambiguation2/5

Several tools overlap: pedido_ecommerce_criar and pedido_criar_v2 both create orders, while pedidos_consultar and pedido_por_data both query orders by filters/date. produto_get includes stock and grades, making it unclear when estoque_get is needed. This is more than just one or two confusing pairs.

Naming Consistency2/5

Naming follows no clear convention: cliente_get, clientes_list, pedido_status, pedido_por_data, crm_consultar_atividades, and produtos_sync all use different patterns. It also mixes English and Portuguese verbs in a single toolset, which makes the API feel inconsistent despite the shared domain prefixes.

Tool Count2/5

With 26 tools, the count crosses the 25-tool heavy threshold. Although the ERP/CRM domain is broad, several overlapping order and product tools make the set feel larger than necessary and harder to navigate.

Completeness4/5

The toolset covers core ERP workflows: customer create/update/read, product and stock retrieval, order lifecycle including create/status/cancel, plus CRM account/contact/activity creation. Minor gaps remain, like product update/delete and CRM read endpoints for contacts, but the main integration flows are usable.

Maintenance

ActivityStale
ResponsivenessNo issues