signal-mcp
signal-mcp
Un servidor local de solo lectura del Model Context Protocol para los mensajes de Signal Desktop.
Proporciona a un agente compatible con MCP cuatro herramientas de alcance muy limitado:
signal_list_conversations— encontrar conversaciones directas y de grupo recientes sin devolver los cuerpos de los mensajes.signal_get_messages— recuperar una ventana cronológica acotada de una conversación exacta.signal_search_messages— búsqueda literal de subcadenas, opcionalmente acotada por conversación y tiempo.signal_get_message— recuperar un mensaje exacto con los metadatos de la cita y de los archivos adjuntos.
El servidor nunca envía mensajes ni escribe en la base de datos de Signal. Se ejecuta localmente a través de stdio y no tiene ningún listener HTTP.
Aviso importante de privacidad
Este servidor puede exponer tu historial privado de Signal al host y modelo de MCP al que lo conectes. Revisa la política de tratamiento de datos de ese host, mantén las solicitudes con un alcance reducido y no configures este servidor para agentes en los que no confíes.
La base de datos local de Signal Desktop es un detalle de implementación, no una API pública. Las actualizaciones del esquema de Signal pueden romper temporalmente este proyecto. Este proyecto no es oficial y no está afiliado ni respaldado por Signal Messenger LLC.
Related MCP server: msteams-local-mcp
Soporte actual
Windows
Signal Desktop instalado para el mismo usuario de Windows
Node.js 20 o superior
Hosts MCP locales con stdio
Actualmente se requiere Windows para la recuperación automática de la clave porque Signal protege la clave maestra OSCrypt de Chromium con las credenciales DPAPI del usuario actual.
Instalación
git clone https://github.com/NathanDai5287/signal-mcp.git
cd signal-mcp
npm install
npm run buildPor defecto, el servidor detecta Signal en %APPDATA%\Signal. Normalmente no se necesita configuración.
Para probar la conexión sin configurar un host de MCP:
npx @modelcontextprotocol/inspector node dist/src/index.jsEl Inspector puede llamar a herramientas que devuelven mensajes privados reales. Trata la sesión de navegador del Inspector en consecuencia.
Configuración del host de MCP
Compila el proyecto y, a continuación, configura tu host para que lance el punto de entrada compilado con una ruta absoluta:
{
"mcpServers": {
"signal": {
"command": "node",
"args": ["C:\\path\\to\\signal-mcp\\dist\\src\\index.js"]
}
}
}Reinicia el host después de cambiar su configuración de MCP. La ubicación exacta del archivo de configuración depende del host.
Configuración opcional
Las variables de entorno se pasan a través de la configuración del servidor del host de MCP:
Variable | Propósito | Por defecto |
| Ruta de la base de datos SQLCipher de Signal |
|
| Ruta de |
|
| Ruta del |
|
| Clave SQLCipher explícita de 64 caracteres | Recuperada con DPAPI |
| Límite máximo para una llamada de mensaje/búsqueda |
|
| Límite máximo para el listado de conversaciones |
|
Evita poner SIGNAL_MCP_KEY en un archivo confirmado. En Windows es preferible la recuperación automática.
Cómo funciona el acceso a la base de datos
Signal Desktop guarda una clave SQLCipher cifrada con AES-256-GCM en config.json. Su clave de envoltura está en el Local State de Chromium, protegida con DPAPI de Windows. Al iniciarse, este servidor:
Desprotege con DPAPI la clave maestra OSCrypt del usuario actual de Windows.
Descifra en memoria la clave SQLCipher de Signal.
Abre la base de datos con el nivel de compatibilidad 4 de SQLCipher.
Activa el modo
query_onlyde SQLite antes de atender cualquier llamada a una herramienta.
La clave nunca se imprime, ni se devuelve a través de MCP, ni este proyecto la persiste.
Todas las entradas de búsqueda son parámetros SQL enlazados. %, _ y \ se escapan para que los términos de búsqueda sean subcadenas literales en lugar de patrones SQL controlados por quien llama. Todos los conjuntos de resultados están limitados.
Datos devueltos
Los resultados de mensajes pueden contener:
identificadores de mensaje y conversación de Signal
marcas de tiempo en milisegundos
dirección entrante/saliente
ID de servicio y nombre para mostrar del remitente
cuerpo del mensaje
texto desnormalizado de la respuesta citada
metadatos de los archivos adjuntos y disponibilidad de descarga local
Este hito no descifra ni devuelve los bytes de los archivos adjuntos, no crea un archivo duradero, no realiza búsquedas semánticas ni envía mensajes. Los mensajes efímeros que Signal ya ha eliminado no se pueden recuperar.
Desarrollo
npm test
npm run check
npm run buildEl conjunto de pruebas utiliza un lector simulado en memoria y no accede a tus datos de Signal. Aún se requiere una prueba de humo local manual para detectar cambios en el esquema privado de la base de datos de Signal.
El registro operativo se envía a stderr porque stdout está reservado para el tráfico MCP JSON-RPC.
Seguridad
Por favor, no abras incidencias públicas que contengan texto de mensajes, archivos de base de datos, claves, IDs de servicio, números de teléfono o rutas locales. Consulta SECURITY.md para obtener instrucciones sobre cómo notificar vulnerabilidades de forma privada.
Licencia
El código fuente del proyecto tiene licencia MIT. Las dependencias conservan sus propias licencias; en particular, @signalapp/sqlcipher se distribuye bajo AGPL-3.0-only.
This server cannot be deployed
Maintenance
Related MCP Connectors
Explore your Messages SQLite database to browse tables and inspect schemas with ease. Run flexible…
Read-only MCP access to authorized Vocci sessions, notes, files, and memory search.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Hosted MCP messaging across owners, tools, and machines, with readable transcripts.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables 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
- AlicenseBqualityBmaintenanceReads the local Microsoft Teams (v2) message cache and exposes it over MCP, enabling AI assistants to list accounts/conversations and search/read messages without Graph API or network.83MIT
- AlicenseAqualityCmaintenanceA 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.5MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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