Domain Name OSIR MCP

Servidor MCP de Nomes de Domínio que permite pesquisar, registrar, renovar, transferir e gerenciar domínios, DNS, VPS, e-mail e sites.

Documentação

Plataforma OSIR Agent

Servidores de integração de IA para o registrador de domínios OSIR. Conecte Claude, ChatGPT ou qualquer assistente de IA a operações reais de domínio, DNS, VPS, cobrança e conta — seja como ferramentas individuais (MCP) ou como agentes especialistas em resolução de tarefas (A2A).

Dois servidores, uma biblioteca de cliente de backend compartilhada:

ServidorPortaProtocoloO que oferece a uma IA
Servidor MCP8081Model Context Protocol (SSE + Streamable HTTP)103 ferramentas de granularidade fina (checkDomainAvailability, registerDomain, createDnsRecord, createMailbox, osirSitePublish, …) + 11 prompts guiados
Servidor A2A8082Google Agent-to-Agent (JSON-RPC 2.0)9 agentes especialistas com 89 habilidades e um orquestrador para fluxos de trabalho de várias etapas

Use MCP quando um assistente deve chamar operações individuais. Use A2A quando quiser entregar uma tarefa completa ("configure example.com com DNS e verifique meu saldo") a agentes que coordenam o trabalho.


O que é MCP?

MCP (Model Context Protocol) é um padrão aberto que conecta assistentes de IA a ferramentas e dados externos. Um servidor MCP publica um conjunto de ferramentas chamáveis; qualquer cliente MCP — Claude Desktop, Cursor, Copilot ou um agente personalizado — pode descobri-las e invocá-las. O OSIR implementa um servidor MCP projetado especificamente para gerenciamento de domínios e infraestrutura, o que o torna um registrador nativo de IA, em vez de um tradicional com uma caixa de chat acoplada.

Conecte o OSIR ao Claude

No Claude, abra Configurações → Conectores → Adicionar conector personalizado e escolha uma das duas configurações:

Opção A: Sem login (recomendada)Opção B: OAuth
URL do servidorhttps://be.osir.com/mcp/httphttps://be.osir.com/mcp/oauth
AutenticaçãoSem loginEntrar agora
Cliente OAuth—Use seu próprio cliente OAuth, Client ID mcp-client, segredo em branco
LoginNo chat, uma conversa por vez (abaixo)Login no navegador ao adicionar o conector; o conector permanece conectado

Para a Opção B, não escolha "Usar a identidade publicada do Claude" nem "Registrar automaticamente". O OSIR não suporta nenhuma das duas.

Opção A: o login acontece dentro da conversa. Na primeira vez que seu assistente precisar de uma ferramenta autenticada, ele inicia um login de dispositivo: você recebe um link para auth.osir.com e um código curto, aprova no navegador e o assistente continua com uma sessão limitada àquela conversa. As sessões são deliberadamente de curta duração (expiram após ~30 minutos de inatividade, 8 horas no máximo) e terminam instantaneamente quando você diz "faça logout" — portanto, um chat conectado nunca mantém acesso permanente aos seus domínios, servidores e cobrança.

A mesma URL funciona em qualquer cliente MCP que suporte um servidor remoto (streamable HTTP) e possa conduzir o login de dispositivo no chat.

Nota sobre auto-hospedagem: /mcp/oauth sempre exige OAuth: ele retorna 401 com um desafio RFC 9728. O /mcp/http somente com URL precisa de MCP_OAUTH_CHALLENGE_ENABLED=false. Se você deixar isso no padrão (true), todo caminho MCP exige OAuth. Os tempos de vida das sessões são ajustáveis via MCP_SESSION_IDLE_MINUTES e MCP_SESSION_MAX_HOURS.

O que seu assistente pode fazer

CapacidadeExemplo de solicitação
Pesquisar disponibilidade"O coolstartup.io está disponível e quanto custa?"
Registrar um domínio"Registre por dois anos com privacidade WHOIS."
Gerenciar DNS"Aponte para 192.0.2.10 e adicione meus registros de e-mail."
Renovar e transferir"Renove tudo que expira nos próximos 30 dias."
Provisionar um VPS"Crie um servidor com 2 vCPUs em Frankfurt rodando Ubuntu."
Hospedar e-mail"Ative o e-mail em example.com e crie info@ com uma caixa de 10 GB."

Executando os servidores você mesmo

Quer hospedar sua própria instância ou desenvolver com o código? Requer Java 21; o Gradle é incluído via wrapper.

# Run the MCP server (port 8081)
./gradlew :mcp-server:quarkusDev

# Run the A2A server (port 8082)
./gradlew :a2a-server:quarkusDev

Copie .env.example para .env e ajuste se estiver apontando para seu próprio backend/KeyCloak/Ollama. Tudo usa como padrão os endpoints públicos do OSIR, então os servidores funcionam imediatamente.

Conecte um cliente MCP (Claude Desktop / Claude Code)

Adicione à configuração MCP do seu cliente (ex.: claude_desktop_config.json):

{
  "mcpServers": {
    "osir": { "url": "http://localhost:8081/mcp/sse" }
  }
}

Reinicie o cliente e as ferramentas do OSIR aparecem. Depois é só perguntar:

"O pizzashqip.al está disponível? Se não, sugira alternativas." "Liste todos os meus domínios e mostre quais expiram nos próximos 30 dias." "Adicione um registro A apontando example.al para 203.0.113.10 e um CNAME para www."

A maioria das operações exige autenticação — peça ao assistente para "fazer login no OSIR usando o fluxo de dispositivo" e ele o guiará pelo OAuth baseado em navegador (KeyCloak, RFC 8628).

Chame o servidor A2A

# Discover the agents
curl http://localhost:8082/.well-known/agents | jq '.[].name'

# Send a task (the platform routes it to the right specialist)
curl -X POST http://localhost:8082/a2a \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "jsonrpc": "2.0", "id": "1", "method": "tasks/send",
    "params": { "message": { "role": "user",
      "parts": [{"type": "text", "text": "Check if example.com is available"}] } }
  }'

As tarefas são transmitidas via POST /a2a/stream (SSE), suportam fluxos de múltiplas interações input-required e o orquestrador decompõe solicitações complexas entre agentes (máx. 15 etapas).


O que você pode fazer

Domínios — disponibilidade, registro, renovação, transferência, bloqueio/desbloqueio, renovação automática, privacidade WHOIS, servidores de nomes, sugestões de nomes com IA. DNS — listar/criar/atualizar/excluir registros. VPS — navegar por pacotes e locais, pedir, gerenciar, login no painel. Cobrança — saldo, faturas, pagamentos, prévias de taxas, preços de domínios. Contatos, Transferências, Hosts, Logs de auditoria, Conta perfil e resumo.

Catálogo completo de ferramentas/habilidades, exemplos de conversas e tutoriais de ponta a ponta estão em GUIDE.md.

Ferramentas

105 ferramentas, verificadas no servidor ativo (tools/list em https://be.osir.com/mcp/http).

  • addPrefixToDomain - Gere sugestões de domínio adicionando prefixos.
  • addSshKey - Armazene uma chave pública SSH na sua conta para que ela possa ser injetada em instalações de VPS.
  • addSuffixToDomain - Gere sugestões de domínio adicionando sufixos.
  • buildVpsInstance - Prepare uma instalação de sistema operacional em uma instância VPS.
  • bulkDomainSuggestions - Gere sugestões de nomes de domínio para uma ou mais palavras-chave em um conjunto escolhido de TLDs.
  • cancelTransfer - Prepare o cancelamento de uma transferência de domínio pendente.
  • changeVpsPaymentTerm - Prepare uma alteração do prazo de pagamento (ciclo de cobrança) para uma instância VPS; confirme com executeConfirmedAction.
  • checkDeviceLoginStatus - Verifique a conclusão do login do dispositivo.
  • checkDomainAvailability - Verifique se um nome de domínio está disponível para registro, com preço.
  • checkHostAvailability - Verifique se um nome de host/registro de cola (glue) está disponível para criação.
  • checkKeywordAvailability - Verifique a disponibilidade de palavras-chave em todos os TLDs e registros suportados com resultados detalhados.
  • checkKeywordAvailabilitySummary - Verifique estatísticas resumidas de disponibilidade de palavras-chave sem resultados detalhados de domínio (mais rápido).
  • countMyVpsInstances - Obtenha o número total de instâncias VPS pertencentes ao usuário autenticado.
  • createAccount - Crie uma nova conta de cliente OSIR.
  • createContact - Crie um novo contato para uso com registros de domínio.
  • createDnsRecord - Crie um novo registro DNS para um domínio.
  • createHost - Crie um novo registro de host/cola (glue) (por exemplo, para nameservers personalizados).
  • createMailbox - Prepare a criação de uma caixa de correio paga em um domínio habilitado para e-mail.
  • createPaymentSession - Prepare a criação de uma sessão de checkout de pagamento Stripe para adicionar fundos ao saldo da conta.
  • deleteContact - Prepare a exclusão de um contato.
  • deleteDnsRecord - Prepare a exclusão de um registro DNS.
  • deleteHost - Prepare a exclusão de um registro de host/cola (glue).
  • deleteMailbox - Prepare a exclusão de uma caixa de correio.
  • deleteSshKey - Prepare a remoção de uma chave SSH da sua conta; confirme com executeConfirmedAction.
  • deleteVpsInstance - Prepare a exclusão/cancelamento de uma instância VPS.
  • enableMailDomain - Habilite a hospedagem de e-mail em um domínio que você possui.
  • executeConfirmedAction - Execute uma ação destrutiva ou financeira previamente preparada após a aprovação do usuário.
  • generateDomainSuggestions - Gere sugestões de nomes de domínio com base em palavras-chave.
  • getAccountBalance - Obtenha o saldo atual da conta do usuário autenticado.
  • getAccountSummary - Obtenha um resumo abrangente da conta do usuário: perfil, saldo, número de domínios, número de VPS e transferências pendentes.
  • getAuthStatus - Verifique se a sessão atual está autenticada.
  • getContact - Obtenha informações detalhadas sobre um contato específico.
  • getContactsForDomain - Obtenha todos os contatos (registrante, admin, técnico, cobrança) atribuídos a um domínio.
  • getDedicatedServerCatalog - Obtenha todas as configurações disponíveis de servidores dedicados com preços e especificações.
  • getDnsRecord - Obtenha detalhes de um registro DNS específico.
  • getDomainAuditTrail - Obtenha a trilha de auditoria (histórico de todas as alterações) para um domínio específico.
  • getDomainExtensions - Obtenha todas as extensões de domínio disponíveis (TLDs) com informações de preço.
  • getDomainInfo - Obtenha informações detalhadas sobre um domínio, incluindo data de expiração, nameservers e status.
  • getDomainPricing - Obtenha preços para extensões de domínio do catálogo de produtos.
  • getHostingBundle - Obtenha as opções de hospedagem e preços exatos para um domínio específico: pacotes VPS recomendados (mais baratos primeiro), planos de e-mail, encaminhamento web e implantação de aplicativos/sites (builds são gratuitos; a publicação é executada em um VPS).
  • getHostsForDomain - Liste todos os registros de host/cola (glue) associados a um domínio.
  • getInvoiceDetails - Obtenha informações detalhadas sobre uma fatura específica, incluindo itens de linha.
  • getInvoiceStatistics - Obtenha estatísticas resumidas de faturas: valores totais pagos, pendentes e em atraso.
  • getMailboxQuote - Obtenha uma cotação de preço apenas para exibição de um plano de caixa de correio.
  • getMailboxUsage - Obtenha o uso de disco por caixa de correio em bytes, para exibição de cota junto com o quotaBytes do plano.
  • getMailDnsRecords - Obtenha os registros DNS que um domínio de e-mail precisa (MX, SPF, DKIM, ...) - para clientes que gerenciam DNS externamente.
  • getMyAuditLogs - Obtenha logs de auditoria recentes do usuário autenticado em todos os serviços.
  • getMyProfile - Obtenha o perfil e as informações da conta do usuário autenticado, incluindo nome, e-mail, organização, saldo e contagens de domínios/VPS.
  • getPaymentTransactions - Obtenha o histórico de transações de pagamento do usuário autenticado.
  • getProductCatalog - Obtenha o catálogo completo de produtos, incluindo extensões de domínio, pacotes VPS e servidores dedicados.
  • getRecentActivity - Obtenha a atividade mais recente em todos os domínios e serviços do usuário.
  • getTransferQuote - Obtenha uma cotação de preço de transferência para um domínio.
  • getTransferStatus - Verifique o status atual de uma transferência de domínio.
  • getVpsInstanceDetails - Obtenha informações detalhadas sobre uma instância VPS específica, incluindo uso de recursos.
  • getVpsPackageDetails - Obtenha informações detalhadas sobre um pacote VPS específico, incluindo todos os níveis de preço.
  • initializeDnsZone - Inicialize (crie) a zona DNS para um domínio.
  • initiateTransfer - Prepare o início de uma transferência de domínio de outro registrador.
  • listCategorizedTlds - Liste TLDs do catálogo OSIR que possuem metadados de categoria e público preenchidos.
  • listContacts - Liste todos os contatos do usuário autenticado com pesquisa opcional.
  • listDnsRecords - Liste todos os registros DNS de um domínio.
  • listInvoices - Liste faturas do usuário autenticado com filtragem de status opcional e paginação.
  • listMailboxes - Liste suas caixas de correio com plano, prazo de pagamento, status e próxima data de renovação.
  • listMailDomains - Liste seus domínios habilitados para hospedagem de e-mail, com status (PENDING_DNS ou ACTIVE) e modo DNS.
  • listMailPlans - Liste os planos de caixa de correio de e-mail disponíveis com cotas e preços (mensais e anuais, em centavos).
  • listMySshKeys - Liste as chaves SSH armazenadas na sua conta, com seus IDs e impressões digitais SHA256.
  • listMyVpsInstances - Liste todas as instâncias VPS pertencentes ao usuário autenticado.
  • listPendingTransfers - Liste todas as transferências de domínio recebidas (ganhadoras) pendentes.
  • listUserDomains - Liste todos os domínios pertencentes ao usuário autenticado.
  • listVpsLocations - Liste os locais de hospedagem VPS disponíveis (cidades/países) com pacotes disponíveis.
  • listVpsOsTemplates - Liste os modelos de sistema operacional disponíveis para instalação.
  • listVpsPackages - Liste os pacotes de hospedagem VPS disponíveis com preços, especificações e locais.
  • lockDomain - Ative o bloqueio do registrador em um domínio para evitar transferências não autorizadas.
  • loginToVpsPanel - Gere uma URL de login única para o painel de controle VPS (VirtFusion) para gerenciar o servidor.
  • loginWithDevice - Inicie um login de autorização de dispositivo (RFC 8628).
  • logout - Faça logout: revoga os tokens da sessão no provedor de identidade imediatamente.
  • orderVps - Prepare um pedido para uma nova instância VPS.
  • osirAppCreateUpload - Crie um ticket de upload para implantar o código-fonte do aplicativo no Osir.
  • osirAppDelete - Prepare a exclusão de um aplicativo Osir.
  • osirAppDeploy - Implante um aplicativo no Osir (nível gratuito) e obtenha uma URL HTTPS ativa; o aplicativo é executado isolado em uma microVM. Reimplantar um aplicativo que foi movido para o VPS do próprio usuário o atualiza lá e mantém seu domínio.
  • osirAppGetSource - Obtenha uma URL de download assinada de curta duração para o zip do código-fonte atual de um aplicativo Osir - use isso para fazer edições em um aplicativo implantado sem que o usuário reanexe o projeto: baixe, aplique patches nos arquivos, depois osirAppCreateUpload (FAÇA PUT do novo zip) e osirAppDeploy com o MESMO nome; a plataforma reconstrói e, para aplicativos de nível próprio, envia automaticamente a nova versão para a máquina do usuário.
  • osirAppList - Liste os aplicativos Osir implantados do usuário autenticado com suas URLs ativas e status.
  • osirAppLogs - Obtenha logs recentes da microVM de um aplicativo Osir ('por que meu aplicativo está quebrado?').
  • osirAppDeployToVps - Implante um aplicativo Osir ativo em um VPS que o usuário possui, movendo-o do nível gratuito compartilhado: anexe um que ele já tenha (instanceId, sem custo) ou peça um novo (packageId, com aprovação). A plataforma envia o aplicativo por sua própria chave de implantação - nunca SSH, nunca um script de instalação.
  • osirAppProvisionDatabase - Provisione um banco de dados Postgres gerenciado para um aplicativo Osir.
  • osirAppSetSecret - Defina um segredo de ambiente para um aplicativo Osir (por exemplo,
  • osirAppStatus - Obtenha o status atual, URL ativa e saúde de um aplicativo Osir ('meu aplicativo está funcionando?').
  • osirSiteDesignBrief - Etapa 1 do design de um site com OSIR.
  • osirSitePublish - Publique um site de página única em uma URL HTTPS ativa no Osir (nível gratuito) - QUALQUER documento HTML completo funciona: o site do próprio usuário, uma página projetada neste chat ou uma do fluxo osirSiteDesignBrief. Republicar um site que foi movido para o VPS do próprio usuário o atualiza lá.
  • payInvoice - Prepare o pagamento de uma fatura pendente a partir do saldo da conta.
  • previewPaymentFees - Visualize as taxas que seriam cobradas para um determinado valor de pagamento.
  • registerDomain - Prepare o registro de um novo nome de domínio.
  • renewDomain - Prepare a renovação de um domínio por um número especificado de anos.
  • setMailboxPassword - Defina uma nova senha em uma caixa de correio.
  • spinDomainWords - Gere sugestões de domínio girando/substituindo palavras.
  • suggestAlternatives - Sugira nomes de domínio alternativos se o solicitado não estiver disponível (método legado).
  • transferDomain - Prepare a transferência de um domínio de outro registrador para a OSIR.
  • unlockDomain - Prepare a remoção do bloqueio do registrador de um domínio para permitir transferências.
  • updateContact - Atualize as informações de um contato existente.
  • updateDnsRecord - Atualize um registro DNS existente.
  • updateDomainAutoRenew - Ative ou desative a renovação automática de um domínio.
  • updateDomainPrivacy - Ative ou desative a proteção de privacidade WHOIS para um domínio.
  • updateNameservers - Atualize os nameservers de um domínio.
  • validateDomainName - Valide se o formato de um nome de domínio está correto.
  • verifyAccount - Verifique uma conta OSIR recém-criada com o código do e-mail de verificação - etapa 2 do onboarding, sem necessidade de autenticação.
  • verifyMailDns - Verifique se os registros DNS de um domínio de e-mail resolvem; ativa o domínio para e-mail quando todos os registros são encontrados.

Build, teste, implantação

./gradlew build        # build all modules + run tests
./gradlew test         # tests only

docker-compose up -d   # run both servers in containers

O docker-compose.yml, o build-and-deploy.bat e o fluxo de trabalho de CI fornecidos referenciam um registro de contêiner de espaço reservado (registry.example.com) — aponte-os para o seu próprio. Consulte DEPLOYMENT.md para a lista de verificação de produção (PostgreSQL, TLS, escalabilidade).

Configuração

Todas as configurações são variáveis de ambiente com padrões sensatos — nada secreto é commitado.

VariávelPadrãoDescrição
OSIR_BACKEND_URLhttps://be.osir.comAPI de backend
KEYCLOAK_URLhttps://auth.osir.comServidor de autenticação KeyCloak
KEYCLOAK_REALMosirRealm do KeyCloak
KEYCLOAK_CLIENT_IDosir-cliID do cliente OAuth
OLLAMA_URLhttp://localhost:11434Ollama LLM (interface de chat MCP)
CORS_ORIGINShttps://osir.com,…Origens CORS permitidas
A2A_SIGNING_SECRET(vazio)Assinatura de solicitação HMAC-SHA256 opcional

Consulte .env.example para a lista completa.

Estrutura do projeto

common/      Shared library — 12 services, 9 REST clients, ~174 models
mcp-server/  Quarkus MCP server — 105 tools, 11 prompts, 2 resources, chat UI
a2a-server/  Quarkus A2A server — 9 agents, 89 skills, JSON-RPC, JPA task persistence

Ambos os servidores dependem de common, portanto, uma operação de backend é implementada uma vez e exposta de duas maneiras.

Documentação

  • GUIDE.md — guia de uso completo, referência de ferramentas, tutoriais passo a passo
  • WEBSITE-DESIGN.md — design de sites com IA: guia do cliente, casos de uso, integração frontend
  • DEVELOPING.md — estrutura do repositório, comandos de build/execução, notas de arquitetura
  • VPS-OS-BUILD.md — como contratar um VPS com um sistema operacional, chaves SSH, reinstalação e o fluxo OSIR APP DEPLOY. Leia isto antes de usar as ferramentas de VPS: contratar e construir são duas etapas separadas no VirtFusion, e orderVps sozinho entrega um servidor sem sistema operacional.
  • A2A-API-REFERENCE.md — especificação do protocolo A2A (métodos, erros, agentes)
  • A2A-ARCHITECTURE.md — documento de design do A2A
  • A2A-CONFIRMATION-GATE-SPEC.md — preparação de operações destrutivas atrás de executeConfirmedAction
  • DEPLOYMENT.md — checklist de implantação em produção

Licença

Apache License 2.0.