Outlook

Accede a tu correo, calendario y archivos de Microsoft 365 mediante la API de Microsoft Graph.

Documentación

OutlookMCPServer

Este proyecto es un servidor MCP que le da a Claude Desktop acceso a su correo, calendario y archivos de Microsoft 365 mediante la API de Microsoft Graph.


✨ Características

  • ✅ Acceso al correo: Redactar, Responder, Ordenar, Buscar, Filtrar y Analizar su bandeja de entrada desde Claude o cualquier agente compatible con MCP
  • ✅ Soporte de calendario: Encontrar invitaciones, Listar eventos, Redactar/Actualizar/Enviar eventos
  • ✅ Soporte de OneDrive: Buscar archivos, obtener metadatos de archivos
  • ✅ Soporte de SharePoint: Cargar unidades, buscar archivos, obtener metadatos de archivos

🧱 Stack Tecnológico

  • msgraph (SDK moderno de Microsoft Graph)
  • azure.identity con DeviceCodeCredential y TokenCachePersistenceOptions
  • FastMCP — interfaz de servidor simple compatible con MCP
  • uv — gestión rápida de dependencias y entorno de Python

⚙️ Requisitos

Actualmente está construido para:

  • Ejecutarse localmente en macOS
  • Usarse con Claude Desktop
  • Autenticarse mediante una aplicación registrada en Azure

⚠️ Debe tener acceso de administrador a un inquilino de Azure para configurar esto: el registro de la aplicación requiere consentimiento para los ámbitos de Microsoft Graph (p. ej., Mail.Read, Calendars.Read), que no son consentibles por el usuario de forma predeterminada en la mayoría de las organizaciones.


🚀 Primeros Pasos

Clonar el repositorio y navegar a él

git clone https://github.com/Norcim133/OutlookMCPServer.git
cd OutlookMCPServer

Configurar el entorno

uv venv
uv sync

Ejecutar localmente con MCP Inspector

mcp dev main.py (expect errors)

Es mucho más fácil hacer que las cosas funcionen en el Inspector antes de intentar depurar en Claude.


🔐 Configuración de Autenticación

Antes de ejecutar la aplicación, debe configurar lo siguiente:

  1. Cree una carpeta auth_cache en la raíz del proyecto (ver nota):
mkdir -p auth_cache
  1. Cree un archivo .env en la raíz del proyecto
touch .env
  1. Agregue lo siguiente al .env:
echo "AZURE_CLIENT_ID=<your-id-from-Azure-portal-here>" > .env
echo "AZURE_TENANT_ID=<your-id-from-Azure-portal-here>" >> .env
echo "AZURE_GRAPH_SCOPES=User.Read Mail.Read Mail.Send Mail.ReadWrite" >> .env

NOTA: Se requieren valores .env adicionales para los servicios de archivos NOTA: En la primera ejecución, la aplicación se autenticará mediante el flujo DeviceCodeCredential y creará auth_record.json en la carpeta auth_cache automáticamente si tiene éxito.

Debe tener acceso de administrador a un inquilino de Azure para registrar una aplicación con estos permisos.


Integración con Claude Desktop

Para integrarse con Claude Desktop, agregue esto a su claude_desktop_config.json:

{
  "mcpServers": {
    "outlook": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "azure-identity,mcp[cli],msgraph-core,msgraph-sdk",
        "mcp",
        "run",
        "/absolute/path/to/OutlookMCPServer"
      ]
    }
  }
}

En Claude Desktop, puede encontrar el archivo json en Settings/Developer/Edit Config.

NOTA: Es posible que deba reemplazar "uv" con una referencia absoluta en "command"

Reinicie Claude Desktop cada vez que realice un cambio en la configuración o en el código del servidor.


📦 Estructura de Carpetas

.
├── README.md
├── main.py
├── settings.py
├── auth_cache/
│   └── auth_record.json
├── mcpserver/
│   └── graph/
│       ├── __init__.py
│       ├── calendar_service.py
│       ├── controller.py
│       ├── file_service.py
│       ├── mail_service.py
│   ├── __init__.py
│   ├── auth_wrapper.py
│   ├── context_manager.py
│   ├── mail_query.py
│   ├── message_info.py
│   └── server.py
├── tests/
├── .env
├── __init__.py
├── main.py

📌 Hoja de Ruta

  • Integración de correo (HECHO)
  • Autenticación en Claude Desktop (HECHO)
  • Integración de calendario (HECHO)
  • Integración de OneDrive (HECHO)
  • Integración de SharePoint (HECHO)

📄 Licencia

MIT

Copyright (c) 2024 Enthoosa AI

Por la presente se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el "Software"), para tratar con el Software sin restricción, incluidos, entre otros, los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del Software, y para permitir que las personas a quienes se les proporcione el Software hagan lo mismo, sujeto a las siguientes condiciones:

El aviso de copyright anterior y este aviso de permiso deberán incluirse en todas las copias o partes sustanciales del Software.

EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE, O EN CONEXIÓN CON, EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE.