Skip to main content
Glama
NathanDai5287

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 build

Por 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.js

El 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

SIGNAL_MCP_DB

Ruta de la base de datos SQLCipher de Signal

%APPDATA%\Signal\sql\db.sqlite

SIGNAL_MCP_CONFIG

Ruta de config.json de Signal

%APPDATA%\Signal\config.json

SIGNAL_MCP_LOCAL_STATE

Ruta del Local State de Chromium de Signal

%APPDATA%\Signal\Local State

SIGNAL_MCP_KEY

Clave SQLCipher explícita de 64 caracteres

Recuperada con DPAPI

SIGNAL_MCP_MAX_MESSAGES

Límite máximo para una llamada de mensaje/búsqueda

200

SIGNAL_MCP_MAX_CONVERSATIONS

Límite máximo para el listado de conversaciones

100

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:

  1. Desprotege con DPAPI la clave maestra OSCrypt del usuario actual de Windows.

  2. Descifra en memoria la clave SQLCipher de Signal.

  3. Abre la base de datos con el nivel de compatibilidad 4 de SQLCipher.

  4. Activa el modo query_only de 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 build

El 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.

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