Connects AI agents to Signal for local messaging, history search, contacts, groups, attachments, and account management.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
This server is confirmed live โ we successfully called its tools/list endpoint directly (see the verified badge above). We haven't yet sandbox-tested the stdio install command below specifically, which is a separate, ongoing check.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Signal MCP.
send_messageSend a text message to a Signal contact. The message is delivered end-to-end encrypted. Returns the sent timestamp, which can be used as target_timestamp for react_to_message or edit_message. To reply/quote a specific message, provide quote_author and quote_timestamp (get timestamps from get_conversation). Use send_group_message for group chats, send_attachment for files/images.
send_group_messageSend a text message to a Signal group. The message is delivered end-to-end encrypted to all group members. Returns the sent timestamp, which can be used as target_timestamp for react_to_message or edit_message. To @mention a member, include their name in the message text and pass a mentions list where each entry has start (character index of the mention in the text), length (character count), and author (E.164 phone number). To reply/quote a message, provide quote_author (sender's phone number) and quote_timestamp (from get_conversation). Use list_groups to get group_id values. Use send_group_attachment to send files or images to a group. Do NOT use for direct messages to a contact โ use send_message instead.
send_note_to_selfSend a note to yourself via Signal's 'Note to Self' / saved messages feature. The note is synced across all your linked Signal devices. Useful for saving reminders, bookmarks, or drafts that sync to your phone. message supports lightweight markdown for Signal's native rich text: **bold**, ~~strikethrough~~, `monospace` โ use it to visually distinguish different kinds of notes (e.g. a bold title per note) instead of plain text blobs. Pass attachments (e.g. a QR code image) and quote_author/quote_timestamp (to thread a follow-up under a previous note, from a prior send_note_to_self result) to combine content in one message instead of separate calls.
edit_messageEdit the text of a previously sent message. Sends the edit via signal-cli to all original recipients; they see the updated text inline with an '(edited)' label. Only the message text can be modified โ attachments, quoted replies, and reactions are immutable. The edit must reference the exact timestamp of the original message as returned by send_message or get_conversation. Edits can only be made to messages you sent; editing someone else's message returns an error. There is no enforced time limit, but Signal clients may ignore edits on very old messages. Provide recipient for a DM edit or group_id for a group edit; exactly one is required. Use when correcting a typo or updating information in a message you already sent. Do NOT use to change who a message was sent to โ send a new message instead.
receive_messagesManually poll signal-cli for new messages and store them. Prefer get_unread โ it does this automatically and returns results in one call. Use receive_messages only if you want to poll without reading results.
receive_directReceive messages by calling signal-cli directly, bypassing the daemon. Use this as a fallback when the daemon is stuck or unresponsive โ it stops the daemon, calls signal-cli receive directly, then lets the daemon restart. Prefer receive_messages (daemon mode) for normal use; use this only for troubleshooting.
The googlarz/signal-mcp MCP server connects an MCP client to a locally linked Signal account through signal-cli. It supports direct messages, group messages, notes to self, file and image attachments, quoted replies, message edits, emoji reactions, typing indicators, and read-state operations. Group tools use Signal group IDs, while direct-message tools use a contact's phone number.
Beyond sending and receiving, the server provides local conversation management. Agents can list contacts, groups, devices, and conversations; retrieve recent history; search stored message text; inspect unread messages; and view local storage statistics. Contact profiles, blocking, device linking, profile updates, group administration, and desktop-history synchronization are also covered by the available operations.
signal-cli handles communication with the Signal network. The MCP layer adds a persistent local SQLite store, including an FTS5 full-text index for keyword and phrase searches. Messages received or sent through the linked account can remain available after a process restart, and names from the local contact and group stores are used in returned data where available.
Normal message retrieval uses the local daemon and store. get_unread can poll signal-cli when needed, while receive_direct is intended as a fallback if the daemon is unresponsive. A separately installed background service can keep polling for incoming messages on macOS or Linux. Signal Desktop history can be imported or incrementally synchronized when the required desktop database decryption support is available.
Install signal-cli separately and make it available on the system. Link an existing Signal account with signal-cli link, then scan the displayed QR code from Signal on a phone. Install the Python package with uv tool install signal-mcp, pip install signal-mcp, or pipx install signal-mcp.
The MCP process can be started with signal-mcp serve. The README also provides a client configuration using uvx signal-mcp serve, including a Claude Desktop configuration. The server shares its store and daemon with the command-line interface, which can be used for status checks, exports, service installation, and other local operations.
Optional setup includes signal-mcp install-service for background capture and signal-mcp import-desktop for a one-time Signal Desktop history import. Desktop import requires sqlcipher; macOS may request Keychain access, while Linux uses libsecret or GNOME Keyring.
The googlarz/signal-mcp MCP server includes tools for:
File paths for attachments and profile images must exist on the local filesystem. Message timestamps returned by sending or history tools are used to target edits, reactions, and quoted replies. Direct and group operations use different parameters, so an agent should select the matching tool rather than reuse a direct-message tool for a group.
The server depends on signal-cli and a linked Signal account; it is not a hosted Signal gateway. Stored searches cover messages available in the local store, not messages that were never received by the device. Reading conversation history marks messages as read in the local store but does not itself send a Signal read receipt.
Signal Desktop synchronization is supported for macOS and Linux according to the provided setup notes and requires sqlcipher. Linking a device grants access to the Signal account, so device-link URIs should be treated as sensitive. View-once behavior applies to supported media and does not apply to document types when sending group attachments.
Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/googlarz-signal-mcp)<a href="https://allmcps.com/mcp/googlarz-signal-mcp"><img src="https://allmcps.com/api/badge/googlarz-signal-mcp?style=directory" alt="Signal MCP on AllMCPs" /></a>