eurodns-mcp

Um servidor Model Context Protocol para a API de Usuário da EuroDNS — domínios, zonas DNS, contatos, assinaturas, SSL, faturas e pedidos.

Documentação

eurodns-mcp

Gerencie seus domínios, zonas de DNS e assinaturas apenas pedindo.

Um servidor Model Context Protocol para a API de Usuário da EuroDNS — domínios, zonas de DNS, contatos, assinaturas, SSL, faturas e pedidos.

CI License: MIT Node MCP npm Image MCP Badge eurodns-mcp MCP server

Documentação · Ferramentas · Proteções · Implantação

Este é um projeto open-source independente. Ele não é afiliado, endossado ou suportado pela EuroDNS. "EuroDNS" é usado apenas para identificar a API com a qual este servidor se comunica.

Escrito por um engenheiro profissional com assistência de IA. Cada linha foi revisada antes de ser commitada, e a responsabilidade pelo que ela faz é humana.


O que você obtém

  • Cobertura completa da API em 36 ferramentas — cada uma das 79 operações da API, com cada par de listar/obter, par de criar/atualizar perfil, alternância liga/desliga e leitura por produto agrupados em uma ferramenta; 55 ferramentas uma vez que cobrança e operações irreversíveis são habilitadas.
  • Cada ferramenta e argumento descrito para o modelo que os lê: o que faz e retorna, quando preferir sua vizinha e quando não, o que faz que as anotações não podem dizer, de onde vem um id. Um teste mantém toda a superfície sob controle, e um fluxo de trabalho executa o próprio linter dos registros sobre ela.
  • Três ferramentas de fluxo de trabalho de DNS que tornam as edições de registros seguras, porque salvar uma zona a substitui.
  • Proteções para que uma implantação possa recusar operações que gastam dinheiro ou destroem coisas.
  • Quatro prompts para os fluxos de trabalho que valem a pena nomear, e dois recursos: o portfólio, navegável, e um que diz o que esta implantação permite — incluindo por que uma ferramenta que você esperava não está na lista.
  • Dois transportesstdio para um cliente local, HTTP transmissível para uma implantação compartilhada.
  • Ambas as eras de protocolo em um único endpoint — fala a revisão de 2026-07-28 nativamente e ainda atende clientes da era 2025, que são a maioria hoje.
  • OAuth 2.1 ou um token compartilhado em HTTP, com uma linha de auditoria por chamada.
  • Histórico consultável — pergunte ao servidor o que foi feito, e por quem.
  • 1Password Connect como fonte opcional para qualquer segredo que ele lê.

Como funciona

flowchart TD
    client(["MCP client"])

    client -->|stdio| registry
    client -->|streamable HTTP| origin

    subgraph http ["HTTP transport only"]
        origin["Origin check"] --> bearer["Bearer token<br/>OAuth 2.1 or shared secret"]
        bearer --> scopes["Scope gate"]
    end

    scopes --> registry["Tool registry"]
    registry --> guard{"Guardrails<br/>read-only, billing, destructive"}
    guard -->|refused| deny["Error naming the setting to change"]
    guard -->|allowed| api[("EuroDNS User API")]

    op[("1Password Connect")] -.->|"op:// refs, at startup"| creds["Credentials"]
    creds -.-> api

    registry -.-> log[("Audit log")]
    guard -.-> log
    log -.->|eurodns_audit_query| client

Duas coisas valem a pena ler nesse diagrama. A autorização tem dois portões independentes — o que a implantação permite em geral, depois o que os escopos do chamador permitem dentro disso. E o log de auditoria é alimentado por todos os caminhos, incluindo recusas, porque a API upstream autentica cada chamador com uma chave compartilhada e não pode atribuir nada por conta própria.

Requisitos

  • Node.js 22 ou mais recente. O Node 20 atingiu o fim da vida útil em 30 de abril de 2026 e não recebe patches de segurança; a imagem do contêiner executa o Node 24, o LTS ativo.
  • Credenciais da API EuroDNS: um ID de Aplicação e uma chave de API, criados no painel da EuroDNS em acesso à API.
  • O IP público da máquina que executa este servidor deve estar na lista de permissões no mesmo painel. Um 403 da API é quase sempre uma entrada ausente na lista de permissões, não credenciais inválidas.

Início rápido

Para um cliente que inicia o servidor por conta própria, como o Claude Desktop:

{
  "mcpServers": {
    "eurodns": {
      "command": "npx",
      "args": ["-y", "@jigsawfr/eurodns-mcp"],
      "env": {
        "EURODNS_APP_ID": "your-application-id",
        "EURODNS_API_KEY": "your-api-key"
      }
    }
  }
}

Para testar em um terminal primeiro:

npx -y @jigsawfr/eurodns-mcp

Sem credenciais, ele ainda inicia, lista cada ferramenta, prompt e recurso, e recusa cada chamada com uma mensagem nomeando as duas variáveis — então um marketplace, ou npx @modelcontextprotocol/inspector, pode mostrar a superfície antes de você ter uma chave.

O pacote inclui dois comandos: eurodns-mcp para stdio, que é o acima, e eurodns-mcp-http para o transporte HTTP — acessível como npx -p @jigsawfr/eurodns-mcp eurodns-mcp-http.

Para uma implantação compartilhada em HTTP, use o contêiner — veja Implantação.

Tente não colocar a chave de API no arquivo de configuração do cliente: Segredos mostra duas maneiras de contornar isso.

O que você pode pedir

PerguntaFerramenta que ele usa
"Quais registros DNS example.com tem?"eurodns_dns_get_zone
"Adicione um registro TXT _acme-challenge em example.com"eurodns_dns_upsert_record
"O que mudaria se eu apontasse www para 203.0.113.10?"eurodns_dns_diff_zone
"example.lu está disponível?"eurodns_domain_check_availability
"Quais dos meus domínios têm DNSSEC habilitado?"eurodns_domain_get
"Quando este certificado SSL expira?"eurodns_subscription_get
"Qual é meu saldo pré-pago?"eurodns_account_get_prepaid_balance
"O que eu mudei na semana passada?"eurodns_audit_query
"O que foi recusado, e por quê?"eurodns_audit_query

Documentação

PáginaO que cobre
FerramentasTodas as 55 ferramentas, as operações que agrupam, os prompts e os recursos
ProteçõesClasses de risco, o que uma implantação pode proibir, confirmação antes de uma chamada
ConfiguraçãoCada variável de ambiente, com seu padrão
Transporte HTTPAtender vários clientes, tokens estáticos, OAuth 2.1 e escopos
SegredosManter a chave de API fora da configuração do cliente, e 1Password Connect
Log de auditoriaO que é registrado, a cadeia de hash, perguntar ao servidor o que aconteceu
Entra IDOAuth passo a passo com Microsoft Entra ID, e suas armadilhas
ImplantaçãoContêineres, Fly.io, Render, Railway, e envio do log para um SIEM
ProtocoloQuais revisões do MCP são faladas, e como ambas são atendidas em um endpoint
DesenvolvimentoCompilação, testes, a superfície de ferramentas gerada, e como os lançamentos funcionam

Implantação

cp .env.example .env    # credentials, plus a token: openssl rand -hex 32
docker compose up -d
curl localhost:3000/healthz

Imagens publicadas estão em ghcr.io/jigsawfr/eurodns-mcp, construídas para linux/amd64 e linux/arm64 com uma atestação de proveniência de build.

Duas coisas decidem onde isso roda, e nenhuma é o argumento usual de latência ou preço:

  • A API EuroDNS filtra por IP de origem, então o host precisa te dar um endereço de saída estável — idealmente dedicado. Um IP compartilhado com outros locatários mantém o mecanismo e perde a proteção.
  • A ferramenta de consulta de histórico lê um arquivo, então o host precisa de um disco persistente. Isso descarta plataformas com sistema de arquivos efêmero.

Em ambos os pontos, o Fly.io sai na frente, a alguns dólares por mês para um IPv4 dedicado contra aproximadamente $100 em outros lugares. deploy/ tem o detalhe por plataforma, fly.toml e render.yaml prontos, e a comparação completa.

Uma configuração pega todo mundo uma vez: dentro de um contêiner, o servidor escuta em 0.0.0.0, e recusa iniciar em um endereço não-loopback sem autenticação. Defina EURODNS_MCP_AUTH para token ou oauth.

Qual dos dois

A escolha não é sobre o quão seguro você quer ser — ambos são — mas sobre se os chamadores precisam de identidades separadas, e tem um custo que você deve ver chegando.

token é um segredo compartilhado em um cabeçalho. Funciona em um minuto, não precisa de nada além do servidor, e é a resposta certa para uma implantação usada por uma pessoa. O que você abre mão é atribuição: o log de auditoria registra um rótulo, então pode te dizer que uma chamada destrutiva aconteceu, mas não quem a fez.

oauth dá a cada pessoa sua própria credencial, permite que os cinco escopos decidam quem pode fazer o quê, e coloca uma identidade real no log de auditoria. Os escopos decidem o que um chamador pode fazer; seu provedor de identidade decide quem recebe um token, e a maioria padroniza para todos no diretório — então essa configuração faz parte da configuração, não um pensamento posterior. Seu preço de entrada é um hostname em um domínio que seu provedor de identidade aceitará — com Microsoft Entra ID, isso significa um domínio verificado em seu locatário, porque a URL pública do servidor tem que servir como URI do ID do Aplicativo. Um hostname de plataforma como *.fly.dev não pode ser verificado, então o domínio não é opcional lá. Entra ID trabalha tudo, incluindo os erros que produz quando os três nomes envolvidos saem de sincronia, e como ir um passo além e dar a cada pessoa um conjunto diferente de escopos em vez do mesmo.

Começar em token e mudar para oauth depois não custa nada além de um reinício: sem migração de dados, sem mudança em como as ferramentas se comportam.

Contribuindo

CONTRIBUTING.md tem o fluxo de trabalho, e docs/development.md os comandos. Títulos de pull requests são verificados contra Conventional Commits, porque é disso que o changelog é gerado.

Licença

MIT.

"EuroDNS" é uma marca registrada da EuroDNS S.A. e não é coberta por essa licença.