smsportal.app SMS

app.smsportalPublished by smsportal.appOfficial publisherv1.0.0Updated Oct 30, 2026

Send and read SMS from your own Android phone and number. No per-message fees from smsportal.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowCommunication & Collaboration

Overview

AI-generated overview

Turns a paired Android phone into an SMS gateway for AI assistants: send texts from your own number and read incoming messages.

What you can do
  • List paired phones with heartbeat and SIM state, and view sent, received and device totals
  • Search sent and received SMS by text, number, phone, status and time
  • Read incoming SMS already synchronised by the phone
  • Send an exact message to up to 50 E.164 numbers from your own phone
  • Check per-recipient delivery status of a sent batch
When to use it
Useful when an assistant should send or review SMS through your own Android number and SIM rather than a bulk SMS provider, for example notifications, replies or checking incoming messages.
Requirements
Remote Streamable HTTP endpoint at smsportal.app/mcp, or a self-built Node.js package run locally over stdio. Needs an smsportal.app account with a paired Android phone and an API key, sent as an Authorization bearer header (or SMSPORTAL_API_KEY in stdio mode). Clients without custom headers need mcp-remote on Node.js 18+.
Before you install
The API key is a credential granting access to your SMS account; keep it out of shared configs. The sending tool sends real messages from your phone and number, which may cost carrier fees even though smsportal charges no per-message fee. API acceptance is not proof of delivery, so check send status. Set SMSPORTAL_READ_ONLY=true to hide the sending tool.

Installation

In SourceWeft

  1. Open smsportal.app SMS in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/app.smsportal%2Fsms/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "smsportal-app-sms": {
      "type": "http",
      "url": "https://smsportal.app/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

SMS Portal|app MCP server

Send and read SMS from your own Android phone through AI agents such as Claude, Cursor or any other Model Context Protocol client.

smsportal.app turns an Android phone into an SMS gateway: messages go out from your own number and SIM, and incoming SMS are available through the API. This server exposes that account to AI agents. It is not affiliated with SMSPortal (Pty) Ltd of South Africa.

Use the hosted server (recommended)

  1. Create an account at smsportal.app, pair your Android phone and create an API key in the dashboard.
  2. Add the server to your client.

Claude Code

sh
claude mcp add --transport http smsportal https://smsportal.app/mcp \  --header "Authorization: Bearer $SMSPORTAL_API_KEY"

Claude Desktop and other clients without custom headers (via mcp-remote, Node.js 18+)

json
{  "mcpServers": {    "smsportal": {      "command": "npx",      "args": ["-y", "mcp-remote", "https://smsportal.app/mcp", "--header", "Authorization:${AUTH_HEADER}"],      "env": { "AUTH_HEADER": "Bearer YOUR_SMSPORTAL_API_KEY" }    }  }}

Step-by-step guide: smsportal.app/en/integrations/mcp.

Tools

ToolWhat it does
smsportal_list_devicesPhones paired with the account and their last heartbeat and SIM state
smsportal_get_statsSent, received and device totals
smsportal_list_messagesSearch sent and received SMS by text, number, phone, status and time
smsportal_read_received_smsIncoming SMS already synchronised by the phone
smsportal_get_send_statusPer-recipient status of a batch returned by smsportal_send_sms
smsportal_send_smsSend an exact message to up to 50 E.164 numbers from your phone

API acceptance is not proof of delivery; check the send status afterwards. Set SMSPORTAL_READ_ONLY=true to remove the sending tool.

Run it yourself

sh
git clone https://github.com/aleksanderem/smsportal-mcp && cd smsportal-mcpnpm ci && npm run build

Local (stdio) client entry:

json
{  "mcpServers": {    "smsportal": {      "command": "node",      "args": ["/path/to/smsportal-mcp/dist/index.js"],      "env": { "SMSPORTAL_API_KEY": "YOUR_SMSPORTAL_API_KEY" }    }  }}
VariableDefaultMeaning
SMSPORTAL_API_KEY—API key (stdio mode)
SMSPORTAL_API_URLhttps://smsportal.app/api/v1API base URL
SMSPORTAL_READ_ONLYfalsetrue hides the sending tool
SMSPORTAL_PUBLIC_ORIGINhttp://localhost:18080HTTP mode: the only browser origin allowed
SMSPORTAL_TRUST_PROXYfalseHTTP mode: trust one reverse-proxy hop for the caller address
HOST, PORT127.0.0.1, 3002HTTP mode listener

HTTP mode (node dist/index.js --http, or the Dockerfile) serves Streamable HTTP at /mcp, takes the API key from Authorization: Bearer (or an x-api-key header, for hosts that cannot add the Bearer prefix), validates it before every request and rate-limits per caller network.

Development

sh
npm ci && npm test

Security reports: see SECURITY.md. License: MIT.

Source: README.md at commit 66451ba

Tools

0
This server asks for a credential such as an API key, so SourceWeft could not read its tools without one and has not indexed them.

Version history

1
  1. v1.0.0LatestOct 30, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts