Labsco
MCP SERVER

Nadanada Me

by lnvpn

An HMAC-signed MCP front door for a phone-number API — buy, renew, list numbers and read messages.

Telephony, SMS & Voice Agents
Summary
The per-client tool allowlist is the part worth copying.

Four of the six tools spend money, so "which agent may call what" is a real question rather than a theoretical one — and this answers it in configuration, per client, alongside a rate limit. The signing scheme is conventional HMAC over a canonical string with a nonce, but the allowlist is what makes it safe to give a read-only agent a key. There is an open mode; using it removes all of the above at once.

What it is

An adapter that sits in front of an existing phone API and exposes its routes as MCP tools, one-to-one, without changing the API itself. What distinguishes it is the auth layer: by default every MCP request must be signed, with a per-client secret, replay protection and a per-client list of which tools that client may call.

What you get
  • `phone.purchase.start` and `phone.purchase.complete` for acquiring a number
  • `phone.renew.start` and `phone.renew.complete` for extending one
  • `phone.numbers.list` for the numbers you hold
  • `phone.messages.list` for the messages received on a given number
  • Per-client tool allowlists, so one agent can list messages while another can also spend money
  • Per-client rate limits, set as `rateLimitPerMinute`
  • Replay protection with one-time nonces, and timestamp skew bounded by `HMAC_ALLOWED_SKEW_MS`
  • An open mode for when you do not want any of that
Requirements

The phone API it fronts — this is an adapter for your own deployment, not a hosted service. Configure it with a `.env` the server loads at startup: `MCP_AUTH_MODE` set to `hmac` or `open`, and in hmac mode `MCP_CLIENTS_JSON` naming each client with a secret, an allowed-tool list and a rate limit. Signed requests carry `X-Client-Id`, `X-Timestamp`, `X-Nonce`, `X-Body-SHA256` and `X-Signature`. Run `npm install` and `npm run dev`, or `npm run build` and `npm run start` for production; PM2 and Nginx templates are included. Package `phone-mcp-server`, version 1.0.0. Redis is recommended for nonce storage.