Skip to main content

Signal MCP

Signal MCP is an MCP (Model Context Protocol) server that lets AI agents send and receive Signal messages through signal-cli.

What it does

  • Send messages to Signal users and groups
  • Receive and parse incoming messages, including emoji reactions
  • Claude Channel mode — push incoming messages to Claude in real time without polling
  • Prefix filtering — only forward tagged messages in channel mode
  • Async-first — built on Python asyncio with timeout handling

Architecture

Signal MCP is a thin JSON-RPC client for a long-running signal-cli daemon. Instead of spawning a fresh JVM per request, it connects to a persistent daemon over TCP. That daemon holds the Signal account lock for its lifetime, so:

  • calls are instant (no ~2-3s JVM cold start each time)
  • concurrent callers no longer fight over the signal-cli account lock

Quick start

# 1. Install straight from GitHub — no clone needed (puts signal-mcp on your PATH)
uv tool install git+https://github.com/joestump/signal-mcp

# 2. Start the signal-cli daemon (its -a is the ACCOUNT — the number it runs as)
signal-cli -a YOUR_PHONE_NUMBER daemon --tcp 127.0.0.1:7583 \
--receive-mode on-start --no-receive-stdout

# 3. Run the MCP server (--operator is who it messages; account defaults to operator)
signal-mcp --operator YOUR_PHONE_NUMBER --transport stdio

Ready to dive in? Check the installation guide.