Skip to main content
Glama
protheus-mcp-server (piloto)

protheus-mcp-server (piloto)

by Endrews-DFL

protheus-mcp-server (piloto)

Conector MCP somente-leitura para consulta ao Protheus (TOTVS) da DFL. Expõe 10 endpoints GET como tools MCP, com autenticação OAuth2 (password grant + refresh automático) e tratamento amigável de respostas vazias/erros.

Este conector apenas consulta (GET). Não altera nada no Protheus. Os fontes .prw são usados só como referência de contrato — nunca são modificados.

Configuração

Copie .env.example para .env e preencha:

  • PROTHEUS_BASE_URL — base REST (inclui /rest/03).

  • PROTHEUS_USER / PROTHEUS_PASSWORD — credenciais OAuth2. Use um usuário de serviço só-leitura.

  • PROTHEUS_TENANT_ID — empresa,filial (ex.: 03,01). Deixe vazio para não enviar o header.

  • PROTHEUS_DFL_TOKEN — token dos WS customizados (só se a MV DFL_TOKEN estiver ligada).

Related MCP server: TOTVS RM Database MCP Server

Build e execução

npm install
npm run build
node dist/index.js        # inicia o servidor MCP via stdio

As variáveis de ambiente precisam estar carregadas (via .env do seu runner, Docker, ou export).

Tools (10 endpoints do piloto)

Tool

Endpoint

Observação

protheus_limite_credito_cliente

/api/fat/v1/CustomerCreditLimit

✅ com dados

protheus_condicoes_pagamento

/api/fat/v1/paymentcondition

✅ com dados

protheus_produtos_mrp

/api/pcp/v1/mrpproduct

base pode estar vazia

protheus_saldo_estoque_mrp

/api/pcp/v1/mrpstockbalance

base pode estar vazia

protheus_armazens_mrp

/api/pcp/v1/mrpwarehouse

base pode estar vazia

protheus_solicitacoes_compra_mrp

/api/pcp/v1/mrppurchaseorder

= Solicitações (ambiente DFL)

protheus_pedidos_compra_mrp

/api/pcp/v1/mrppurchaserequest

= Pedidos (ambiente DFL)

protheus_folha_pagamento

/payment/...

RH — dado sensível (LGPD)

protheus_clientes_por_vendedor

/WSRCLIENTE?email=

e-mail do VENDEDOR

protheus_saldo_cliente

/WSRSALDOCLIENTE?cliente=

saldo em aberto (SE1)

Tratamento amigável de respostas

Regra geral aplicada a toda tool (protheusClient.normalize):

  • Lista vazia (items: []), 404 "Nenhum registro foi encontrado" → mensagem "Nenhum registro encontrado para os filtros informados." (não é erro).

  • 500 (inclui o comportamento conhecido de alguns WS customizados quando não há registro ou falta parâmetro) → mensagem explicativa pedindo revisão dos parâmetros.

  • 401 → renova o token uma vez e repete; persistindo, retorna erro de autorização.

  • Formatos: envelope padrão {hasNext, items} e o formato custom dos WSR* são ambos aceitos.

Regra de autenticação (token/refresh)

O endpoint OAuth2 do Protheus é sensível à codificação dos parâmetros: se username/password/ refresh_token forem 100% percent-encoded (ex.: @ → %40), a autenticação falha. Por isso o cliente monta as URLs de token e refresh com os parâmetros direto na URL, escapando apenas o que quebraria a própria URL (#, &, +, espaço e %) e preservando @, !, etc. Ver ProtheusClient.encTokenParam. Não trocar por URLSearchParams — ele reescapa o @ e volta a dar erro de autenticação.

Contratos

Os contratos completos (rotas, parâmetros, campos de retorno, bugs conhecidos) estão em ../protheus-piloto-contratos.json e ../Protheus_Piloto_Spec_10_Endpoints.md.

Available Tools

10 tools
protheus_armazens_mrpArmazéns (MRP)A

Consulta os armazéns do MRP. Sem ID, retorna a lista; com branchId+code, um armazém específico. Obs.: base pode estar sem registros.

Inputs: code, page, order, fields, +2 more.

protheus_clientes_por_vendedorClientes por vendedor (WSRCLIENTE)A

Retorna os clientes vinculados a um vendedor/gerente, identificado pelo e-mail (SA3.A3_EMAIL). Atenção: o e-mail é do VENDEDOR, não do cliente.

Inputs: email (required).

protheus_condicoes_pagamentoCondições de pagamentoA

Consulta as condições de pagamento (Faturamento/Financeiro). Sem code, retorna a lista; com code, uma condição específica.

Inputs: code, page, order, fields, +1 more.

protheus_folha_pagamentoFolha de pagamento (RH)A

Demonstrativo de pagamento (RH). Sem employeeId, retorna os tipos de alteração salarial (sem dado pessoal). Com employeeId, retorna o demonstrativo do funcionário — DADO PESSOAL SENSÍVEL (LGPD).

Inputs: employeeId.

protheus_limite_credito_clienteLimite de crédito do clienteB

Consulta o limite de crédito dos clientes (Faturamento). Sem internalId, retorna a lista; com internalId (código+loja), um cliente específico.

Inputs: page, order, fields, pagesize, +1 more.

protheus_pedidos_compra_mrpPedidos de compra (MRP)A

Pedidos de compra do MRP (endpoint MRPPurchaseRequest — no ambiente DFL retorna PEDIDOS). Sem ID, lista; com branchId+code, um específico. Obs.: base pode estar sem registros.

Inputs: code, page, order, fields, +2 more.

protheus_produtos_mrpProdutos (MRP)B

Consulta produtos do MRP. Sem ID, retorna a lista; com branchId+product, um produto específico. Obs.: base pode estar sem registros.

Inputs: page, order, fields, product, +2 more.

protheus_saldo_clienteSaldo em aberto do cliente (WSRSALDOCLIENTE)A

Retorna o saldo em aberto (títulos a receber, SE1) de um cliente. Informe o código do cliente. Empresa/filial são fixadas em 03/01 pelo web service.

Inputs: cliente (required).

protheus_saldo_estoque_mrpSaldo em estoque (MRP)A

Consulta os saldos em estoque do MRP. Sem ID, retorna a lista; com branchId+code, um registro específico. Obs.: base pode estar sem registros.

Inputs: code, page, order, fields, +2 more.

protheus_solicitacoes_compra_mrpSolicitações de compra (MRP)A

Solicitações de compra do MRP (endpoint MRPPurchaseOrder — no ambiente DFL retorna SOLICITAÇÕES). Sem ID, lista; com branchId+code, uma específica. Obs.: base pode estar sem registros.

Inputs: code, page, order, fields, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool targets a distinct business entity or operation: customer balance, credit limit, payment conditions, various MRP entities (products, stock, warehouses, purchase requests, orders), payroll, and clients by seller. No two tools overlap in purpose; descriptions clearly differentiate them.

    Naming Consistency5/5

    All tool names follow the pattern 'protheus_<entity>_<specifier>' with underscores and consistent use of Portuguese nouns. The naming is predictable and uniform, making it easy to infer functionality from the name.

    Tool Count5/5

    With 10 tools covering financial, MRP, HR, and sales domains, the count is well-scoped for a pilot consultation server. Each tool serves a clear purpose without bloat or redundancy.

    Completeness4/5

    The tool set provides essential read-only consultations across multiple ERP modules (financial, MRP, HR, sales). Minor omissions exist, such as a general customer list or inventory movements, but given the pilot nature, coverage is adequate for common queries.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      A read-only MCP server exposing TOTVS support tickets (Portal do Cliente) as tools for LLMs in Claude Code, Claude Desktop, and Cursor.
      11
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for the Omie API to list products, consult clients, and create budgets
      22 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Read-only MCP server for Olist Tiny ERP, enabling querying of products, inventory, orders, invoices, accounts, contacts, shipping, purchase orders, CRM, and price lists via the official REST API v3.
      MIT