Skip to main content
Glama
NathanDai5287

signal-mcp

signal-mcp

Локальный сервер Model Context Protocol для сообщений Signal Desktop, доступный только для чтения.

Он предоставляет MCP-совместимому агенту четыре узкоспециализированных инструмента:

  • signal_list_conversations — поиск недавних личных и групповых бесед без возврата текста сообщений.

  • signal_get_messages — получение ограниченного хронологического окна из одной конкретной беседы.

  • signal_search_messages — буквальный поиск по подстроке, опционально ограниченный беседой и временем.

  • signal_get_message — получение одного конкретного сообщения с метаданными цитаты и вложений.

Сервер никогда не отправляет сообщения и ничего не записывает в базу данных Signal. Он работает локально через stdio и не имеет HTTP-слушателя.

Важное предупреждение о конфиденциальности

Этот сервер может раскрыть вашу приватную историю Signal любому MCP-хосту и модели, к которым вы его подключаете. Изучите политику обработки данных этого хоста, держите запросы узконаправленными и не настраивайте этот сервер для агентов, которым вы не доверяете.

Локальная база данных Signal Desktop — это деталь реализации, а не публичный API. Обновления схемы Signal могут временно нарушить работу этого проекта. Этот проект является неофициальным и не аффилирован с Signal Messenger LLC и не одобрен ею.

Related MCP server: msteams-local-mcp

Текущая поддержка

  • Windows

  • Signal Desktop, установленный для того же пользователя Windows

  • Node.js 20 или новее

  • Локальные MCP-хосты со stdio

В настоящее время для автоматического восстановления ключа требуется Windows, поскольку Signal защищает свой главный ключ OSCrypt в Chromium с помощью учётных данных DPAPI текущего пользователя.

Установка

git clone https://github.com/NathanDai5287/signal-mcp.git
cd signal-mcp
npm install
npm run build

По умолчанию сервер обнаруживает Signal в каталоге %APPDATA%\Signal. Обычно конфигурация не требуется.

Чтобы проверить подключение без настройки MCP-хоста:

npx @modelcontextprotocol/inspector node dist/src/index.js

Inspector может вызывать инструменты, возвращающие реальные личные сообщения. Относитесь к его сеансу в браузере соответствующим образом.

Конфигурация MCP-хоста

Соберите проект, затем настройте ваш хост на запуск скомпилированной точки входа с абсолютным путём:

{
  "mcpServers": {
    "signal": {
      "command": "node",
      "args": ["C:\\path\\to\\signal-mcp\\dist\\src\\index.js"]
    }
  }
}

Перезапустите хост после изменения его конфигурации MCP. Точное расположение файла конфигурации зависит от хоста.

Необязательная конфигурация

Переменные окружения передаются через конфигурацию сервера MCP-хоста:

Переменная

Назначение

Значение по умолчанию

SIGNAL_MCP_DB

Путь к базе данных SQLCipher Signal

%APPDATA%\Signal\sql\db.sqlite

SIGNAL_MCP_CONFIG

Путь к config.json Signal

%APPDATA%\Signal\config.json

SIGNAL_MCP_LOCAL_STATE

Путь к Local State (Chromium) Signal

%APPDATA%\Signal\Local State

SIGNAL_MCP_KEY

Явный 64-символьный ключ SQLCipher

Восстанавливается с помощью DPAPI

SIGNAL_MCP_MAX_MESSAGES

Жёсткий предел для вызова сообщений/поиска

200

SIGNAL_MCP_MAX_CONVERSATIONS

Жёсткий предел для вывода списка бесед

100

Избегайте размещения SIGNAL_MCP_KEY в файле, попадающем в коммит. На Windows предпочтительно автоматическое восстановление.

Как работает доступ к базе данных

Signal Desktop хранит ключ SQLCipher, зашифрованный AES-256-GCM, в config.json. Его ключ обёртывания находится в Local State Chromium и защищён с помощью Windows DPAPI. При запуске этот сервер:

  1. Снимает защиту DPAPI с главного ключа OSCrypt для текущего пользователя Windows.

  2. Расшифровывает ключ SQLCipher Signal в памяти.

  3. Открывает базу данных с уровнем совместимости SQLCipher 4.

  4. включает режим SQLite query_only перед обработкой любых вызовов инструментов.

Ключ никогда не выводится, не возвращается через MCP и не сохраняется этим проектом.

Все поисковые входные данные привязываются как SQL-параметры. %, _ и \ экранируются, поэтому поисковые запросы являются литеральными подстроками, а не управляемыми вызывающей стороной SQL-шаблонами. Каждый набор результатов ограничен.

Возвращаемые данные

Результаты по сообщениям могут содержать:

  • идентификаторы сообщений и бесед Signal

  • временные метки в миллисекундах

  • направление «входящее/исходящее»

  • service ID отправителя и отображаемое имя

  • текст сообщения

  • денормализованный текст цитируемого ответа

  • метаданные вложений и доступность локального скачивания

Эта версия не расшифровывает и не возвращает байты вложений, не создаёт долговременный архив, не выполняет семантический поиск и не отправляет сообщения. Исчезающие сообщения, которые Signal уже удалил, восстановить невозможно.

Разработка

npm test
npm run check
npm run build

Тестовый набор использует фиктивный читатель в памяти и не обращается к вашим данным Signal. Для обнаружения изменений в приватной схеме базы данных Signal по-прежнему требуется ручной локальный смоук-тест.

Операционное журналирование выводится в stderr, поскольку stdout зарезервирован для трафика MCP JSON-RPC.

Безопасность

Пожалуйста, не открывайте публичные issues, содержащие текст сообщений, файлы баз данных, ключи, service ID, номера телефонов или локальные пути. Рекомендации по приватному сообщению об уязвимостях см. в SECURITY.md.

Лицензия

Исходный код проекта распространяется по лицензии MIT. Зависимости сохраняют собственные лицензии; в частности, @signalapp/sqlcipher распространяется по лицензии AGPL-3.0-only.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying Signal Desktop chats and messages by reading the encrypted SQLite database directly, providing tools for listing chats, searching messages, and running read-only SQL queries.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A read-only MCP server that lets AI search a user's own LINE Desktop chat history on macOS, providing tools to list chats, retrieve messages, and search conversations directly from the local encrypted database.
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to read the entire Apple Messages (iMessage/SMS) history on a Mac through a read-only, batched tool that supports listing chats, retrieving transcripts, polling recent messages, and searching message bodies via REST or streamable HTTP MCP.
    MIT