Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

MCP server for ThaiBulkSMS and ThaiBulkMail APIs, enabling SMS, email, credit check, and OTP operations through natural language.

README.md

@thaibulksms/tbs

Zero-dependency MCP & CLI for ThaiBulkSMS and ThaiBulkMail APIs.

![npm](https://www.npmjs.com/package/@thaibulksms/tbs) ![License: MIT](LICENSE) ![Node.js](https://nodejs.org/) ![Bun](https://bun.sh/)

README ภาษาไทย | คู่มือติดตั้ง (Thai)

Install

npm install -g @thaibulksms/tbs

Quick Start

# 1. Save credentials (from developer.thaibulksms.com)
tbs login

# 2. Use it
tbs send 0812345678 "Hello" --sender OTP_SMS     # Send SMS
tbs email a@b.com "Subject" --from s@d.com --template <uuid>  # Send email
tbs credit                                       # Check balance
tbs otp 0812345678                               # SMS OTP
tbs email-otp a@b.com --template <uuid>          # Email OTP

No install needed with npx: ``bash npx @thaibulksms/tbs login npx @thaibulksms/tbs send 0812345678 "Hello" ``

Add to AI Agent (MCP)

Claude Code

claude mcp add thaibulksms \
  -e THAIBULKSMS_API_KEY=xxx \
  -e THAIBULKSMS_API_SECRET=xxx \
  -e THAIBULKSMS_OTP_KEY=xxx \
  -e THAIBULKSMS_OTP_SECRET=xxx \
  -- npx -y @thaibulksms/tbs

Or .mcp.json (project-scoped, commit to git): ``json { "mcpServers": { "thaibulksms": { "command": "npx", "args": ["-y", "@thaibulksms/tbs"], "env": { "THAIBULKSMS_API_KEY": "${THAIBULKSMS_API_KEY}", "THAIBULKSMS_API_SECRET": "${THAIBULKSMS_API_SECRET}", "THAIBULKSMS_OTP_KEY": "${THAIBULKSMS_OTP_KEY}", "THAIBULKSMS_OTP_SECRET": "${THAIBULKSMS_OTP_SECRET}" } } } } ``

Gemini CLI

gemini mcp add thaibulksms -- npx -y @thaibulksms/tbs

OpenCode

{
  "mcp": {
    "thaibulksms": {
      "type": "local",
      "command": ["npx", "-y", "@thaibulksms/tbs"],
      "environment": {
        "THAIBULKSMS_API_KEY": "{env:THAIBULKSMS_API_KEY}",
        "THAIBULKSMS_API_SECRET": "{env:THAIBULKSMS_API_SECRET}",
        "THAIBULKSMS_OTP_KEY": "{env:THAIBULKSMS_OTP_KEY}",
        "THAIBULKSMS_OTP_SECRET": "{env:THAIBULKSMS_OTP_SECRET}"
      },
      "enabled": true
    }
  }
}

OpenClaw

OpenClaw reads .mcp.json (same as Claude Code). Drop the .mcp.json file in your project root — OpenClaw picks it up automatically.

Claude Desktop

Config: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

{
  "mcpServers": {
    "thaibulksms": {
      "command": "npx",
      "args": ["-y", "@thaibulksms/tbs"],
      "env": {
        "THAIBULKSMS_API_KEY": "your_key",
        "THAIBULKSMS_API_SECRET": "your_secret",
        "THAIBULKSMS_OTP_KEY": "your_otp_key",
        "THAIBULKSMS_OTP_SECRET": "your_otp_secret"
      }
    }
  }
}

Then ask your agent: "Check my SMS credit balance"

---

CLI Commands

tbs login                          Save API credentials
tbs credit                         Check SMS + email credit
tbs send <to> <message>            Send SMS
tbs email <to> <subject>           Send email (template)
tbs otp <to>                       Request SMS OTP
tbs verify <token> <pin>           Verify SMS OTP
tbs email-otp <to>                 Request email OTP
tbs email-verify <token> <code>    Verify email OTP
tbs profiles                       List saved profiles
tbs help <command>                 Per-command help

Flags

| Flag | Description | Commands | |------|-------------|----------| | --sender <id> | SMS sender ID (default: SMS.) | send | | --from <email> | Sender email address | email | | --template <uuid> | Template UUID | email, email-otp | | --json | Machine-readable output | all | | --profile <name> | Use specific profile | all |

Examples

tbs send 0812345678 "Hello" --sender OTP_SMS
tbs send 0812345678 "Hello" --json
tbs email user@example.com "Subject" --from sender@domain.com --template <uuid>
tbs credit --json
tbs otp 0812345678
tbs verify <token> 1234
tbs email-otp user@example.com --template <uuid>
tbs email-verify <token> 733923
tbs login --profile production
tbs credit --profile production

MCP Tools (8)

| Tool | Description | |------|-------------| | send_sms | Send SMS to one Thai mobile number | | send_email | Send email via ThaiBulkMail template | | check_sms_credit | Check SMS credit balance | | check_email_credit | Check email credit balance | | request_otp | Send OTP PIN via SMS | | verify_otp | Verify SMS OTP PIN | | request_email_otp | Send OTP code via email | | verify_email_otp | Verify email OTP code |

Credentials & Setup

API Keys

| What | Where to get it | |------|----------------| | SMS/Email API Key & Secret | Dashboard > Developer Settings | | SMS OTP Key & Secret | OTP Manager | | SMS Sender Name | Dashboard > Sender Name (must register before use) | | Email Template | Dashboard > Email Templates (create and copy template UUID) | | Email OTP Template | Dashboard > Email OTP (create and copy template UUID) |

Environment Variables

| Variable | For | Required | |----------|-----|:--------:| | THAIBULKSMS_API_KEY | SMS, Email | Yes | | THAIBULKSMS_API_SECRET | SMS, Email | Yes | | THAIBULKSMS_OTP_KEY | SMS OTP | For OTP | | THAIBULKSMS_OTP_SECRET | SMS OTP | For OTP |

Precedence: --profile flag > env vars > ~/.config/tbs/default.json

SMS/Email use HTTP Basic Auth. SMS OTP uses separate key/secret in request body. Email OTP uses the same Basic Auth as email.

Architecture

src/
  index.ts        Entry point — CLI commands or MCP (no args)
  cli.ts          Twilio-style CLI handlers
  profile.ts      Credential storage (~/.config/tbs/, chmod 0600)
  transport.ts    MCP JSON-RPC stdio transport (~80 lines)
  server.ts       MCP tool definitions (raw JSON Schema) + handlers
  client.ts       ThaiBulk HTTP client (fetch + Basic Auth)
  validators.ts   Phone/email validation (pure regex)

Zero runtime dependencies. No @modelcontextprotocol/sdk (26MB, 91 packages). Just ~80 lines of JSON-RPC stdio transport using Node.js built-ins.

Development

npm install            # Dev deps only
npm test               # Node.js
npm run test:bun       # Bun
npm run build          # Compile

Security

  • Credentials in ~/.config/tbs/ (chmod 0600) or env vars — never hardcoded
  • Single-recipient only — no bulk sends
  • Thai mobile validation, email header injection prevention
  • Human-in-the-loop for destructive MCP tools
  • Zero runtime deps = zero supply chain risk

Links

License

MIT

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Communication servers.