Skip to content

Arquitetura

O mcp-portugal é um servidor MCP fino por cima de um conjunto de funções puras. O cliente de IA fala com ele por stdio usando o Model Context Protocol; o servidor valida os inputs com zod e delega em código de biblioteca determinístico.

sequenceDiagram
  participant C as cliente IA
  participant S as mcp-portugal (stdio)
  participant L as lib (validators / holidays)
  C->>S: tools/list
  S-->>C: validate_nif, validate_iban, list_holidays, …
  C->>S: tools/call validate_nif {nif}
  S->>S: zod valida os argumentos
  S->>L: validateNif(nif)
  L-->>S: { valid, entityType }
  S-->>C: resultado em texto JSON

Mapa de módulos

Módulo Responsabilidade
index.ts Servidor MCP: regista as tools, liga o transporte stdio
lib/validators.ts Verificações de NIF / IBAN / código postal (puras)
lib/holidays.ts Feriados nacionais incl. cálculo da Páscoa (puro)

Princípios de design

  • Núcleo puro, transporte fino — toda a lógica é testável sem MCP; o servidor é um wrapper.
  • Determinístico & offline — sem rede, sem chaves; os feriados são calculados, não obtidos.
  • Inputs validados — schemas zod guardam cada tool antes de a lógica correr.
  • Testado ponta a ponta — testes unitários da lib, mais um teste de integração stdio que aciona o servidor real com um cliente MCP.