
AgentPhone MCP
- 114 repo stars
- Updated July 29, 2026
- AgentPhone-AI/agentphone-mcp
AgentPhone is an MCP server that gives AI agents real phone numbers, text messaging, and voice calls through MCP tools.
About
AgentPhone is an MCP server that gives developers a practical way to add real-world phone, SMS, and voice to agent-driven products without stitching together multiple telco APIs by hand. You register either the remote streamable HTTP endpoint with a Bearer token or the npm stdio package with AGENTPHONE_API_KEY, then let Claude Code, Cursor, Codex, or another MCP client invoke tools to manage numbers and conversations. That makes it a integration: you use it while implementing support hotlines, verification via text, outbound call reminders, or voice agents alongside your app. It is strongest when the product genuinely needs a PSTN leg—onboarding flows, alerts, or human handoff—not when email or in-app chat suffices. Expect intermediate setup: API keys from agentphone.to, auth on remotes, and careful handling of PII in agent prompts. After install, your agent can orchestrate telephony actions as structured tool calls rather than fragile browser automation.
- Real phone numbers for AI agents—not simulated chat-only contact paths
- SMS and voice call capabilities exposed through MCP tools
- Hosted streamable HTTP MCP at mcp.agentphone.to with Bearer API key
- stdio npm package agentphone-mcp (v0.5.2) with AGENTPHONE_API_KEY env
- Dual transport: remote HTTP headers or local stdio for Claude Code-style setups
AgentPhone MCP by the numbers
- Data as of Aug 11, 2026 (Skillselion catalog sync)
claude mcp add --env AGENTPHONE_API_KEY=YOUR_AGENTPHONE_API_KEY agentphone-mcp -- npx -y agentphone-mcpAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| repo stars | ★ 114 |
|---|---|
| Package | agentphone-mcp |
| Transport | STDIO, HTTP |
| Auth | Required |
| Last updated | July 29, 2026 |
| Repository | AgentPhone-AI/agentphone-mcp ↗ |
What it does
Provision real SMS and voice phone numbers so your coding agent can send messages, take calls, and run telephony-backed product flows via MCP.
Who is it for?
Best when you're adding SMS verification, call routing, or voice agents to SaaS, support bots, or field workflows.
Skip if: Projects that only need mock phone UI with no carrier-backed send or receive.
What you get
Your MCP client can provision and use real numbers so agent workflows send SMS and handle voice without custom carrier glue.
- Agent-accessible phone number provisioning and messaging tools
- Voice call actions callable from MCP workflows
- Production-ready telephony bridge for agent-built features
By the numbers
- Registry version 0.5.2 for server and npm package agentphone-mcp
- Remote endpoint https://mcp.agentphone.to/mcp (streamable-http)
- Required secret AGENTPHONE_API_KEY for stdio package
README.md
AgentPhone MCP Server
Give AI agents real phone numbers, SMS, and voice calls via the Model Context Protocol.
AgentPhone lets your AI agent buy phone numbers, send/receive SMS, and place voice calls — all through natural language in Cursor, Claude Desktop, or any MCP-compatible client.
Agents are the core concept — each agent gets its own phone numbers, voice personality, system prompt, and webhook. Think of an agent as a virtual team member with its own phone line. You can create agents for different purposes (support, sales, scheduling) and configure how they sound and behave on calls.
Quick Start
1. Get your API key
Sign up at agentphone.ai and create an API key from Settings.
2. Connect via MCP
Option A: Remote server (recommended)
Point your MCP client at the hosted endpoint — no install needed:
{
"mcpServers": {
"agentphone": {
"type": "streamable-http",
"url": "https://mcp.agentphone.ai/mcp",
"headers": {
"Authorization": "Bearer your_api_key_here"
}
}
}
}
Works with any MCP client that supports Streamable HTTP transport (Switchboard, remote agent platforms, etc.).
Option B: Local server (stdio)
Runs locally via npx — works with Cursor, Claude Desktop, Windsurf, and Claude Code:
Cursor: Settings > MCP or ~/.cursor/mcp.json
Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
"mcpServers": {
"agentphone": {
"command": "npx",
"args": ["-y", "agentphone-mcp"],
"env": {
"AGENTPHONE_API_KEY": "your_api_key_here"
}
}
}
}
Option C: Self-hosted HTTP server
Run your own HTTP MCP endpoint:
AGENTPHONE_API_KEY=your_api_key npx agentphone-mcp --http --port 3000
Then connect to http://localhost:3000/mcp.
What Can It Do?
Once configured, just ask your AI agent things like:
- "Buy me a phone number in the 415 area code"
- "Create a support agent that greets callers and helps with billing"
- "Call +14155551234 and have a conversation about scheduling a dentist appointment"
- "Text +14155551234 saying 'Your appointment is confirmed for 3pm tomorrow'"
- "Show me my recent calls and transcripts"
- "List the available voices and switch my agent to a different one"
- "Set up a webhook so I get notified when someone calls or texts my number"
- "Show me this month's usage breakdown"
Transports
| Transport | Command | Use case |
|---|---|---|
| Streamable HTTP (remote) | https://mcp.agentphone.ai/mcp |
Agent platforms (Switchboard, etc.), remote clients |
| Streamable HTTP (self-hosted) | npx agentphone-mcp --http --port 3000 |
Your own infrastructure |
| stdio (default) | npx agentphone-mcp |
Cursor, Claude Desktop, Windsurf, Claude Code |
Authentication
- stdio: API key via
AGENTPHONE_API_KEYenvironment variable - HTTP (self-hosted): API key via env var or
Authorization: Bearer <key>header per request - HTTP (hosted): API key via
Authorization: Bearer <key>header per request
Endpoints (HTTP mode)
| Method | Path | Description |
|---|---|---|
POST |
/mcp |
MCP Streamable HTTP endpoint (stateless — each request is independent) |
GET |
/health |
Health check |
Highlights
- Phone numbers — buy and manage numbers in any US/CA area code
- SMS — send and receive text messages, view conversation threads
- Voice calls — place outbound calls with built-in AI conversation (no webhook needed) or bring your own webhook
- Inbound handling — set up webhooks to receive and respond to inbound calls and texts in real time
- Agents — create agents with custom voices, system prompts, call transfer, and voicemail
- Usage & billing — monitor your plan limits, message/call volume, and daily/monthly breakdowns
All Tools (28)
Account
| Tool | Description |
|---|---|
account_overview |
Get a full snapshot of your account — agents, numbers, webhook, and usage |
get_usage |
Get usage stats, plan limits, and quotas. Use breakdown for daily or monthly time-series. |
Phone Numbers
| Tool | Description |
|---|---|
list_numbers |
List all phone numbers in your account |
buy_number |
Purchase a new phone number with optional area_code and agent_id |
SMS
| Tool | Description |
|---|---|
send_message |
Send SMS or iMessage. Supports media, threaded replies (reply_to_message_id), iMessage send effects (send_style), and group chats |
get_messages |
Get messages for a specific number |
list_conversations |
List SMS conversations. Pass agent_id to filter by agent. |
get_conversation |
Get a conversation with full message history |
update_conversation |
Set metadata on a conversation |
Contacts
| Tool | Description |
|---|---|
list_contacts |
List saved contacts (address book). Filter with a search term. |
manage_contact |
Create, update, or delete a contact (set action) |
Voice Calls
| Tool | Description |
|---|---|
list_calls |
List calls. Filter by agent_id, number_id, status, direction, or keyword. |
get_call |
Get call details and transcript |
make_call |
Place an outbound call (webhook-driven) |
make_conversation_call |
Place a call with built-in AI conversation — no webhook needed |
Agents
| Tool | Description |
|---|---|
list_agents |
List all agents with their numbers and voice config |
create_agent |
Create an agent with voice, system prompt, call transfer, voicemail, and voice tuning (speed, interruption sensitivity, backchannel, language, and more) |
update_agent |
Update an agent's configuration |
delete_agent |
Delete an agent (numbers are kept but unassigned) |
get_agent |
Get agent details including phone numbers and voice config |
attach_number |
Assign a phone number to an agent |
detach_number |
Remove a phone number from an agent |
list_voices |
List available voices for agents |
Webhooks
All webhook tools accept an optional agent_id — pass it to manage an agent-specific webhook, omit it for the project-level default. Agent webhooks take priority over project-level.
| Tool | Description |
|---|---|
get_webhook |
Get webhook configuration |
set_webhook |
Set a webhook URL for inbound messages and call events |
delete_webhook |
Remove a webhook |
test_webhook |
Send a test event to verify your webhook works |
list_webhook_deliveries |
View delivery history for debugging |
Environment Variables
| Variable | Required | Description |
|---|---|---|
AGENTPHONE_API_KEY |
stdio: yes, HTTP: no | Your AgentPhone API key (HTTP mode can use Authorization header instead) |
AGENTPHONE_BASE_URL |
No | Override the API base URL (defaults to https://api.agentphone.ai) |
PORT |
No | Port for HTTP mode (defaults to 3000, overridden by --port) |
Development
git clone https://github.com/AgentPhone-AI/agentphone-mcp.git
cd agentphone-mcp
npm install
npm run dev # Run with tsx (hot reload)
npm run build # Compile TypeScript
npm start # Run compiled JS (stdio)
How It Works
This MCP server connects your AI assistant to the AgentPhone API. Your assistant talks to the MCP server, which calls the AgentPhone API, which talks to the phone network.
Your AI Assistant <--> agentphone-mcp <--> AgentPhone API <--> Phone Network
Outbound: your assistant places calls and sends texts through AgentPhone's API.
Inbound: when someone calls or texts your number, AgentPhone sends a webhook event to your server — you can then respond programmatically or let your agent's built-in AI handle it.
License
MIT
Recommended MCP Servers
How it compares
Telephony integration MCP, not an inbound marketing dialer or CRM replacement.
FAQ
Who is AgentPhone MCP for?
Developers and small teams who want Claude Code or Cursor agents to use real phone numbers for SMS and voice during product development.
When should I use AgentPhone MCP?
While building features that require OTP texts, outbound notifications, or voice interactions before you ship to production users.
How do I add AgentPhone MCP to my agent?
Get an API key at agentphone.to, then add the remote MCP URL with Authorization Bearer YOUR_API_KEY or install npm agentphone-mcp and set AGENTPHONE_API_KEY for stdio.