Nordic Data MCP

Dados de empresa, KYB, IVA, sanções, LEI e endereço para 15 países da UE (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Nível gratuito com 100 consultas/dia em addonnordic.com.

Documentação

Servidor Nordic Data MCP

npm version License: MIT

Um servidor Model Context Protocol que dá a agentes de IA (Claude, Cursor, Claude Code, ChatGPT, Copilot, etc.) acesso direto a dados empresariais oficiais europeus em 15 países da UE.

Consulte empresas, valide números de IVA, execute relatórios KYB, verifique listas de sanções, complete endereços e resolva propriedade LEI — tudo de dentro do seu assistente de IA.

DK · NO · SE · FI · IE · UK · FR · DE · CZ · PL · LV · EE · NL · BE · LU

NL e DE exigem assinatura Starter+ (chaves de API do plano gratuito recebem HTTP 402 upgrade_required). Em planos pagos, chamadas para NL custam 5x unidades de cota e para DE custam 3x; todos os outros países custam 1x.


Início rápido

1. Obtenha uma chave de API

Cadastre-se em addonnordic.com e pegue sua NORDIC_API_KEY. Plano gratuito disponível.

2. Adicione ao Claude Desktop

Edite ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%/Claude/claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "nordic-data": {
      "command": "npx",
      "args": ["-y", "nordic-data-mcp"],
      "env": {
        "NORDIC_API_KEY": "YOUR_KEY_HERE"
      }
    }
  }
}

Reinicie o Claude Desktop. Você deve ver "nordic-data" aparecer no menu de ferramentas.

3. Adicione ao Cursor

Nas configurações do Cursor → MCP → Adicionar novo servidor, ou edite ~/.cursor/mcp.json:

{
  "mcpServers": {
    "nordic-data": {
      "command": "npx",
      "args": ["-y", "nordic-data-mcp"],
      "env": {
        "NORDIC_API_KEY": "YOUR_KEY_HERE"
      }
    }
  }
}

4. Adicione ao Claude Code

claude mcp add nordic-data --env NORDIC_API_KEY=YOUR_KEY_HERE -- npx -y nordic-data-mcp

5. Adicione ao ChatGPT (Pro, Business ou Enterprise)

O ChatGPT suporta servidores MCP remotos como conectores personalizados. Nenhuma chave de API é necessária da sua parte — o servidor hospedado gerencia a autenticação upstream.

  1. ChatGPT → ConfiguraçõesConectoresAdicionar conector personalizado
  2. URL: https://nordic-data-mcp-production.up.railway.app/mcp
  3. Pronto — todas as 11 ferramentas ficam disponíveis imediatamente.

Conectores personalizados exigem um plano ChatGPT Pro, Business, Team ou Enterprise.

6. Adicione ao Claude.ai (web)

Mesmo endpoint hospedado, sem instalação local:

  1. Claude.ai → ConfiguraçõesConectoresAdicionar conector personalizado
  2. URL: https://nordic-data-mcp-production.up.railway.app/mcp
  3. Pronto.

Ferramentas disponíveis

FerramentaO que faz
lookup_companyDados básicos de empresas de registros oficiais (CVR, Brønnøysund, Bolagsverket, Companies House, INSEE, etc.)
validate_vatValida um número de IVA contra VIES (UE) ou HMRC (GB)
screen_sanctionsVerificação em lote de até 1000 nomes contra listas ONU/UE/OFAC/PEP (OpenSanctions, 768K+ entradas)
kyb_fullRelatório Master Know-Your-Business — identidade, pessoas, financeiro, LEI, IVA, sanções, mídia adversa, pontuação de risco
autocomplete_addressAutocompletar endereços via DAWA (DK), Kartverket (NO), BAN (FR), MML (FI), Nominatim (outros)
lookup_leiConsulta GLEIF Legal Entity Identifier — direta, reversa e relações pai/filhos
company_enrichedDados da empresa + endereço geocodificado + estatísticas do setor + Wikidata (site, funcionários, CEO, ticker, logo)
fr_historyLinha do tempo do histórico de empresas francesas (nome, atividade, status, mudanças de forma jurídica) dos dados bitemporais INSEE Sirene
list_endpointsDescoberta: lista todos os endpoints de dados somente leitura na API subjacente (230+), com filtro opcional por palavra-chave
get_endpoint_schemaDescoberta: esquema completo de parâmetros + resposta para um endpoint, antes de chamá-lo
call_endpointDescoberta: executa uma requisição somente leitura (GET/HEAD, além de três consultas de triagem POST na lista de permissões) contra qualquer endpoint descoberto

Exemplos de prompts para agentes

"Consulte CVR 61056416 na Dinamarca" → chama lookup_company { country: "dk", id: "61056416" } → Carlsberg A/S

"Execute um relatório KYB completo na Equinor (NO 923609016)" → chama kyb_full { country: "no", id: "923609016" }

"LU26375245 é um número de IVA válido?" → chama validate_vat { country: "LU", vat_number: "26375245" }

"Verifique estes nomes contra sanções: Vladimir Putin, Acme Corp, John Smith" → chama screen_sanctions { names: [...] }

"Encontre o LEI da Tesco UK (00445790) e inclua matriz e subsidiárias" → chama lookup_lei { mode: "reverse", country: "uk", id: "00445790" }


Referência de países / formatos de ID

PaísTipo de IDFormato
DKCVR8 dígitos
NOOrganisasjonsnummer9 dígitos
SEOrganisationsnummer10 dígitos (com ou sem hífen)
FIY-tunnusNNNNNNN-D (7 dígitos + dígito verificador)
IENúmero CRO1–7 dígitos
UKCompanies House8 caracteres (dígitos, ou prefixo como SC, NI, OC)
FRSIREN9 dígitos
DELEI ou HRBLEI = 20 alfanuméricos; HRB = prefixo + dígitos
CZIČO8 dígitos
PLNIP / REGON / KRSNIP=10, REGON=9/14, KRS=10
LVReģistrācijas nr.11 dígitos
EERegistrikood8 dígitos
NLKvK-nummer8 dígitos
BEBCE/KBO10 dígitos
LURCSLB + dígitos

Para validate_vat, os códigos de país são maiúsculos e cobrem a UE ampliada mais GB (use GB, não UK — HMRC exige GB).


Configuração

A única variável de ambiente que você precisa definir é:

VariávelObrigatóriaDescrição
NORDIC_API_KEYsimSua chave de API de addonnordic.com

Só isso. O servidor MCP conecta-se à API hospedada Nordic Data por você.


Auto-hospedagem (transporte HTTP remoto)

Para hospedagem MCP remota (ex.: Anthropic Connectors, Smithery, clientes baseados em web), implante o transporte HTTP Streamable incluído:

npm install
npm run build
NORDIC_API_KEY=sk_... npm run start:http   # listens on :$PORT (default 3000)

Endpoints:

  • GET /healthz — verificação de saúde (retorna versão + status)
  • ALL /mcp — endpoint MCP público. Nenhuma chave necessária; todas as chamadas upstream são cobradas na NORDIC_API_KEY do próprio servidor (freemium / descoberta). Limitado por IP.
  • ALL /mcp/auth — endpoint MCP autenticado. Exige Authorization: Bearer ndk_... em cada requisição; cada chamada é cobrada na chave + cota do próprio cliente.

Ambos são baseados em sessão via cabeçalho Mcp-Session-Id.

Conectando um cliente remoto

Este servidor usa autenticação estática por chave de API, não OAuth. Como você se conecta depende do seu cliente:

  • Clientes com suporte a cabeçalhos (Claude Code, Cursor, Smithery, conectores personalizados Claude.ai / ChatGPT): aponte-os para …/mcp/auth e forneça sua chave como Authorization: Bearer ndk_.... Cada requisição é cobrada no seu próprio tenant + cota.
  • Clientes genéricos / de descoberta automática que só conhecem "URL + OAuth": aponte-os para o …/mcp público (sem chave). Caso contrário, esses clientes tentam OAuth Dynamic Client Registration (POST /register) e falham — este servidor não tem endpoints OAuth por design e responde com um erro JSON claro oauth_not_supported (não um fluxo de login).
  • Clientes locais: prefira o pacote stdio — npx -y nordic-data-mcp com NORDIC_API_KEY definido (veja Início rápido acima).

OAuth 2.1 completo (para que clientes externos arbitrários possam se auto-cadastrar com sua própria chave) é um item planejado para a Fase 2, ainda não implementado.

Um railway.toml está incluído para implantação com um clique no Railway:

  1. Novo Projeto → Implantar do repositório GitHub → selecione Mnymann/nordic-data-mcp
  2. Defina Root Directory como nordic-data-mcp
  3. Adicione a variável de ambiente NORDIC_API_KEY
  4. O Railway detecta automaticamente a configuração, compila e expõe uma URL HTTPS pública

Notas de design

  • Adaptador fino. Sem lógica de negócio, sem cache, sem transformações. Cada ferramenta mapeia 1:1 para um endpoint da API Nordic Data.
  • Sem PII em logs. Corpos de requisição e resposta nunca são registrados.
  • Chave de API obrigatória. O processo se recusa a iniciar sem NORDIC_API_KEY.
  • Limitação de taxa. O backend aplica cotas por chave; o transporte HTTP adicionalmente aplica um limite por IP no endpoint público /mcp como defesa em profundidade (ajustável via PUBLIC_RATE_LIMIT / PUBLIC_RATE_WINDOW_MS). Cache é tratado upstream.
  • Entradas são validadas com zod antes de qualquer chamada HTTP.

Contribuindo

Issues e PRs são bem-vindos em github.com/Mnymann/nordic-data-mcp.

Por favor, não inclua chaves de API, corpos de requisição ou payloads de resposta em relatórios de bugs.


Aviso legal

Nordic Data retorna suporte informativo à decisão agregado de fontes oficiais e públicas. Não é aconselhamento jurídico, de conformidade, financeiro ou profissional, nem uma determinação definitiva. Relatórios KYB, correspondências de sanções/PEP, ocorrências de mídia adversa e pontuações de risco são sinais para revisão, não veredictos — verifique de forma independente e aplique seu próprio julgamento profissional antes de agir. O uso do serviço está sujeito aos Termos da AddonNordic.


Licença

MIT © AddonNordic ApS