Outlook

Acesse seu e-mail, calendário e arquivos do Microsoft 365 usando a API Microsoft Graph.

Documentação

OutlookMCPServer

Este projeto é um servidor MCP que dá ao Claude Desktop acesso ao seu e-mail, calendário e arquivos do Microsoft 365 usando a API Microsoft Graph.


✨ Recursos

  • Acesso a e-mail: Redigir, Responder, Classificar, Pesquisar, Filtrar e Analisar sua caixa de entrada a partir do Claude ou de qualquer agente compatível com MCP
  • Suporte a calendário: Encontre convites, Liste eventos, Redija/Atualize/Envie eventos
  • Suporte ao OneDrive: Pesquise arquivos, obtenha metadados de arquivos
  • Suporte ao SharePoint: Carregue unidades, pesquise arquivos, obtenha metadados de arquivos

🧱 Pilha de Tecnologias

  • msgraph (SDK moderno do Microsoft Graph)
  • azure.identity com DeviceCodeCredential e TokenCachePersistenceOptions
  • FastMCP — interface de servidor simples compatível com MCP
  • uv — gerenciamento rápido de dependências e ambiente Python

⚙️ Requisitos

Atualmente, este projeto foi desenvolvido para:

  • Executar localmente no macOS
  • Ser usado com o Claude Desktop
  • Autenticar usando um aplicativo registrado no Azure

⚠️ Você precisa ter acesso de administrador a um locatário do Azure para configurar isto — o registro do aplicativo exige consentimento para escopos do Microsoft Graph (ex.: Mail.Read, Calendars.Read), o que não é passível de consentimento do usuário por padrão na maioria das organizações.


🚀 Começando

Clone o repositório e navegue até ele

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

Configure o ambiente

uv venv
uv sync

Execute localmente usando o MCP Inspector

mcp dev main.py (expect errors)

É muito mais fácil fazer as coisas funcionarem no Inspector antes de tentar depurar no Claude.


🔐 Configuração de Autenticação

Antes de executar o aplicativo, você precisa configurar o seguinte:

  1. Crie uma pasta auth_cache na raiz do projeto (veja a nota):
mkdir -p auth_cache
  1. Crie um arquivo .env na raiz do projeto
touch .env
  1. Adicione o seguinte ao .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: Valores adicionais de .env necessários para serviços de arquivos NOTA: Na primeira execução, o aplicativo autenticará usando o fluxo DeviceCodeCredential e criará o auth_record.json na pasta auth_cache automaticamente se for bem-sucedido.

Você deve ter acesso de administrador a um locatário do Azure para registrar um aplicativo com essas permissões.


Integração com Claude Desktop

Para integrar com o Claude Desktop, adicione isto ao seu 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"
      ]
    }
  }
}

No Claude Desktop, você pode encontrar o arquivo json em Configurações/Desenvolvedor/Editar Config.

NOTA: Talvez seja necessário substituir "uv" por uma referência absoluta em "command"

Reinicie o Claude Desktop sempre que fizer alterações na configuração ou no código do servidor.


📦 Estrutura de Pastas

.
├── 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

📌 Roteiro

  • Integração de e-mail (CONCLUÍDO)
  • Autenticação no Claude Desktop (CONCLUÍDO)
  • Integração de calendário (CONCLUÍDO)
  • Integração com OneDrive (CONCLUÍDO)
  • Integração com SharePoint (CONCLUÍDO)

📄 Licença

MIT

Copyright (c) 2024 Enthoosa AI

É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e para permitir que as pessoas a quem o Software é fornecido façam o mesmo, sujeito às seguintes condições:

O aviso de copyright acima e este aviso de permissão deverão ser incluídos em todas as cópias ou partes substanciais do Software.

O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIABILIDADE, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, FORA OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.