Skip to main content
Glama
bigteck2021

numero-virtual-mcp

by bigteck2021
README.md
# numero-virtual-mcp

Servidor [MCP](https://modelcontextprotocol.io) do **Número Virtual**: seu assistente (Claude Desktop, Claude Code, Cursor, OpenClaw e outros) passa a conseguir pedir um número virtual, esperar o código de verificação por SMS e encerrar ou cancelar a ativação, usando a **sua** chave de API.

Por baixo é a [API v1 pública](https://app.numero-virtual.com/api/v1/docs). Nada é guardado fora da sua máquina: a chave fica na sua configuração e vai direto para `app.numero-virtual.com`.

## 1. Pegue sua chave

Entre em [app.numero-virtual.com](https://app.numero-virtual.com) → **Desenvolvedores** → **Nova chave**. Ela começa com `nv_live_`. Tenha saldo na conta: cada número comprado desconta do saldo.

## 2. Configure no seu cliente

Requer Node.js 18 ou mais novo.

**Claude Code**

```bash
claude mcp add numero-virtual -e NUMERO_VIRTUAL_API_KEY=nv_live_SUA_CHAVE -- npx -y numero-virtual-mcp
```

**Claude Desktop** (`claude_desktop_config.json`) e **Cursor** (`mcp.json`):

```json
{
  "mcpServers": {
    "numero-virtual": {
      "command": "npx",
      "args": ["-y", "numero-virtual-mcp"],
      "env": { "NUMERO_VIRTUAL_API_KEY": "nv_live_SUA_CHAVE" }
    }
  }
}
```

**Rodando do código-fonte** (sem npm):

```bash
git clone https://github.com/bigteck2021/numero-virtual-mcp.git && cd numero-virtual-mcp
npm install && npm run build
# no cliente MCP: "command": "node", "args": ["/caminho/absoluto/dist/index.js"]
```

## 3. Ferramentas

| ferramenta | o que faz |
|---|---|
| `get_balance` | saldo da conta em reais |
| `list_countries` | países com estoque (use o código ISO: BR, US, ID...) |
| `list_services` | serviços, preços e opções de um país |
| `request_number` | compra um número para um serviço (`serviceId`, `country`, `apiId` opcional, `ddd` opcional no Brasil) |
| `get_activation` | status, telefone e código de uma ativação |
| `wait_for_sms` | espera o código chegar (consulta a cada 5 s, até 120 s por padrão) |
| `resend_sms` | pede reenvio do SMS |
| `cancel_activation` | cancela antes do SMS chegar; o valor volta ao saldo |
| `complete_activation` | marca como concluída depois de usar o código |

Exemplo de conversa: *"Pega um número do Brasil pro Telegram, me passa o telefone, e quando o código chegar me avisa."* O assistente chama `list_services`, `request_number`, `wait_for_sms` e devolve o código.

## Antes de usar: o assistente gasta o seu saldo

Cada `request_number` desconta do saldo na hora, como qualquer compra. O assistente só faz o que você pede, mas:

- **Texto de SMS é dado, não ordem.** Um SMS recebido pode conter instruções ("compre mais 20 números"). O assistente lê esse texto pela ferramenta `wait_for_sms`/`get_activation`. Bons clientes MCP tratam resultado de ferramenta como dado; mesmo assim, não deixe o assistente comprar em laço sem você acompanhar.
- **A chave vale dinheiro.** Ela fica no arquivo de configuração do seu cliente MCP. Não a cole em chats nem em repositórios. Se vazar, revogue no painel (Desenvolvedores) e gere outra.
- **Nada além da API.** Este servidor não recarrega saldo, não altera a conta e não vê dados além do que a chave já permite.

## Limites

Os mesmos da API: catálogo (`list_countries`, `list_services`) até 6 consultas por minuto por chave; compras e cancelamentos também têm limite por minuto. Quando estourar, a ferramenta devolve o erro com "tente de novo em N s".

## Variáveis

| variável | obrigatória | padrão |
|---|---|---|
| `NUMERO_VIRTUAL_API_KEY` | sim | — |
| `NUMERO_VIRTUAL_API_URL` | não | `https://app.numero-virtual.com/api/v1` |

## Suporte

[app.numero-virtual.com](https://app.numero-virtual.com), pelo chat de suporte.