Send and receive Signal messages via signal-cli — MCP server plus setup and messaging-pattern skills.
npx claudepluginhub alexey-max-fedorov/signal-mcp --plugin signal-mcpThis skill should be used when the user asks to "send a Signal message", "reply on Signal", "react to a Signal message", "edit/delete a sent Signal message", "make Signal feel natural", "check who's on Signal", when handling received Signal envelopes (receipts, typing, reactions, decryption errors), or when an MCP tool returns `Unregistered user`, `IDENTITY_FAILURE`, `InvalidPreKeyException`, or other send/receive errors that aren't setup-related. Covers identifier resolution (phone vs username vs UUID), the receive-and-respond loop, human-feeling typing/receipt timing, sending to groups, attachments, and recovering from common errors.
This skill should be used when the user asks to "set up Signal", "install signal-cli", "register Signal account", "link Signal device", "configure SIGNAL_ACCOUNT", or when an MCP tool returns a `signal-cli not found` / `SIGNAL_ACCOUNT not set` / `unregistered account` error. Walks through installing signal-cli, picking between registering a new number and linking as a secondary device, completing verification, and configuring the plugin's environment variables.
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Memory compression system for Claude Code - persist context across sessions
Streamline people operations — recruiting, onboarding, performance reviews, compensation analysis, and policy guidance. Maintain compliance and keep your team running smoothly.
Permanent coding companion for Claude Code — survives any update. MCP-based terminal pet with ASCII art, stats, reactions, and personality.
Admin access level
Server config contains admin-level keywords
Share bugs, ideas, or general feedback.
A Claude Code plugin for Signal Messenger via signal-cli.
Bundles:
signal-mcp) wrapping signal-cli with tools for sending, receiving, reactions, typing indicators, receipts, contacts, groups, and profile management.signal-setup skill that walks through installing signal-cli and provisioning an account (link as secondary device or register a new number).signal-messaging skill covering identifier resolution, conversation pacing, error recovery, and the full envelope lifecycle.This plugin is distributed as a Claude Code marketplace at this repo. Add it as a marketplace and install:
/plugin marketplace add alexey-max-fedorov/signal-mcp
/plugin install signal-mcp
(Or clone the repo and load locally.)
uv — used to run the Python MCP server with no global install (deps declared inline via PEP 723).signal-cli — installed via the bundled signal-setup skill, or manually beforehand.Two env vars:
| Variable | Required | Default | Notes |
|---|---|---|---|
SIGNAL_ACCOUNT | yes | — | E.164 phone number of the registered account, e.g. +14155551212 |
SIGNAL_CLI_BIN | no | signal-cli | Absolute path if signal-cli isn't on PATH |
Set in your shell profile and restart Claude Code so the MCP server picks them up.
The MCP server registers these tools (Claude Code prefixes them; see them in /mcp after install):
| Tool | Purpose |
|---|---|
signal_check_setup | Verify install + account before doing anything else |
signal_send | Send text/attachments to phone, username, group, or self |
signal_receive | Pull pending envelopes from the server |
signal_send_typing | Start/stop typing indicators |
signal_send_receipt | Send read or viewed receipts |
signal_send_reaction | Emoji-react to a message |
signal_remote_delete | Delete a sent message for everyone |
signal_list_contacts | List known contacts (phone, UUID, profile name, username) |
signal_list_groups | List groups with members and invite links |
signal_list_accounts | List signal-cli's registered accounts |
signal_get_user_status | Check whether a phone/username is on Signal |
signal_update_profile | Set name, about, avatar |
signal_join_group | Join via invite URI |
signal_quit_group | Leave a group |
signal_block / signal_unblock | Block / unblock a contact or group |
signal_get_attachment | Download an attachment by id |
Skills auto-trigger on relevant phrases:
Both skills include reference docs (install per platform, registration, linking, identifiers, etiquette, troubleshooting) loaded on-demand.
.
├── .claude-plugin/
│ ├── plugin.json
│ └── marketplace.json
├── .mcp.json
├── mcp/
│ └── signal-mcp/
│ └── server.py # PEP 723 inline-deps Python script
├── skills/
│ ├── signal-setup/
│ │ ├── SKILL.md
│ │ ├── references/ # install-platforms, registration, linking
│ │ └── scripts/ # check-install.sh
│ └── signal-messaging/
│ ├── SKILL.md
│ └── references/ # identifiers, etiquette, troubleshooting
├── LICENSE
└── README.md
End-to-end encryption is enforced by Signal itself; this plugin doesn't change that. The MCP server runs locally, talks to signal-cli locally, and signal-cli talks to Signal's servers directly. No third party sees message content. Logs and data live under ~/.local/share/signal-cli/.
A few things to keep in mind when wiring this up to an autonomous assistant:
signal_send can attach any local file readable by the user. A prompt-injected agent could exfiltrate ~/.ssh/id_rsa or similar via a Signal attachment. Restrict tool permissions in Claude Code (/permissions) accordingly, and require human-in-the-loop confirmation for signal_send if running autonomously.SIGNAL_CLI_BIN overrides which binary runs; don't set it to anything you don't trust.Signal MCP License — noncommercial use only. See LICENSE for full terms. For commercial licensing contact alexey.max.fedorov@gmail.com.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claim