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 cuerpoget_email- Obtener un correo específico con archivos adjuntoscreate_email_draft- Crear borrador de correo con soporte de archivos adjuntossend_email- Enviar correo inmediatamente con CC/CCO y archivos adjuntosreply_to_email- Responder manteniendo el contexto del hiloreply_all_email- Responder a todos los destinatarios del hiloupdate_email- Marcar correos como leídos/no leídosmove_email- Mover correos entre carpetasdelete_email- Eliminar correosget_attachment- Obtener el contenido de archivos adjuntos de correossearch_emails- Buscar correos por consulta
Herramientas de calendario
list_events- Listar eventos de calendario con detallesget_event- Obtener detalles de un evento específicocreate_event- Crear eventos con ubicación y asistentesupdate_event- Reprogramar o modificar eventosdelete_event- Cancelar eventosrespond_event- Aceptar/rechazar/responder tentativamente a invitacionescheck_availability- Comprobar horarios libres/ocupados para programarsearch_events- Buscar eventos de calendario
Herramientas de contactos
list_contacts- Listar todos los contactosget_contact- Obtener detalles de un contacto específicocreate_contact- Crear nuevo contactoupdate_contact- Actualizar información de contactodelete_contact- Eliminar contactosearch_contacts- Buscar contactos por consulta
Herramientas de archivos
list_files- Explorar archivos y carpetas de OneDriveget_file- Descargar contenido de archivoscreate_file- Subir archivos a OneDriveupdate_file- Actualizar contenido de archivos existentesdelete_file- Eliminar archivos o carpetassearch_files- Buscar archivos en OneDrive
Herramientas de utilidad
unified_search- Buscar en correos, eventos y archivoslist_accounts- Mostrar cuentas de Microsoft autenticadasauthenticate_account- Iniciar autenticación para una nueva cuenta de Microsoftcomplete_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
- Ir a Portal de Azure → Microsoft Entra ID → Registros de aplicaciones
- Nuevo registro → Nombre:
microsoft-mcp - Tipos de cuenta compatibles: Personales + Trabajo/Escuela
- Autenticación → Permitir flujos de cliente público: Sí
- Permisos de API → Agregar estos permisos delegados:
- Mail.ReadWrite
- Calendars.ReadWrite
- Files.ReadWrite
- Contacts.Read
- People.Read
- User.Read
- 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=consumerspara 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.jsony vuelve a autenticarte
Licencia
MIT