Microsoft MCP

Accede a servicios de Microsoft como Outlook, Calendario y OneDrive a través de la API de Microsoft Graph.

Documentación

Microsoft MCP

Potente servidor MCP para Microsoft Graph API: un kit de herramientas completo de asistente de IA para Outlook, Calendario, OneDrive y Contactos.

Características

  • Gestión de correo electrónico: Leer, enviar, responder, gestionar archivos adjuntos, organizar carpetas
  • Inteligencia de calendario: Crear, actualizar, comprobar disponibilidad, responder a invitaciones
  • Archivos de OneDrive: Subir, descargar, explorar con paginación
  • Contactos: Buscar y listar contactos de tu libreta de direcciones
  • Multi-cuenta: Soporte para múltiples cuentas de Microsoft (personales, de trabajo, educativas)
  • Búsqueda unificada: Buscar en correos, archivos, eventos y personas

Inicio rápido con Claude Desktop

# Add Microsoft MCP server (replace with your Azure app ID)
claude mcp add microsoft-mcp -e MICROSOFT_MCP_CLIENT_ID=your-app-id-here -- uvx --from git+https://github.com/elyxlz/microsoft-mcp.git microsoft-mcp

# Start Claude Desktop
claude

Ejemplos de uso

# Email examples
> read my latest emails with full content
> reply to the email from John saying "I'll review this today"
> send an email with attachment to alice@example.com

# Calendar examples  
> show my calendar for next week
> check if I'm free tomorrow at 2pm
> create a meeting with Bob next Monday at 10am

# File examples
> list files in my OneDrive
> upload this report to OneDrive
> search for "project proposal" across all my files

# Multi-account
> list all my Microsoft accounts
> send email from my work account

Herramientas disponibles

Herramientas de correo electrónico

  • list_emails - Listar correos con contenido opcional del cuerpo
  • get_email - Obtener un correo específico con archivos adjuntos
  • create_email_draft - Crear borrador de correo con soporte de archivos adjuntos
  • send_email - Enviar correo inmediatamente con CC/CCO y archivos adjuntos
  • reply_to_email - Responder manteniendo el contexto del hilo
  • reply_all_email - Responder a todos los destinatarios del hilo
  • update_email - Marcar correos como leídos/no leídos
  • move_email - Mover correos entre carpetas
  • delete_email - Eliminar correos
  • get_attachment - Obtener el contenido de archivos adjuntos de correos
  • search_emails - Buscar correos por consulta

Herramientas de calendario

  • list_events - Listar eventos de calendario con detalles
  • get_event - Obtener detalles de un evento específico
  • create_event - Crear eventos con ubicación y asistentes
  • update_event - Reprogramar o modificar eventos
  • delete_event - Cancelar eventos
  • respond_event - Aceptar/rechazar/responder tentativamente a invitaciones
  • check_availability - Comprobar horarios libres/ocupados para programar
  • search_events - Buscar eventos de calendario

Herramientas de contactos

  • list_contacts - Listar todos los contactos
  • get_contact - Obtener detalles de un contacto específico
  • create_contact - Crear nuevo contacto
  • update_contact - Actualizar información de contacto
  • delete_contact - Eliminar contacto
  • search_contacts - Buscar contactos por consulta

Herramientas de archivos

  • list_files - Explorar archivos y carpetas de OneDrive
  • get_file - Descargar contenido de archivos
  • create_file - Subir archivos a OneDrive
  • update_file - Actualizar contenido de archivos existentes
  • delete_file - Eliminar archivos o carpetas
  • search_files - Buscar archivos en OneDrive

Herramientas de utilidad

  • unified_search - Buscar en correos, eventos y archivos
  • list_accounts - Mostrar cuentas de Microsoft autenticadas
  • authenticate_account - Iniciar autenticación para una nueva cuenta de Microsoft
  • complete_authentication - Completar el proceso de autenticación después de ingresar el código del dispositivo

Configuración manual

1. Registro de aplicación en Azure

  1. Ir a Portal de Azure → Microsoft Entra ID → Registros de aplicaciones
  2. Nuevo registro → Nombre: microsoft-mcp
  3. Tipos de cuenta compatibles: Personales + Trabajo/Escuela
  4. Autenticación → Permitir flujos de cliente público: Sí
  5. Permisos de API → Agregar estos permisos delegados:
    • Mail.ReadWrite
    • Calendars.ReadWrite
    • Files.ReadWrite
    • Contacts.Read
    • People.Read
    • User.Read
  6. Copiar el ID de aplicación

2. Instalación

git clone https://github.com/elyxlz/microsoft-mcp.git
cd microsoft-mcp
uv sync

3. Autenticación

# Set your Azure app ID
export MICROSOFT_MCP_CLIENT_ID="your-app-id-here"

# Run authentication script
uv run authenticate.py

# Follow the prompts to authenticate your Microsoft accounts

4. Configuración de Claude Desktop

Agregar a tu configuración de Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "microsoft": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/elyxlz/microsoft-mcp.git", "microsoft-mcp"],
      "env": {
        "MICROSOFT_MCP_CLIENT_ID": "your-app-id-here"
      }
    }
  }
}

O para desarrollo local:

{
  "mcpServers": {
    "microsoft": {
      "command": "uv",
      "args": ["--directory", "/path/to/microsoft-mcp", "run", "microsoft-mcp"],
      "env": {
        "MICROSOFT_MCP_CLIENT_ID": "your-app-id-here"
      }
    }
  }
}

Soporte multi-cuenta

Todas las herramientas requieren un parámetro account_id como primer argumento:

# List accounts to get IDs
accounts = list_accounts()
account_id = accounts[0]["account_id"]

# Use account for operations
send_email(account_id, "user@example.com", "Subject", "Body")
list_emails(account_id, limit=10, include_body=True)
create_event(account_id, "Meeting", "2024-01-15T10:00:00Z", "2024-01-15T11:00:00Z")

Desarrollo

# Run tests
uv run pytest tests/ -v

# Type checking
uv run pyright

# Format code
uvx ruff format .

# Lint
uvx ruff check --fix --unsafe-fixes .

Ejemplo: Escenarios de asistente de IA

Gestión inteligente de correo electrónico

# Get account ID first
accounts = list_accounts()
account_id = accounts[0]["account_id"]

# List latest emails with full content
emails = list_emails(account_id, limit=10, include_body=True)

# Reply maintaining thread
reply_to_email(account_id, email_id, "Thanks for your message. I'll review and get back to you.")

# Forward with attachments
email = get_email(email_id, account_id)
attachments = [get_attachment(email_id, att["id"], account_id) for att in email["attachments"]]
send_email(account_id, "boss@company.com", f"FW: {email['subject']}", email["body"]["content"], attachments=attachments)

Programación inteligente

# Get account ID first
accounts = list_accounts()
account_id = accounts[0]["account_id"]

# Check availability before scheduling
availability = check_availability(account_id, "2024-01-15T10:00:00Z", "2024-01-15T18:00:00Z", ["colleague@company.com"])

# Create meeting with details
create_event(
    account_id,
    "Project Review",
    "2024-01-15T14:00:00Z", 
    "2024-01-15T15:00:00Z",
    location="Conference Room A",
    body="Quarterly review of project progress",
    attendees=["colleague@company.com", "manager@company.com"]
)

Notas de seguridad

  • Los tokens se almacenan en caché localmente en ~/.microsoft_mcp_token_cache.json
  • Usa contraseñas específicas de la aplicación si tienes 2FA habilitado
  • Solicita solo los permisos que tu aplicación realmente necesita
  • Considera usar un registro de aplicación dedicado para producción

Solución de problemas

  • La autenticación falla: Verifica que tu CLIENT_ID sea correcto
  • "Se necesita aprobación del administrador": Usa MICROSOFT_MCP_TENANT_ID=consumers para cuentas personales
  • Permisos faltantes: Asegúrate de que todos los permisos de API requeridos estén otorgados en Azure
  • Errores de token: Elimina ~/.microsoft_mcp_token_cache.json y vuelve a autenticarte

Licencia

MIT