p3-edi-mcp
README.md
# p3-edi-mcp
Servidor MCP de diagnóstico (somente leitura) para os dois sistemas EDI:
1. **P3-EDI-Processor** — ciclo de vida de pedidos DSV (850 outbound, 855/856 inbound, fulfillment Shopify).
2. **edi-shopify-orchestration** — consumo de arquivos 846 e sincronização de inventário em 65+ lojas Shopify.
Dá ao time (via Claude, como custom connector) a capacidade de responder tickets sobre os dois
sistemas sem depender de acesso direto ao código/banco. Nenhuma escrita em banco ou no Shopify —
queries somente `SELECT`, GraphQL somente `query`.
## Tools
| Tool | Sistema | O que faz |
|---|---|---|
| `diagnose_order` | P3 | Timeline completa do ciclo EDI de um pedido com checks, evidências e causas prováveis |
| `check_dsv_eligibility` | P3 | Reproduz (read-only) a decisão de elegibilidade DSV de um pedido/item e explica cada gate |
| `get_raw_edi_files` | P3 | Retorna o conteúdo bruto dos arquivos 855/856 de um pedido |
| `diagnose_inventory` | Orchestration | Por que o SKU X está com estoque errado na loja Y |
| `get_846_history` | Orchestration | Histórico de aparições de um SKU/arquivo nas runs 846 |
| `list_recent_failures` | Ambos | Falhas recentes nos dois sistemas |
Resources: `runbook://pedidos` e `runbook://inventario` — o conhecimento tácito de diagnóstico,
também resumido nas `instructions` do servidor.
## Rodando localmente
```bash
npm install
cp .env.example .env # preencher as variáveis
npm run dev
```
Healthcheck: `GET /health`. Endpoint MCP (Streamable HTTP, stateless): `POST /mcp` com
`Authorization: Bearer $MCP_AUTH_TOKEN`.
## Env vars
```
MCP_AUTH_TOKEN= # bearer token exigido em POST /mcp
PORT=3000
P3_DATABASE_URL= # Postgres do P3-EDI-Processor (único banco de produção)
ORCH_DATABASE_URL= # Postgres do edi-shopify-orchestration
SHOPIFY_API_VERSION=2026-04
```
Autenticação Shopify: sem tokens novos a provisionar. O MCP lê o token offline por loja direto
da tabela `Session` do banco do P3 (o app Remix já persiste isso via OAuth). Sem sessão válida
para uma loja, as tools degradam (retornam os facts de banco e listam em `warnings` o que
dependeria do Shopify) em vez de falhar.
## Deploy (Railway)
Ver instruções passadas pelo assistente na sessão de setup — resumo: criar serviço a partir
deste repo no mesmo projeto Railway dos dois sistemas (para usar internal URLs dos Postgres),
configurar as env vars acima, expor a URL pública e apontar como custom connector no Claude.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing