Microsoft MCP

Acesse serviços da Microsoft como Outlook, Calendário e OneDrive através da API do Microsoft Graph.

Documentação

Microsoft MCP

Poderoso servidor MCP para Microsoft Graph API - um conjunto completo de ferramentas de assistente de IA para Outlook, Calendário, OneDrive e Contatos.

Recursos

  • Gerenciamento de Email: Ler, enviar, responder, gerenciar anexos, organizar pastas
  • Inteligência de Calendário: Criar, atualizar, verificar disponibilidade, responder a convites
  • Arquivos do OneDrive: Enviar, baixar, navegar com paginação
  • Contatos: Pesquisar e listar contatos da sua agenda de endereços
  • Múltiplas Contas: Suporte para várias contas Microsoft (pessoal, trabalho, escola)
  • Pesquisa Unificada: Pesquisar em emails, arquivos, eventos e pessoas

Início Rápido com 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

Exemplos 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

Ferramentas Disponíveis

Ferramentas de Email

  • list_emails - Listar emails com conteúdo opcional do corpo
  • get_email - Obter email específico com anexos
  • create_email_draft - Criar rascunho de email com suporte a anexos
  • send_email - Enviar email imediatamente com CC/CCO e anexos
  • reply_to_email - Responder mantendo o contexto da conversa
  • reply_all_email - Responder a todos os destinatários na conversa
  • update_email - Marcar emails como lidos/não lidos
  • move_email - Mover emails entre pastas
  • delete_email - Excluir emails
  • get_attachment - Obter conteúdo de anexos de email
  • search_emails - Pesquisar emails por consulta

Ferramentas de Calendário

  • list_events - Listar eventos de calendário com detalhes
  • get_event - Obter detalhes de evento específico
  • create_event - Criar eventos com local e participantes
  • update_event - Reagendar ou modificar eventos
  • delete_event - Cancelar eventos
  • respond_event - Aceitar/recusar/responder provisoriamente a convites
  • check_availability - Verificar horários livres/ocupados para agendamento
  • search_events - Pesquisar eventos de calendário

Ferramentas de Contatos

  • list_contacts - Listar todos os contatos
  • get_contact - Obter detalhes de contato específico
  • create_contact - Criar novo contato
  • update_contact - Atualizar informações de contato
  • delete_contact - Excluir contato
  • search_contacts - Pesquisar contatos por consulta

Ferramentas de Arquivos

  • list_files - Navegar por arquivos e pastas do OneDrive
  • get_file - Baixar conteúdo de arquivo
  • create_file - Enviar arquivos para o OneDrive
  • update_file - Atualizar conteúdo de arquivo existente
  • delete_file - Excluir arquivos ou pastas
  • search_files - Pesquisar arquivos no OneDrive

Ferramentas Utilitárias

  • unified_search - Pesquisar em emails, eventos e arquivos
  • list_accounts - Mostrar contas Microsoft autenticadas
  • authenticate_account - Iniciar autenticação para uma nova conta Microsoft
  • complete_authentication - Concluir o processo de autenticação após inserir o código do dispositivo

Configuração Manual

1. Registro de Aplicativo do Azure

  1. Vá para Azure Portal → Microsoft Entra ID → Registros de aplicativos
  2. Novo registro → Nome: microsoft-mcp
  3. Tipos de conta suportados: Pessoal + Trabalho/Escola
  4. Autenticação → Permitir fluxos de cliente público: Sim
  5. Permissões de API → Adicione estas permissões delegadas:
    • Mail.ReadWrite
    • Calendars.ReadWrite
    • Files.ReadWrite
    • Contacts.Read
    • People.Read
    • User.Read
  6. Copie o ID do Aplicativo

2. Instalação

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

3. Autenticação

# 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. Configuração do Claude Desktop

Adicione à sua configuração do 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"
      }
    }
  }
}

Ou para desenvolvimento local:

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

Suporte a Múltiplas Contas

Todas as ferramentas exigem um parâmetro account_id como primeiro 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")

Desenvolvimento

# Run tests
uv run pytest tests/ -v

# Type checking
uv run pyright

# Format code
uvx ruff format .

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

Exemplo: Cenários de Assistente de IA

Gerenciamento Inteligente de Email

# 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)

Agendamento 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 Segurança

  • Os tokens são armazenados em cache localmente em ~/.microsoft_mcp_token_cache.json
  • Use senhas específicas do aplicativo se você tiver 2FA habilitado
  • Solicite apenas as permissões que seu aplicativo realmente precisa
  • Considere usar um registro de aplicativo dedicado para produção

Solução de Problemas

  • Falha na autenticação: Verifique se seu CLIENT_ID está correto
  • "Precisa de aprovação do administrador": Use MICROSOFT_MCP_TENANT_ID=consumers para contas pessoais
  • Permissões ausentes: Garanta que todas as permissões de API necessárias sejam concedidas no Azure
  • Erros de token: Exclua ~/.microsoft_mcp_token_cache.json e reautentique

Licença

MIT