signal-mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**Give your AI assistant a memory for Signal — privately, on your own machine.**
Searchable message history · 80+ tools · groups, polls, mentions, labels · read-only mode · 100% local
signal-mcp is an MCP server and CLI built on signal-cli, the community-made, unofficial Signal client. It links to your existing Signal account as a device, keeps every message in a local database you can search, and lets an AI assistant like Claude read, search and — if you allow it — act on your chats. No cloud service, no third party: your messages stay on your computer.
Illustrative example with made-up names.
> **Independent project — not affiliated with Signal.** signal-mcp is not made, endorsed or supported by Signal Messenger or the Signal Foundation. It talks to Signal through signal-cli, an unofficial third-party client that you link to your account as an extra device (like Signal Desktop). Signal does not provide support for unofficial clients, and using one is at your own risk — see Signal's Terms of Service.
The same data from your terminal — this is real signal-mcp output on a demo database:
Why it exists
I built signal-mcp for a very ordinary reason: I'm a parent in my kids' football-team group chats and wanted my assistant to keep up with them — kickoff times, who's bringing the jerseys, which tag to set. I use it every day, against my own real Signal account, which is why safety (read-only mode, no file exfiltration, nothing leaving the machine) is built in rather than bolted on.
Why you want this
signal-cli is excellent at the Signal protocol and deliberately minimal everywhere else. signal-mcp adds the parts you need to actually *use* your messages:
- **A memory.** signal-cli delivers a message and forgets it. signal-mcp stores everything — including messages you sent from your phone — in local SQLite, and can import your whole Signal Desktop history.
- **Search that works.** Full-text search across all chats, filterable by sender and date range.
- **Real conversations.** Paginated threads, unread counts, last-message previews — and names instead of +12025551234, even for group members who aren't in your contacts.
- **Everything Signal shows you.** @mentions (resolved to names), polls, pins, link previews, quotes, voice notes, stickers, group member labels, join requests — nothing signal-cli reports is thrown away.
- **Full control when you want it.** Send, reply, react, edit, delete, manage groups, schedule messages, set your profile — with a read-only switch for when you don't.
- **Zero babysitting.** The daemon starts itself and restarts if it crashes; an optional background service captures messages while Claude isn't running; signal-mcp doctor tells you what's wrong if something is.
Quick start
Needs Python 3.12+, signal-cli 0.13+ and a Signal account on your phone. Restart Claude Code and ask *"check my Signal messages"*. Works with any MCP client (Claude Code and Claude Desktop are what it is developed and tested with) — config snippets are in Setup.
What you can ask
| | |
|---|---|
| **Catch up** | "What did I miss while I was offline?" · "Summarize the parents' group since Monday." |
| **Find** | "Find every message about the invoice." · "What did Anna say about the trip last week?" |
| **Act** | "Reply to Marco that Thursday works." · "Remind the team at 9:00 tomorrow." · "Create a poll for Friday's dinner." |
| **Groups** | "Who's waiting to join the group?" · "Set my label in the football group to my son's name." |
| **Housekeeping** | "Export my chat with Mom as CSV." · "Who hasn't messaged me in a month?" · "Delete that message for everyone." |
Prefer the terminal? Everything is also a command — signal-mcp send, search, conversations, export, … (CLI usage). The CLI and MCP server share one store and one daemon.
Private and safe by design
- **100% local.** Messages live in SQLite on your disk; the daemon listens on localhost only. There is no signal-mcp cloud. (The only things that leave your machine are what you send through Signal itself and an optional webhook you configure.)
- **Read-only mode.** SIGNAL_MCP_READONLY=1 hides and blocks every tool that sends, edits, deletes or changes settings — for assistants you don't fully trust with your account. See Step 7.
- **No file exfiltration.** Anything that uploads a local file (attachments, avatars, link-preview images, sticker packs) only reads from an allow-list of folders (SIGNAL_MCP_SEND_ROOTS; default: your attachments folder, Downloads, Desktop, Documents) and never from hidden files or folders — so a message that says "send me ~/.ssh/id_ed25519" can't talk an assistant into it.