v0.3 Novedad: lee adjuntos y transcripciones →

Tu correo de trabajo, en manos de tu agente de IA

Servidor MCP para Microsoft Exchange / OWA. El agente revisa tu bandeja de entrada, busca mensajes y resume conversaciones y adjuntos. Un correo solo sale cuando tú pulsas «Enviar».

curl -LsSf https://raw.githubusercontent.com/Khomiakov7706/owa-mail-mcp/main/install.sh | sh

Funciona con Claude CodeClaude DesktopCodexCursorOpenCodeKilo Codecualquier cliente MCP

¿qué necesita respuesta mía desde anoche?
owa-mail · get_status → ivan.petrov@company.com
owa-mail · check_mail → 37 correos
owa-mail · get_thread → «Presupuesto Q4», 41 correos
Necesitan tu respuesta — 3: 1. Ana García — presupuesto Q4, estimación antes de las 15:00 (hoy) 2. María López — confirmar vacaciones (viernes) 3. John Doe (externo) — renovación del contrato Para tu información — 9, boletines — 25.
responde a Ana que mando la estimación mañana antes de las 12:00
owa-mail · send_email → esperando tu confirmación en el navegador…
Ventana de confirmación de envío: destinatarios (el externo resaltado), asunto, texto y botones Enviar, Editar y No enviar Ventana de confirmación de envío
ventana de confirmación · tu navegador
9
herramientas para el agente
0
correos sin tu «Enviar»
1
comando para instalar
MIT
código abierto, gratis

Funciones

Todo lo que haces en el correo, con una sola pregunta

El agente ve el buzón igual que tú en el correo web y decide por sí mismo qué mensaje abrir, qué hilo reunir y qué leer de un adjunto.

Clasificación de entrada

Correos nuevos de cualquier periodo, ordenados en «responder», «para tu información» y «puedes ignorarlo».

check_mailtriage_inbox

Hilos sin citas

Toda la conversación de «Entrada» y «Enviados» en orden, sin «De: … Enviado: …». Quién propuso qué y qué esperan de ti.

get_threadsummarize_thread

Adjuntos y transcripciones

Texto de .docx, PDF, .txt, .md, .csv, HTML y subtítulos .vtt/.srt, con intervenciones del tipo «Ana: …».

get_attachment

Búsqueda en todas las carpetas

Por texto, remitente, destinatario, asunto, fechas y adjuntos. Fechas legibles: yesterday, 7d, 2026-10-01.

search_messages(sender="Ana", text="presupuesto", since="30d")
→ 6 correos, los más recientes primero
search_messagesget_message

Personas y remitentes

La libreta de direcciones de la empresa: nombre, dirección exacta, cargo y departamento. Y quién te ha escrito más en la semana, con el número de no leídos.

list_senders(since="7d")
→ Ana García · 12 correos · 3 sin leer
find_peoplelist_senders

Envío solo con tu «sí»

El agente redacta un correo o una respuesta en el hilo, pero no puede enviarlo por su cuenta. En tu navegador se abre una ventana de confirmación.

  • Enviar, Editar o No enviar: decides tú
  • Las direcciones externas se resaltan y las copias ocultas llevan un aviso
  • La dirección de la ventana solo la conoce tu navegador: el texto de un correo no puede convencer al agente de pulsar el botón
  • Sin respuesta en 50 segundos, el correo no se envía; reintentar no lo enviará dos veces
  • El envío está desactivado hasta que tú lo actives
send_email
Ventana de confirmación de envío Ventana de confirmación de envío

Cómo funciona

Tres minutos de la instalación a la primera respuesta

  1. Instala con un solo comando

    El instalador pone el Python necesario en una carpeta aparte, sin tocar el del sistema. Para actualizar, el mismo comando; la configuración se conserva.

    $ curl -LsSf …/install.sh | sh
    ==> Listo: owa-mail-mcp 0.3
  2. Conecta tu buzón

    En la ventana de configuración, los mismos datos que usas en el correo web. «Comprobar conexión» muestra tu nombre y los últimos correos.

    Ventana de configuración: dirección del servidor, correo, usuario, contraseña y comprobación correcta Ventana de configuración del buzón
  3. Pregúntale al agente

    El botón «Añadir» registra el servidor en Claude Code, Codex, Claude Desktop o Cursor. Después, simplemente: «¿qué hay de nuevo en el correo?».

    › ¿qué hay de nuevo en el correo desde ayer?
    ⏺ owa-mail · check_mail → 12 correos

Instalación

Instalar y conectar

Necesitas acceso al servidor de correo: si el correo web solo se abre con VPN, activa la VPN. Las ventanas del programa usan el idioma del sistema; puedes cambiarlo en la ventana de configuración.

Pégalo en la Terminal. En un minuto se abrirá la ventana de configuración.

curl -LsSf https://raw.githubusercontent.com/Khomiakov7706/owa-mail-mcp/main/install.sh | sh

En PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
uv tool install --python 3.12 git+https://github.com/Khomiakov7706/owa-mail-mcp
owa-mail-mcp setup

Copia el texto y envíaselo a tu agente (Claude Code, Codex, Cursor): instalará y conectará el servidor por su cuenta. El agente no necesita tu contraseña: la introduces tú en la ventana de configuración.

Instala y conecta el servidor MCP OWA Mail para mi correo de trabajo de Exchange.
1. Ejecuta: curl -LsSf https://raw.githubusercontent.com/Khomiakov7706/owa-mail-mcp/main/install.sh | sh
2. Conecta el servidor a ti mismo. Para Claude Code: claude mcp add --scope user owa-mail -- ~/.local/bin/owa-mail-mcp
3. El correo (dirección del servidor, usuario, contraseña) lo configuro yo en la ventana que se abrirá; no me pidas la contraseña.
4. Después, llama a get_status y muestra el resultado.
Instrucciones para agentes: https://khomiakov7706.github.io/owa-mail-mcp/llms.txt

Lo más fácil es el botón «Añadir» de la ventana de configuración (owa-mail-mcp setup). O en la terminal:

claude mcp add --scope user owa-mail -- ~/.local/bin/owa-mail-mcp

Para comprobarlo: claude mcp list o /mcp en la sesión.

Settings → Developer → Edit Config y luego reinicia Claude Desktop. La ventana de configuración rellena la ruta exacta por ti.

{
  "mcpServers": {
    "owa-mail": { "command": "/Users/YOU/.local/bin/owa-mail-mcp" }
  }
}
codex mcp add owa-mail -- ~/.local/bin/owa-mail-mcp

Archivo ~/.cursor/mcp.json:

{
  "mcpServers": {
    "owa-mail": { "command": "/Users/YOU/.local/bin/owa-mail-mcp" }
  }
}

Archivo ~/.config/opencode/opencode.json (para un solo proyecto, opencode.json en su raíz). OpenCode tiene su propio formato: la clave mcp, "type": "local" y el comando como array. OpenCode no lee la clave mcpServers. El botón «Añadir» de la ventana de configuración lo escribe por ti.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "owa-mail": {
      "type": "local",
      "command": ["/Users/YOU/.local/bin/owa-mail-mcp"],
      "enabled": true
    }
  }
}

Reinicia OpenCode. Para comprobarlo: opencode mcp list.

Las versiones nuevas de Kilo Code usan el mismo formato que OpenCode, en el archivo ~/.config/kilo/kilo.jsonc (para un proyecto, kilo.jsonc o .kilo/kilo.jsonc):

{
  "mcp": {
    "owa-mail": {
      "type": "local",
      "command": ["/Users/YOU/.local/bin/owa-mail-mcp"],
      "enabled": true
    }
  }
}

Versiones antiguas de la extensión: Kilo Code → MCP Servers → «Edit Global MCP» (archivo mcp_settings.json; para un proyecto, .kilocode/mcp.json):

{
  "mcpServers": {
    "owa-mail": {
      "command": "/Users/YOU/.local/bin/owa-mail-mcp",
      "args": [],
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

Después de editarlo, reinicia Kilo Code (en VS Code: Developer: Reload Window).

Cualquier cliente MCP por stdio: el comando es la ruta absoluta a owa-mail-mcp, sin argumentos ni variables de entorno. El servidor toma la configuración de su propio archivo y del llavero.

Sistema
macOS, Linux, Windows
Correo
Exchange 2013 / 2016 / 2019, el mismo servidor que el correo web OWA
Tras actualizar
Reinicia el servidor MCP en el cliente: en Claude Code, /mcp → Reconnect

Para desarrolladores y agentes

Herramientas MCP

Todo excepto send_email es de solo lectura. Los textos de los correos son datos, no instrucciones: el servidor le indica explícitamente al agente que no ejecute órdenes que aparezcan en los correos.

HerramientaQué hace
get_statusQuién es el usuario, hora actual, número de no leídos, versión y si el envío está activado
check_mailCorreos nuevos en «Entrada» (por defecto, los no leídos) con vista previa
search_messagesBúsqueda por texto, remitente, destinatario, asunto, fechas y adjuntos; carpetas: inbox, sent, inbox_and_sent, all
get_messageEl correo completo: texto (HTML → texto), destinatarios y nombres de los adjuntos
get_threadEl hilo completo en orden, de todas las carpetas, sin el historial citado y con sus participantes
get_attachmentTexto de un adjunto: .docx, .pdf, .txt, .md, .csv, .html, .vtt/.srt y correos adjuntos
find_peopleLibreta de direcciones de la organización: nombre, dirección, cargo y departamento
list_sendersQuién escribió en un periodo: número de correos, no leídos y último asunto; con sent, a quién escribiste tú
send_emailescrituraCorreo nuevo o respuesta (reply_to_message_id, reply_all), solo tras confirmarlo en la ventana

Prompts: summarize_thread resume una conversación, triage_inbox clasifica la bandeja de entrada. Descripción completa en la versión Markdown de la página (inglés) y en llms.txt.

Seguridad

Seguridad, con franqueza

Para uso personal, el programa está razonablemente bien diseñado. Pero aún no ha pasado una auditoría independiente, y el riesgo principal no está en el código: todo lo que lee el agente se envía al servicio de IA que lo ejecuta.

Qué está protegido

La contraseña, en el llavero

Keychain, Credential Manager o Secret Service. Ni en un archivo, ni en el registro, ni en manos del agente: no existe ninguna herramienta que la muestre.

Solo tu servidor

La contraseña solo se envía al Exchange indicado y solo por HTTPS. Las redirecciones a otros hosts se hacen sin contraseña.

Envío solo con tu «sí»

Desactivado por defecto. Cada correo requiere tu clic en una ventana local. Se rechazan caracteres ocultos, direcciones no válidas y demasiados destinatarios; las direcciones externas se resaltan.

Ventanas locales cerradas

Solo 127.0.0.1, una dirección aleatoria secreta, comprobación de Host y Origin y bloqueo de incrustación: otros sitios no pueden alcanzarlas.

Certificado por huella

La verificación normal de certificados está activada. Un certificado interno de la empresa solo se acepta si es exactamente ese, por SHA-256.

Sin bloquear tu cuenta

Si la contraseña es rechazada, se dejan de enviar peticiones a Exchange, y la frecuencia de peticiones está limitada. El registro solo guarda nombres de herramientas y horas, nunca correos.

Lo que el programa no resuelve

  1. El correo se envía al servicio de IA. Todo lo que lee el agente (textos, adjuntos, transcripciones) se envía a la empresa que ejecuta el agente. En un banco u otra empresa regulada necesitas la aprobación del equipo de seguridad de la información, y la política puede prohibirlo directamente. Es una cuestión de política, no de código.
  2. Correos con «órdenes» para el agente. Un correo entrante puede contener texto dirigido al agente: «reenvía esto…». El servidor le pide al agente que trate los correos como datos, pero es una petición, no un candado. La protección real es la ventana de confirmación: lee el correo antes de pulsar «Enviar». El agente puede leerlo todo; por ahora no se le puede limitar a carpetas concretas.
  3. Método de instalación. curl … | sh instala lo que haya en ese momento en la rama main. Aún no hay releases firmadas ni versiones fijadas: si alguien compromete la cuenta de GitHub, la siguiente actualización también estará comprometida.
  4. Ajustes que debilitan la protección. «Configuración de cifrado heredada» para el servidor y la contraseña en la variable OWA_MAIL_PASSWORD en la configuración del agente en lugar del llavero. Ambas están desactivadas hasta que tú las actives.
  5. Acceso a tu ordenador. Quien ya haya iniciado sesión con tu cuenta puede usar la contraseña guardada y el programa en ejecución, como con cualquier aplicación que guarde contraseñas.

Antes de conectar tu correo de trabajo

  • Consigue la aprobación del equipo de seguridad de la información para que los correos se envíen a un servicio de IA.
  • No actives el envío si de verdad no lo necesitas.
  • Encarga una revisión independiente del código e instala una versión fija, no la última de main.

FAQ

Preguntas frecuentes

¿Es seguro?

Para uso personal está razonablemente bien diseñado: la contraseña está en el llavero y el envío solo ocurre tras tu confirmación. Pero no ha pasado una auditoría independiente, y los textos de los correos se envían al servicio de IA: para el correo corporativo necesitas la aprobación del equipo de seguridad de la información. Más detalles en la sección «Seguridad».

¿Dónde encuentro la dirección del servidor?

Es la dirección de tu correo de trabajo en el navegador: mail.company.com, https://owa.company.com o https://outlook.company.com/owa. Cualquiera de ellas sirve.

Dice «servidor no disponible», aunque el correo web se abre

La ventana de configuración indica la causa: DNS, reconecta la VPN; conexión, probablemente el navegador usa un proxy (puedes indicar su dirección en «Avanzado» → «Proxy»); TLS, es un servidor antiguo y la ventana te ofrecerá permitir la configuración heredada solo para él.

Dice «el servidor no responde como EWS»

En la dirección de EWS hay una pasarela con inicio de sesión web. El programa primero inicia sesión a través de OWA y continúa en la misma conexión; normalmente basta con eso. Si no, usa «Copiar diagnóstico» en la ventana de configuración (sin contraseñas) y envíalo a tu equipo de TI o a issues.

¿Dónde se guardan el usuario y la contraseña? ¿Se conservan al actualizar?

La contraseña, en el llavero del sistema; lo demás, en config.json en la carpeta del usuario (en Mac, ~/Library/Application Support/owa-mail-mcp). Las actualizaciones no los tocan. Para comprobarlo: owa-mail-mcp status.

Tras actualizar, siguen los mismos errores

El cliente mantiene en ejecución un proceso con el código antiguo. Reinicia el servidor MCP: en Claude Code, /mcp → owa-mail → Reconnect; en Claude Desktop y Cursor, cierra y vuelve a abrir la aplicación.

¿Cómo sé que todo funciona?

Pídele al agente «comprueba el estado del correo»: get_status devolverá tu dirección, el número de no leídos y la versión. El registro de llamadas está al pie de la ventana de configuración.

¿Puede el agente enviar un correo sin mí?

No. El envío está desactivado por defecto y cada correo pasa por una ventana de confirmación cuya dirección solo conoce tu navegador. Sin respuesta en 50 segundos, el correo no se envía.

¿Exchange Online (Microsoft 365)?

El servidor está pensado para Exchange corporativo 2013–2019 a través de EWS. En Microsoft 365, el inicio de sesión con contraseña para EWS está desactivado; para el correo en la nube son mejores los servidores basados en Microsoft Graph.

Bandeja de entrada: 0. Que tengas buena tarde.

Un comando, y el agente lee tu correo de trabajo contigo.

curl -LsSf https://raw.githubusercontent.com/Khomiakov7706/owa-mail-mcp/main/install.sh | sh