This MCP server provides a tool to send messages via Signal using the existing SignalBot infrastructure.
- First, you need to have signal-cli running locally and have it signed in with your signal account: (Make sure you have docker installed)
-
Run:
cd signal chmod +x run_signal_cli.sh ./run_signal_cli.sh -
Choose 1 to run setup then go to this link and link new device using your signal mobile app: http://127.0.0.1:8080/v1/qrcodelink?device_name=local
-
Run the bash script again and choose 2 to have your signal-cli running. (Note: You need to use docker ps and docker kill to shut it down as it is running in detached mode)
./run_signal_cli.sh
-
Make sure you have the required dependencies installed: (We recommend uv for managing dependencies, install it from here)
uv sync
-
Ensure your
.envfile contains the required Signal configuration: Groups and contacts your bot to listen to your "hey goose" commandSIGNAL_SERVICE=127.0.0.1:8080 SIGNAL_ID=+your_phone_number GROUP_NAMES=group_name1,bitcoin core CONTACTS=+1124234355,+420121434534 -
Finally, change
path/to/signalin routstr_management.yaml to your actual path to this current directory. You can further modify the model and instructions in the same file to your liking.
Before using with Claude Desktop, you can test the functionality:
Run the direct test script to verify your Signal bot configuration:
cd signal/tests
python test_signal.pyThis will:
- Load your environment variables
- Show your configuration
- Send a test message to your configured group
- Report success or failure
Test the MCP server functionality:
cd signal/tests
python test_mcp_client.pyThis will:
- Start the MCP server
- List available tools
- Call the
send_signal_messagetool - Show the result
To start the MCP server:
python mcp_server.pySend a message via Signal bot.
Parameters:
message(required): The message to sendrecipient(optional): Phone number or group ID. If not provided, sends to the default group configured in environment variables.
Examples:
- Send to default group:
send_signal_message("Hello from MCP!") - Send to specific recipient:
send_signal_message("Hello!", "+1234567890")
To use this MCP server with other applications, configure your MCP client to connect to this server. The server provides the send_signal_message tool that can be called to send messages through Signal.
To add this MCP server to Claude Desktop:
-
Locate your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Add the server configuration:
{ "mcpServers": { "signal-bot": { "command": "python", "args": ["mcp_server.py"], "cwd": "/path/to/folder/signal" } } } -
Restart Claude Desktop for the changes to take effect.
-
Verify the connection: You should see the Signal MCP server listed in Claude Desktop's MCP servers section.
Once connected, you can use the tool in Claude Desktop like this:
- "Send a Signal message saying 'Hello from Claude!' to the default group"
- "Send 'Meeting in 10 minutes' via Signal to +1234567890"
The tool will automatically use your configured Signal bot settings from the .env file.
Note: Make sure your Signal service is running and accessible at the configured SIGNAL_SERVICE address before using the MCP server.