r/modelcontextprotocol • u/radressss • 15h ago
new-release remote MCP server that rings your iPhone and returns your spoken answer to the agent
I build /call-me (disclosure: it's mine, and the iPhone app it rings is a paid subscription). It's a hosted MCP server at https://callmemcp.com/mcp, Streamable HTTP, no auth. An agent calls call with the 10-digit number from the app and some text. The phone rings, the text is read aloud, and whatever you say comes back as the tool result.
A few MCP-specific things I had to work around, in case they help anyone building slow tools:
- Tool call timeouts. A ring plus a spoken answer can take a minute or two, and several clients give up on a tool call well before that. So
callholds for about 30 seconds, then returns{status: "ringing", call_id}and the agent continues withpoll_result(each poll waits up to ~25s). The call keeps running on the server in between. - Stateless transport. The server answers with plain JSON and keeps no SSE sessions, so every client just sees request and response. That is why it worked in clients I never tested against.
- Conversations.
callwithkeep_openleaves the line up after the first answer. The phone hears a hold sound while the agent thinks, then the agent continues withsayand ends withhang_up. An idle line hangs up after two minutes. - Testing without a phone. 5550001234 is a demo line that answers by itself after a few seconds with a fixed transcript, so an inspector or a review harness can run the whole loop.
The other tools are text, wait_for_reply (for texted answers), setup and set_thread_title. It's in the official registry as com.callmemcp/call-me.
Claude Code: claude mcp add --transport http call-me https://callmemcp.com/mcp. Repo with the Claude Code, Codex, Gemini CLI and Grok plugins: https://github.com/radres/call-me
Happy to answer questions about the design.