nadanada_me
Un servidor MCP público que otorga a los agentes de IA acceso a números de teléfono reales de operadores del Reino Unido para verificación por SMS. Los agentes pueden alquilar números desechables o de alquiler, pagar facturas Lightning y leer SMS entrantes, todo a través de llamadas estándar de herramientas MCP sin necesidad de autenticación.
Documentación
Servidor MCP de Phone
Adaptador MCP independiente para lnvpn-web-app/app/api/v2/phone/*.
Este servicio es solo aditivo: no cambia las rutas ni el comportamiento de la API de phone existente.
Lo que expone
Herramientas mapeadas 1:1 a tu API existente:
phone.purchase.start->POST /api/v2/phone/purchasephone.purchase.complete->POST /api/v2/phone/completephone.renew.start->POST /api/v2/phone/renewphone.renew.complete->POST /api/v2/phone/renew/completephone.numbers.list->GET /api/v2/phone/numbersphone.messages.list->GET /api/v2/phone/messages/{phoneNumber}
Modelo de seguridad
Por defecto, el servidor se ejecuta en modo hmac (MCP_AUTH_MODE=hmac).
Cada solicitud a /mcp debe incluir:
X-Client-IdX-Timestamp(ms unix)X-Nonce(UUID recomendado)X-Body-SHA256(sha256 hex del cuerpo JSON estable)X-Signature(v1=<hex_hmac>)
Cadena de firma canónica:
{METHOD}\n{PATH}\n{X-Timestamp}\n{X-Nonce}\n{X-Body-SHA256}
Firma:
hex(HMAC_SHA256(canonical, client_secret))
Controles:
- protección contra desviación de marca de tiempo (
HMAC_ALLOWED_SKEW_MS) - protección de reproducción de nonce de un solo uso (Redis recomendado)
- límite de velocidad por cliente
- lista de herramientas permitidas por cliente
Si deseas un endpoint completamente abierto, establece MCP_AUTH_MODE=open.
En modo abierto, la autenticación del cliente MCP está deshabilitada y las solicitudes se aceptan sin encabezados HMAC.
Configuración
Crea un archivo .env en la raíz del proyecto y establece valores reales.
El servidor carga automáticamente .env al iniciar.
Variables importantes:
MCP_AUTH_MODE:hmacoopenMCP_CLIENTS_JSON: requerido en modohmac
Formato 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
}
}
Ejecución
npm install
npm run dev
Compilar + producción:
npm run build
npm run start
Despliegue
- Plantilla de configuración PM2:
ecosystem.config.cjs - Plantilla de Nginx:
nginx.phone-mcp.conf.example
Borde sugerido:
Cloudflare -> Nginx -> phone-mcp (PM2) -> existing phone API