signal-mcp
signal-mcp
Сервер MCP на Node/TypeScript, который напрямую считывает зашифрованную базу данных SQLite приложения Signal Desktop и предоставляет более функциональные инструменты для запросов, чем оригинальный Python-сервер signal-mcp-server.
Только для чтения. База данных открывается с параметрами
readonly: trueиquery_only=ON. Сервер не может изменять данные Signal.
Требования
macOS с установленным Signal Desktop, в котором выполнен вход хотя бы один раз.
Node.js 20+.
При первом запуске вы увидите запрос macOS Keychain — подтвердите его (и установите флажок Всегда разрешать, если не хотите, чтобы вас спрашивали снова). Сервер считывает пароль
safeStorageприложения Signal из вашей связки ключей для расшифровки ключа SQLCipher.
Related MCP server: Cursor DB MCP Server
Установка
Вариант А — установка из GitHub (рекомендуется)
Установка глобально через npm. Скрипт prepare в репозитории автоматически запускает tsc, поэтому вам не нужен предварительно собранный dist/.
npm install -g git+https://github.com/jagypus/signal-mcp.gitЗатем зарегистрируйте его в Claude Code:
claude mcp add signal --scope user -- signal-mcpГотово. Откройте Claude Code и попробуйте: "List my Signal chats." (Список моих чатов Signal).
Для обновления в будущем:
npm install -g git+https://github.com/jagypus/signal-mcp.gitДля удаления:
claude mcp remove signal
npm uninstall -g signal-mcpВариант Б — клонирование и сборка (для разработки)
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"Вариант В — ручная настройка
Если вы предпочитаете редактировать конфигурацию MCP напрямую, добавьте это в конфигурацию серверов MCP для Claude Code (например, в блок mcpServers файла ~/.claude.json или в проектный файл .mcp.json):
{
"mcpServers": {
"signal": {
"command": "signal-mcp"
}
}
}…или для пути к клонированному репозиторию:
{
"mcpServers": {
"signal": {
"command": "node",
"args": ["/absolute/path/to/signal-mcp/dist/index.js"]
}
}
}Проверка
claude mcp listВы должны увидеть signal в списке. Перезапустите Claude Code, если он уже был запущен, а затем попросите его вывести список ваших чатов.
Инструменты
Инструмент | Назначение |
| Список переписок с метаданными последнего сообщения, с фильтрацией по группам/личным сообщениям, количеству сообщений и дате. |
| Запрос сообщений из разных чатов с фильтрацией по диапазону дат, отправителю и чатам. |
| Тот же набор фильтров, ограниченный одним чатом (по ID или имени). |
| Полнотекстовый поиск по телу сообщений. В случае неудачи переключается на |
| SQL-запросы в режиме только для чтения ( |
Все входные данные проверяются с помощью Zod. Временные метки представлены в формате ISO 8601.
Правила фильтрации
exclude_system(по умолчаниюtrue) оставляет толькоtype IN ('incoming','outgoing'), исключаяkeychange,profile-change,group-v2-change,timer-notificationи т. д.only_with_body(по умолчаниюtrue) исключает строки только с вложениями / реакциями / стикерами, гдеbody IS NULL.sender:me(исходящие),them(входящие),any(оба).
Разработка
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 DBКак происходит открытие БД
Signal Desktop на macOS хранит базу данных SQLCipher v4 по адресу ~/Library/Application Support/Signal/sql/db.sqlite. Современные версии Signal хранят ключ SQLCipher, зашифрованный в config.json в поле encryptedKey с использованием safeStorage Electron:
Удаление префикса
v10/v11→ шифротекст AES-128-CBC.Ключ шифрования = PBKDF2-HMAC-SHA1(пароль, "saltysalt", 1003 итерации, 16 байт).
На macOS
парольизвлекается черезsecurity find-generic-password -s "Signal Safe Storage" -a "Signal" -w(один запрос к связке ключей при первом запуске).IV составляет 16 байт
0x20.
Открытый текст — это 64-символьный шестнадцатеричный ключ SQLCipher. Также поддерживаются старые сборки Signal с открытым ключом key в config.json.
БД открывается с помощью better-sqlite3-multiple-ciphers в режиме readonly: true, а query_only=ON установлено в качестве дополнительной защиты. Открытие во время работы Signal Desktop проходит успешно, так как SQLCipher использует WAL.
Особенности поиска
messages_fts существует, но использует собственный signal_tokenizer от Signal, который регистрируется только нативным кодом Signal Desktop. Сторонние читатели не могут выполнять запросы MATCH к нему, поэтому search_messages выполняет одну проверку и молча переключается на body LIKE '%query%'.
Окружение
Переменная | Эффект |
| Переопределение стандартной директории данных Signal (полезно для фикстур). |
| 64-символьный шестнадцатеричный ключ SQLCipher, обходящий |
Кроссплатформенные примечания
macOS: поддерживается.
Linux:
safeStoragev10 использует парольpeanuts. v11 (libsecret/KWallet) не реализован — установитеSIGNAL_KEYявно.Windows: не реализовано — установите
SIGNAL_KEYявно.
Структура проекта
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 checkЛицензия
MIT — см. LICENSE.
Этот проект не связан с Signal Messenger LLC и не поддерживается ею. Signal Desktop распространяется по лицензии AGPL-3.0; данный проект не распространяет и не изменяет код Signal, он лишь считывает локальную базу данных SQLite, которую Signal Desktop создает на вашем компьютере.
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