nadanada_me

Um servidor MCP público que dá acesso a agentes de IA a números de telefone reais de operadoras do Reino Unido para verificação por SMS. Agentes podem alugar números descartáveis ou por período, pagar faturas Lightning e ler SMS recebidos, tudo por meio de chamadas de ferramentas MCP padrão, sem necessidade de autenticação.

Documentação

Servidor MCP de Telefone

Adaptador MCP autônomo para lnvpn-web-app/app/api/v2/phone/*.

Este serviço é apenas aditivo: ele não altera rotas ou comportamentos existentes da API de telefone.

O Que Ele Expõe

Ferramentas mapeadas 1:1 para sua API existente:

  • phone.purchase.start -> POST /api/v2/phone/purchase
  • phone.purchase.complete -> POST /api/v2/phone/complete
  • phone.renew.start -> POST /api/v2/phone/renew
  • phone.renew.complete -> POST /api/v2/phone/renew/complete
  • phone.numbers.list -> GET /api/v2/phone/numbers
  • phone.messages.list -> GET /api/v2/phone/messages/{phoneNumber}

Modelo de Segurança

Por padrão, o servidor executa no modo hmac (MCP_AUTH_MODE=hmac).

Cada requisição para /mcp deve incluir:

  • X-Client-Id
  • X-Timestamp (ms Unix)
  • X-Nonce (UUID recomendado)
  • X-Body-SHA256 (hex sha256 do corpo JSON estável)
  • X-Signature (v1=<hex_hmac>)

String canônica de assinatura:

{METHOD}\n{PATH}\n{X-Timestamp}\n{X-Nonce}\n{X-Body-SHA256}

Assinatura:

hex(HMAC_SHA256(canonical, client_secret))

Controles:

  • proteção contra desvio de timestamp (HMAC_ALLOWED_SKEW_MS)
  • proteção contra replay de nonce de uso único (Redis recomendado)
  • limite de taxa por cliente
  • lista de ferramentas permitidas por cliente

Se você quiser um endpoint totalmente aberto, defina MCP_AUTH_MODE=open. No modo aberto, a autenticação do cliente MCP é desabilitada e as requisições são aceitas sem cabeçalhos HMAC.

Configuração

Crie um arquivo .env na raiz do projeto e defina valores reais. O servidor carrega automaticamente .env na inicialização.

Variáveis importantes:

  • MCP_AUTH_MODE: hmac ou open
  • MCP_CLIENTS_JSON: obrigatório no modo hmac

Formato de MCP_CLIENTS_JSON:

{
  "agentA": {
    "secret": "replace-with-long-random-secret",
    "allowedTools": [
      "phone.purchase.start",
      "phone.purchase.complete",
      "phone.renew.start",
      "phone.renew.complete",
      "phone.numbers.list",
      "phone.messages.list"
    ],
    "rateLimitPerMinute": 120
  }
}

Execução

npm install
npm run dev

Build + produção:

npm run build
npm run start

Implantação

  • Modelo de configuração PM2: ecosystem.config.cjs
  • Modelo Nginx: nginx.phone-mcp.conf.example

Edge sugerido:

Cloudflare -> Nginx -> phone-mcp (PM2) -> existing phone API