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
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.
- ChatGPT → Configurações → Conectores → Adicionar conector personalizado
- URL:
https://nordic-data-mcp-production.up.railway.app/mcp - 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:
- Claude.ai → Configurações → Conectores → Adicionar conector personalizado
- URL:
https://nordic-data-mcp-production.up.railway.app/mcp - Pronto.
Ferramentas disponíveis
| Ferramenta | O que faz |
|---|---|
lookup_company | Dados básicos de empresas de registros oficiais (CVR, Brønnøysund, Bolagsverket, Companies House, INSEE, etc.) |
validate_vat | Valida um número de IVA contra VIES (UE) ou HMRC (GB) |
screen_sanctions | Verificação em lote de até 1000 nomes contra listas ONU/UE/OFAC/PEP (OpenSanctions, 768K+ entradas) |
kyb_full | Relatório Master Know-Your-Business — identidade, pessoas, financeiro, LEI, IVA, sanções, mídia adversa, pontuação de risco |
autocomplete_address | Autocompletar endereços via DAWA (DK), Kartverket (NO), BAN (FR), MML (FI), Nominatim (outros) |
lookup_lei | Consulta GLEIF Legal Entity Identifier — direta, reversa e relações pai/filhos |
company_enriched | Dados da empresa + endereço geocodificado + estatísticas do setor + Wikidata (site, funcionários, CEO, ticker, logo) |
fr_history | Linha do tempo do histórico de empresas francesas (nome, atividade, status, mudanças de forma jurídica) dos dados bitemporais INSEE Sirene |
list_endpoints | Descoberta: lista todos os endpoints de dados somente leitura na API subjacente (230+), com filtro opcional por palavra-chave |
get_endpoint_schema | Descoberta: esquema completo de parâmetros + resposta para um endpoint, antes de chamá-lo |
call_endpoint | Descoberta: 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?" → chamavalidate_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ís | Tipo de ID | Formato |
|---|---|---|
| DK | CVR | 8 dígitos |
| NO | Organisasjonsnummer | 9 dígitos |
| SE | Organisationsnummer | 10 dígitos (com ou sem hífen) |
| FI | Y-tunnus | NNNNNNN-D (7 dígitos + dígito verificador) |
| IE | Número CRO | 1–7 dígitos |
| UK | Companies House | 8 caracteres (dígitos, ou prefixo como SC, NI, OC) |
| FR | SIREN | 9 dígitos |
| DE | LEI ou HRB | LEI = 20 alfanuméricos; HRB = prefixo + dígitos |
| CZ | IČO | 8 dígitos |
| PL | NIP / REGON / KRS | NIP=10, REGON=9/14, KRS=10 |
| LV | Reģistrācijas nr. | 11 dígitos |
| EE | Registrikood | 8 dígitos |
| NL | KvK-nummer | 8 dígitos |
| BE | BCE/KBO | 10 dígitos |
| LU | RCSL | B + 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ável | Obrigatória | Descrição |
|---|---|---|
NORDIC_API_KEY | sim | Sua 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 naNORDIC_API_KEYdo próprio servidor (freemium / descoberta). Limitado por IP.ALL /mcp/auth— endpoint MCP autenticado. ExigeAuthorization: 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/authe forneça sua chave comoAuthorization: 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
…/mcppú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 clarooauth_not_supported(não um fluxo de login). - Clientes locais: prefira o pacote stdio —
npx -y nordic-data-mcpcomNORDIC_API_KEYdefinido (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:
- Novo Projeto → Implantar do repositório GitHub → selecione
Mnymann/nordic-data-mcp - Defina Root Directory como
nordic-data-mcp - Adicione a variável de ambiente
NORDIC_API_KEY - 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
/mcpcomo defesa em profundidade (ajustável viaPUBLIC_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