Skip to main content

MCP Server para API V2 do TOTVS Moda — integre Claude e outros clientes MCP ao seu ERP de moda brasileiro

Project description

TOTVS Moda MCP Server

PyPI version Python License: MIT

Servidor MCP (Model Context Protocol) para a API V2 do TOTVS Moda.

Projeto inicial e não oficial. Não tem vínculo com a TOTVS S.A. Construído de forma independente, evolui conforme necessidades reais de uso. Se encontrar problema, abra uma issue. PRs são bem-vindos.


O que é

O MCP (Model Context Protocol) é o protocolo aberto da Anthropic que permite que LLMs (Claude, Copilot, Cursor etc.) usem ferramentas externas de forma padronizada. Este projeto expõe a API V2 do TOTVS Moda como um conjunto de tools MCP, permitindo que você consulte e opere o ERP via linguagem natural.


O que você pode fazer

Exemplos reais do que funciona hoje:

"Quais pedidos foram criados hoje na filial 1?"
"Qual o faturamento da semana passada por filial?"
"Me mostra os 10 clientes que mais compraram este mês"
"Resumo do dia: vendas, contas a receber e a pagar"
"Dados completos do produto 13180"
"Dados da NF 143218"
"Dados do pedido 120040"
"Quais produtos estão com pronta entrega?"
"Visão 360 do cliente CPF 123.456.789-00"
"Qual o preço de venda e custo do produto 10000?"
"Ficha de consumo do produto 13020"
"Quais títulos vencem até sexta no contas a receber?"
"O que tenho pra pagar essa semana?"
"Me mostra os padrões de uso do sistema nos últimos 30 dias"

Cobertura

200+ tools organizadas por módulos da API V2:

  • Harness de endpoints: 251/251 caminhos mapeados na matriz derivada
  • Núcleo não-Analytics: 190/190
  • Analytics/painéis: 61/61 via gateway opcional, desabilitado por padrão
  • Suite local: 202 testes
Módulo Principais operações
Pedidos de venda Buscar, criar, alterar status, cancelar, adicionar/remover itens, alterar preços
Produtos Consultar, atualizar dados, preços, custos, peso, NCM, saldos, grades, imagens
Engenharia de produto Ficha de consumo (matéria-prima + serviços)
Clientes Cadastrar, atualizar PF/PJ, consultar histórico, saldo financeiro
Financeiro (CR) Títulos, boletos, link de pagamento, cheques-presente, vouchers
Financeiro (CP) Duplicatas a pagar, comissões
Fiscal NFes, XMLs, DANFEs, manifestação, faturas
Compras Pedidos de compra, pacotes de entrada/saída
Produção Ordens de produção, consumo de matéria-prima
Logística Movimentações de material, lotes
Geral Operações, condições de pagamento, classificações, CEP, cidades
Painéis rápidos Dashboard do dia, visões 360, estoque disponível, pedidos/OPs em aberto
Analytics / painéis Gateway opcional para endpoints de Analytics, habilitado apenas por ambiente
Inteligência de uso Análise de padrões, sequências, horários de pico, sugestões de otimização

Requisitos

  • Python 3.11+
  • API V2 do TOTVS Moda ativa na sua instância
  • Credenciais de integração OAuth2 (client_id / client_secret)
  • Um cliente MCP: Claude Desktop, VS Code (GitHub Copilot Agent), Cursor, ou qualquer cliente compatível

Instalação

pip install totvs-moda-mcp

Configuração

mcp.json (Claude Desktop / VS Code)

Recomendado: mantenha as credenciais em um .env local e aponte o MCP para esse arquivo. Assim o projeto não fica amarrado a uma empresa ou máquina específica, e o cliente MCP não herda credenciais antigas do sistema.

{
  "servers": {
    "totvs-moda": {
      "command": "totvs-moda-mcp",
      "env": {
        "TOTVS_ENV_FILE": "C:\\\\caminho\\\\para\\\\totvs-moda-mcp\\\\.env",
        "TOTVS_DOTENV_OVERRIDE": "true",
        "TOTVS_BRANCH_CODES": "1"
      }
    }
  }
}

Exemplo de .env:

TOTVS_BASE_URL=https://seu-servidor:9443
TOTVS_CLIENT_ID=seu_client_id
TOTVS_CLIENT_SECRET=seu_client_secret
TOTVS_USERNAME=usuario
TOTVS_PASSWORD=senha
TOTVS_BRANCH_CODES=1

Variáveis de ambiente

Variável Obrigatório Descrição
TOTVS_BASE_URL sim URL base da API (ex: https://totvs.empresa.com:9443)
TOTVS_CLIENT_ID sim Client ID OAuth2
TOTVS_CLIENT_SECRET sim Client Secret OAuth2
TOTVS_USERNAME sim Usuário TOTVS
TOTVS_PASSWORD sim Senha TOTVS
TOTVS_BRANCH_CODES Filiais separadas por vírgula (default: 1)
TOTVS_CACHE_TTL Override global de TTL do cache em segundos
TOTVS_CACHE_ENABLED false para desativar o cache de respostas
TOTVS_USAGE_ENABLED false para desativar o rastreamento de uso
TOTVS_USAGE_FILE Caminho customizado para o arquivo de uso
TOTVS_OPERATION_CONTEXT Texto descrevendo o significado dos status de pedido na sua empresa
TOTVS_TLS_VERIFY false para desativar verificação TLS (self-signed certs)
TOTVS_ENABLE_ANALYTICS true para habilitar o gateway opcional totvs_analytics_call
TOTVS_ENV_FILE Caminho absoluto para um .env a carregar quando o cliente MCP inicia em outro diretório
TOTVS_DOTENV_OVERRIDE true para o .env sobrescrever variáveis antigas herdadas pelo processo MCP
TOTVS_DEFAULT_PRICE_CODES Tabelas de preço padrão, ex: 1
TOTVS_DEFAULT_COST_CODES Tipos de custo padrão, ex: 1,2,3
TOTVS_DEFAULT_STOCK_CODES Tipos de saldo padrão, ex: 1

Segurança

Evite expor credenciais diretamente no mcp.json. Use referências ao ambiente do sistema:

"TOTVS_PASSWORD": "${env:TOTVS_PASSWORD}"

Como funciona internamente

Infraestrutura

  • Autenticação OAuth2 com refresh automático de token
  • Retry com backoff exponencial em falhas de rede e 5xx
  • Context cache no startup: descobre automaticamente filiais, operações, tipos de preço/custo
  • Response cache com TTL por tier: evita chamadas repetidas à API durante uma sessão

Response Cache

Cache em memória com TTL diferenciado por tipo de dado:

Tier TTL Tipo de dado
REFERENCE 24h Filiais, operações, composições
CATALOG 1h Produtos, clientes
FINANCIAL 15min Contas a receber/pagar
STOCK 5min Saldos de estoque
SALES 2min Pedidos de venda

A primeira consulta busca da API normalmente. Consultas subsequentes dentro do TTL retornam instantaneamente do cache. Nenhum dado é hardcoded — cada empresa tem seus próprios dados cacheados.

Usage Intelligence

O servidor registra cada chamada de tool localmente (~/.totvs-moda-usage.jsonl), sem envio externo. A tool totvs_get_usage_insights analisa o histórico e retorna:

  • Top tools: quais ferramentas são mais usadas
  • Sequências: padrões de navegação (ex: "sempre que busca pedidos, consulta NF em seguida")
  • Horários de pico: quando o sistema é mais usado
  • Padrões de parâmetros: filtros que se repetem em 70%+ das chamadas (candidatos a default)
  • Sugestões: recomendações automáticas de composite tools, cache e rotinas

Esses dados ficam no computador do usuário e ajudam a evoluir o servidor com base em uso real.

Composite Tools (painéis rápidos)

Tools que combinam múltiplas chamadas à API em uma única resposta:

Tool O que agrega Antes Agora
totvs_daily_dashboard Vendas + receber + pagar do dia 3-6 calls 1 call
totvs_customer_360 Dados + histórico + recompra 2-3 calls 1 call
totvs_stock_available SKUs com estoque > 0 18+ páginas 1 call
totvs_open_purchase_orders Pedidos de compra abertos dezenas de páginas 1 call
totvs_open_production_orders OPs abertas dezenas de páginas 1 call

Tools principais

Produtos

Tool Descrição
totvs_search_products Busca produtos por filtro
totvs_get_product Dados completos de um produto
totvs_search_product_prices Preços por tipo de tabela
totvs_search_product_costs Custos (reposição, última compra etc.)
totvs_search_product_balances Saldos de estoque
totvs_search_consumption_sheet Ficha de consumo (matéria-prima + serviços)
totvs_update_product_price_only Atualiza preço de venda
totvs_update_product_cost Atualiza custo
totvs_update_product_simple Atualiza peso, NCM, CST e flags
totvs_update_product_data Atualiza dados (simples ou batch)

Pedidos de venda

Tool Descrição
totvs_search_orders Busca pedidos com filtros flexíveis
totvs_create_order Cria pedido de venda
totvs_change_order_status Altera status do pedido
totvs_cancel_order Cancela pedido
totvs_add_order_items Adiciona itens
totvs_update_order_items_price Altera preços dos itens
totvs_get_order_invoices NFes vinculadas ao pedido

Clientes

Tool Descrição
totvs_search_individual_customers Busca clientes PF
totvs_search_legal_customers Busca clientes PJ
totvs_create_or_update_individual_customer Cadastra/atualiza PF
totvs_create_or_update_legal_customer Cadastra/atualiza PJ
totvs_get_person_statistics Histórico e estatísticas do cliente

Painéis rápidos

Tool Descrição
totvs_daily_dashboard Vendas + contas a receber + a pagar do dia
totvs_customer_360 Visão completa do cliente com histórico e flag recompra
totvs_stock_available Produtos com estoque disponível, já filtrado

Analytics

Analytics/painéis do TOTVS Moda podem depender de módulo contratado ou permissão específica. Por isso, o projeto mantém esses endpoints em um gateway isolado e desabilitado por padrão.

Tool Descrição
totvs_analytics_call Gateway opcional para os 61 endpoints Analytics/painel (TOTVS_ENABLE_ANALYTICS=true)
totvs_get_products_sold Top N produtos mais vendidos no período
totvs_sales_summary_by_period Resumo de vendas por filial, status ou dia
totvs_top_customers Top N clientes por faturamento
totvs_low_stock_alert Produtos abaixo de um saldo mínimo
totvs_orders_by_status_summary Distribuição de pedidos por status
totvs_get_usage_insights Padrões de uso, sequências e sugestões

Contexto

Tool Descrição
totvs_get_context Filiais, operações, priceTypes, costTypes
totvs_get_instructions Guia de uso completo do servidor

Nota de conexão: totvs_get_context pode retornar cache do startup. Ele ajuda a descobrir defaults da empresa, mas não deve ser usado como única prova de autenticação em tempo real. Se ele funcionar e outra consulta retornar InvalidUserPassword, reinicie o processo MCP e confira as variáveis TOTVS_USERNAME/TOTVS_PASSWORD no mcp.json ou ambiente do cliente. Quando o cliente estiver herdando env antigo, configure TOTVS_ENV_FILE com o caminho absoluto do .env correto e TOTVS_DOTENV_OVERRIDE=true.


Desenvolvimento e testes

git clone https://github.com/fabianoomura/MCP-Server-Totvs-Moda.git
cd MCP-Server-Totvs-Moda
pip install -e ".[dev]"

# Rodar testes
PYTHONPATH=. pytest tests/ -v

204 testes cobrindo contratos de endpoints, agregadores, defaults, campos, carregamento de ambiente e cliente HTTP.


Estrutura do projeto

totvs-moda-mcp/
├── server.py              # Entry point MCP, registro de tools e routing
├── totvs_client.py        # Cliente HTTP com OAuth2, retry e upsert
├── context_cache.py       # Cache de referência carregado no startup
├── response_cache.py      # Cache TTL para respostas da API
├── usage_tracker.py       # Rastreamento de uso (JSONL local)
├── usage_analyzer.py      # Análise de padrões e sugestões
├── decode_xml.py          # Decodificador de XML NF-e (base64)
├── tools/
│   ├── sales_order.py     # Pedidos de venda
│   ├── product.py         # Produtos, preços, custos, saldos
│   ├── product_engineering.py  # Ficha de consumo
│   ├── person.py          # Clientes PF/PJ
│   ├── accounts_receivable.py  # Contas a receber
│   ├── account_payable.py # Contas a pagar
│   ├── fiscal.py          # NF-e, XML, DANFE
│   ├── purchase_order.py  # Pedidos de compra
│   ├── other_modules.py   # Produção, management, localização
│   ├── logistics.py       # Pacotes, expedição
│   ├── seller.py          # Vendedores, representantes
│   ├── voucher.py         # Vouchers
│   ├── data_package.py    # Pacotes de dados
│   ├── image.py           # Imagens de produto/pessoa
│   ├── aggregators.py     # Painéis rápidos e consultas compostas
│   ├── analytics.py       # Gateway opcional de Analytics/painéis
│   ├── convenience.py     # Helpers
│   ├── _defaults.py       # Injeção automática de branchCode
│   ├── _fields.py         # Filtro de campos na resposta
│   └── _value_types.py    # Resolução de tipos de valor
├── tests/                 # 204 testes (pytest + respx)
└── docs/
    ├── API_ENDPOINT_MATRIX.md  # Matriz derivada de endpoints
    ├── AGENT_ENDPOINT_HARNESS.md
    └── PATTERNS.md        # Padrões obrigatórios de código

Limitações

  • Limitado ao que a API V2 do TOTVS Moda expõe publicamente
  • Não cobre todas as funcionalidades do ERP — apenas o que a API disponibiliza
  • Projeto em evolução — novos módulos adicionados conforme necessidade
  • Os exports Swagger brutos e notas estratégicas ficam fora do repositório público; o repo publica apenas código, documentação técnica e matriz derivada.

Contribuição

  1. Abra uma issue descrevendo o problema ou feature
  2. Fork + branch + PR com testes
  3. Padrão: cada tool nova deve ter ao menos 1 teste

Licença

MIT


Contato

LinkedIn: Fabiano Omura

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

totvs_moda_mcp-3.7.5.tar.gz (139.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

totvs_moda_mcp-3.7.5-py3-none-any.whl (179.4 kB view details)

Uploaded Python 3

File details

Details for the file totvs_moda_mcp-3.7.5.tar.gz.

File metadata

  • Download URL: totvs_moda_mcp-3.7.5.tar.gz
  • Upload date:
  • Size: 139.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for totvs_moda_mcp-3.7.5.tar.gz
Algorithm Hash digest
SHA256 b00190d769d41413ea58632aca4ad7a3a3d99f9d4c12df0bb8e32d689a3f652c
MD5 87b5baeddb396abe1b095133e8e96c7e
BLAKE2b-256 98d4b3478897765db6d90d0998ea52efb45195fc62195ee180518970d7619667

See more details on using hashes here.

File details

Details for the file totvs_moda_mcp-3.7.5-py3-none-any.whl.

File metadata

  • Download URL: totvs_moda_mcp-3.7.5-py3-none-any.whl
  • Upload date:
  • Size: 179.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for totvs_moda_mcp-3.7.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e5ef9f3b45ff4dee89e6a840647ce90e0c9315e526f28f36e37160e48cb9a71c
MD5 38a80e74e51a10c7342ed1c290aa6365
BLAKE2b-256 a5ab793778db5c6f8f05c1957ad2f6a8e7b0ecaea74006a0deeb69a6c6c1ec20

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page