Skip to content

JulesBrookfield/signal-mcp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Signal MCP (Hardened Fork)

Fork Notice: This is a security-hardened fork of rymurr/signal-mcp with additional features inspired by signal-cli-rest-api.

An MCP integration for signal-cli that allows AI agents to send and receive Signal messages.

Security Hardening

This fork includes the following security improvements:

  1. Log level changed from DEBUG to INFO - Prevents sensitive message content and phone numbers from being logged
  2. Phone number validation - E.164 format validation prevents malformed inputs
  3. Timeout bounds - Maximum timeout capped at 300 seconds to prevent resource exhaustion
  4. MIT License added - Clear licensing terms

Features

Core Messaging

  • send_message_to_user - Send a direct message to a Signal user
  • send_message_to_group - Send a message to a Signal group
  • receive_message - Wait for and receive messages with timeout support (max 300s)
  • send_message_with_attachment - Send messages with file attachments

Device & Account Management

  • link_device - Generate QR code link URI to connect as secondary device to existing Signal account
  • check_signal_registration - Check if a phone number is registered with Signal

Contacts & Groups

  • list_contacts - List all contacts known to signal-cli
  • list_groups - List all Signal groups you are a member of

Reactions & Receipts

  • send_reaction - React to messages with emoji
  • send_read_receipt - Mark messages as read

Prerequisites

This project requires signal-cli to be installed and configured on your system.

Installing signal-cli

  1. Download signal-cli from the official releases

  2. Extract and add to PATH (e.g., C:\tools\signal-cli\bin)

Linking to Your Existing Signal Account

You don't need a new phone number! Signal-cli can link as a secondary device to your existing account (like Signal Desktop):

  1. Run the link command:

    signal-cli link --name "Claude MCP"
  2. This outputs a sgnl://linkdevice?uuid=... URI

  3. Convert to QR code (using any QR generator or qrencode on Linux)

  4. Open Signal on your phone → Settings → Linked Devices → + button → Scan QR code

  5. The MCP server can now send/receive messages on your behalf

Installation

cd signal-mcp
uv sync

Usage

Run the MCP server:

uv run python -m signal_mcp.main --user-id +YOUR_PHONE_NUMBER --transport stdio

Claude Desktop Configuration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "signal": {
      "command": "uv",
      "args": ["run", "python", "-m", "signal_mcp.main", "--user-id", "+YOUR_PHONE_NUMBER", "--transport", "stdio"],
      "cwd": "C:/path/to/signal-mcp"
    }
  }
}

Development

# Install dependencies
uv sync

# Run linting
uv run ruff check .

# Run type checking
uv run mypy .

License

MIT License - see LICENSE file.

Acknowledgments

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%