signal-mcp
signal-mcp
Ein Node/TypeScript MCP-Server, der die verschlüsselte SQLite-Datenbank von Signal Desktop direkt liest und umfangreichere Abfragewerkzeuge bereitstellt als der ursprüngliche Python signal-mcp-server.
Schreibgeschützt. Die Datenbank wird mit
readonly: trueundquery_only=ONgeöffnet. Der Server kann die Daten von Signal nicht verändern.
Anforderungen
macOS, mit installiertem Signal Desktop und mindestens einmal angemeldet.
Node.js 20+.
Beim ersten Start sehen Sie eine macOS-Schlüsselbund-Abfrage — bestätigen Sie diese (und aktivieren Sie Immer erlauben, falls Sie nicht erneut gefragt werden möchten). Der Server liest das Signal
safeStorage-Passwort aus Ihrem Anmelde-Schlüsselbund, um den SQLCipher-Schlüssel zu entschlüsseln.
Related MCP server: Cursor DB MCP Server
Installation
Option A — Installation von GitHub (empfohlen)
Globale Installation via npm. Das prepare-Skript des Repos führt tsc automatisch aus, sodass Sie kein vorgefertigtes dist/ benötigen.
npm install -g git+https://github.com/jagypus/signal-mcp.gitRegistrieren Sie es dann bei Claude Code:
claude mcp add signal --scope user -- signal-mcpDas war's. Öffnen Sie Claude Code und versuchen Sie: "List my Signal chats."
Zum späteren Aktualisieren:
npm install -g git+https://github.com/jagypus/signal-mcp.gitZum Entfernen:
claude mcp remove signal
npm uninstall -g signal-mcpOption B — Klonen und Bauen (für die Entwicklung)
git clone https://github.com/jagypus/signal-mcp.git
cd signal-mcp
npm install
npm run build
claude mcp add signal --scope user -- node "$(pwd)/dist/index.js"Option C — Manuelle Konfiguration
Wenn Sie Ihre MCP-Konfiguration lieber direkt bearbeiten möchten, fügen Sie dies zu Ihrer Claude Code MCP-Server-Konfiguration hinzu (z. B. mcpServers-Block in ~/.claude.json oder eine Projekt-.mcp.json):
{
"mcpServers": {
"signal": {
"command": "signal-mcp"
}
}
}…oder für den Pfad des geklonten Repos:
{
"mcpServers": {
"signal": {
"command": "node",
"args": ["/absolute/path/to/signal-mcp/dist/index.js"]
}
}
}Überprüfung
claude mcp listSie sollten signal in der Liste sehen. Starten Sie Claude Code neu, falls es bereits lief, und bitten Sie es dann, Ihre Chats aufzulisten.
Werkzeuge
Werkzeug | Zweck |
| Listet Unterhaltungen mit Metadaten zur letzten Nachricht auf, filterbar nach Gruppe/DM, Nachrichtenanzahl und Aktualität. |
| Nachrichtenabfrage über Chats hinweg mit Datumsbereich, Absender- und Chat-Filtern. |
| Gleicher Filtersatz, beschränkt auf einen einzelnen Chat (nach ID oder Name). |
| Volltextähnliche Suche über alle Nachrichtentexte. Fällt auf |
| Schreibgeschützter SQL-Durchgriff ( |
Alle Eingaben werden mit Zod validiert. Zeitstempel sind ISO 8601 ein-/ausgehend.
Filterregeln
exclude_system(Standardtrue) behält nurtype IN ('incoming','outgoing')bei und filtertkeychange,profile-change,group-v2-change,timer-notificationusw. heraus.only_with_body(Standardtrue) schließt Zeilen aus, die nur Anhänge / Reaktionen / Sticker enthalten, bei denenbody IS NULList.sender:me(ausgehend),them(eingehend),any(beide).
Entwicklung
git clone https://github.com/jagypus/signal-mcp.git
cd signal-mcp
npm install
npm run build # compile to dist/
npm run dev # tsx, stdio (no build step)
npm run probe # dump schema/FTS/types against the live DB
npx tsx scripts/smoke.ts # exercise every tool against the live DBWie die Datenbank geöffnet wird
Signal Desktop auf macOS speichert die SQLCipher v4-Datenbank unter ~/Library/Application Support/Signal/sql/db.sqlite. Moderne Signal-Versionen speichern den SQLCipher-Schlüssel verschlüsselt in config.json unter encryptedKey mittels Electrons safeStorage:
Entfernen des
v10/v11-Präfixes → AES-128-CBC-Geheimtext.Verschlüsselungsschlüssel = PBKDF2-HMAC-SHA1(Passwort, "saltysalt", 1003 Iterationen, 16 Bytes).
Unter macOS wird das
Passwortübersecurity find-generic-password -s "Signal Safe Storage" -a "Signal" -wabgerufen (eine Schlüsselbund-Abfrage beim ersten Mal).IV sind 16 Bytes von
0x20.
Der Klartext ist der 64-stellige hexadezimale SQLCipher-Schlüssel. Ältere Signal-Builds mit einem Klartext-key in config.json werden ebenfalls unterstützt.
Die Datenbank wird mit better-sqlite3-multiple-ciphers im Modus readonly: true geöffnet und query_only=ON ist als zusätzliche Absicherung gesetzt. Das Öffnen während Signal Desktop läuft funktioniert problemlos, da SQLCipher WAL verwendet.
Such-Einschränkung
messages_fts existiert, verwendet aber den benutzerdefinierten signal_tokenizer von Signal, der nur vom nativen Code von Signal Desktop registriert wird. Reader von Drittanbietern können keine MATCH-Abfragen dagegen ausführen, daher prüft search_messages dies einmal und fällt stillschweigend auf body LIKE '%query%' zurück.
Umgebung
Variable | Effekt |
| Überschreibt das Standard-Signal-Datenverzeichnis (nützlich für Fixtures). |
| 64-stelliger hexadezimaler SQLCipher-Schlüssel, um |
Plattformübergreifende Hinweise
macOS: unterstützt.
Linux:
safeStoragev10 verwendet das wörtliche Passwortpeanuts. v11 (libsecret/KWallet) ist nicht implementiert — setzen SieSIGNAL_KEYexplizit.Windows: nicht implementiert — setzen Sie
SIGNAL_KEYexplizit.
Projektstruktur
src/
index.ts # MCP server bootstrap
db.ts # connection + safeStorage key decryption
schema.ts # zod input shapes
util/
time.ts # iso <-> ms
messages.ts # row shaping, display name resolution
sql.ts # shared filter SQL
tools/
listChats.ts
getRecentMessages.ts
getChatMessages.ts
searchMessages.ts
querySql.ts
scripts/
probe.ts # live-DB schema dump
smoke.ts # live-DB end-to-end checkLizenz
MIT — siehe LICENSE.
Dieses Projekt ist nicht mit Signal Messenger LLC verbunden oder von dieser unterstützt. Signal Desktop selbst ist unter AGPL-3.0 lizenziert; dieses Projekt verbreitet oder modifiziert keinen Signal-Code, es liest lediglich die lokale SQLite-Datenbank, die Signal Desktop auf Ihrem eigenen Rechner erstellt.
This server cannot be deployed
Maintenance
Related MCP Connectors
Explore your Messages SQLite database to browse tables and inspect schemas with ease. Run flexible…
Explore, query, and inspect SQLite databases with ease. List tables, preview results, and view det…
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides read-only access to local Beeper message history on macOS, enabling users to search conversations, read messages, and list recent chats through natural language queries. Supports both SQLite and IndexedDB storage formats with privacy-focused local-only operation.1-
- AlicenseNot gradedqualityDmaintenanceEnables querying, searching, and analyzing Cursor IDE conversation history from SQLite workspaceStorage databases. Supports exporting chat data in multiple formats and provides workspace utilities for managing conversation data across projects.MIT
- AlicenseNot gradedqualityDmaintenanceEnables reading, searching, and sending iMessages directly from MCP-compatible clients by accessing the local macOS iMessage database, supporting conversations, attachments, and both individual and group chats.1,108 npm10MIT
- AlicenseAqualityAmaintenanceProvides read-only access to local iMessage databases on macOS for searching message history and analyzing conversation patterns. It includes 25 tools to explore contacts, attachments, reaction statistics, and messaging trends through natural language queries.261,108 npm25MIT