nadanada_me MCP Server
영국 이동통신사의 실제 전화번호를 AI 에이전트에 제공하여 SMS 인증을 가능하게 하는 공개 MCP 서버입니다. 에이전트는 일회용 또는 임대 번호를 대여하고, 라이트닝 인보이스를 결제하며, 수신 SMS를 읽을 수 있으며, 모든 작업은 인증 없이 표준 MCP 도구 호출을 통해 이루어집니다.
문서
Phone MCP Server
Standalone MCP adapter for lnvpn-web-app/app/api/v2/phone/*.
This service is additive only: it does not change existing phone API routes or behavior.
What It Exposes
Tools mapped 1:1 to your existing API:
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}
Security Model
By default, the server runs in hmac mode (MCP_AUTH_MODE=hmac).
Each request to /mcp must include:
X-Client-IdX-Timestamp(unix ms)X-Nonce(UUID recommended)X-Body-SHA256(sha256 hex of stable JSON body)X-Signature(v1=<hex_hmac>)
Canonical signing string:
{METHOD}\n{PATH}\n{X-Timestamp}\n{X-Nonce}\n{X-Body-SHA256}
Signature:
hex(HMAC_SHA256(canonical, client_secret))
Controls:
- timestamp skew protection (
HMAC_ALLOWED_SKEW_MS) - one-time nonce replay protection (Redis recommended)
- per-client rate limit
- per-client allowed tool list
If you want a fully open endpoint, set MCP_AUTH_MODE=open.
In open mode, MCP client auth is disabled and requests are accepted without HMAC headers.
Configuration
Create a .env file in the project root and set real values.
The server auto-loads .env at startup.
Important variables:
MCP_AUTH_MODE:hmacoropenMCP_CLIENTS_JSON: required inhmacmode
MCP_CLIENTS_JSON format:
{
"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
}
}
Run
npm install
npm run dev
Build + production:
npm run build
npm run start
Deploy
- PM2 config template:
ecosystem.config.cjs - Nginx template:
nginx.phone-mcp.conf.example
Suggested edge:
Cloudflare -> Nginx -> phone-mcp (PM2) -> existing phone API