MCPMail

silvaleo1979/MCPMail

3.1

If you are the rightful owner of MCPMail and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A Model Context Protocol (MCP) server for integrating with Microsoft Graph API, enabling programmatic management of emails, Teams, and chats.

Tools
5
Resources
0
Prompts
0

MCP Microsoft Graph API

Um servidor MCP (Model Context Protocol) para integração com Microsoft Graph API, permitindo gerenciamento de emails, Teams e chats através de ferramentas programáticas.

🚀 Funcionalidades

📧 Email Management

  • list_emails - Lista emails com filtros avançados
  • search_emails - Busca avançada em emails
  • send_email - Envia emails
  • get_email_details - Obtém detalhes completos de um email

💬 Teams Management

  • list_teams - Lista equipes do usuário
  • list_channels - Lista canais de uma equipe
  • send_message - Envia mensagens em canais do Teams
  • search_messages - Busca mensagens em canais

💬 Chat Management

  • list_chats - Lista chats do usuário
  • get_chat_messages - Obtém mensagens de um chat
  • send_chat_message - Envia mensagens em chats
  • search_chat_messages - Busca mensagens em chats

🔧 Utilitários

  • get_user_info - Informações do usuário
  • clear_cache - Limpa cache
  • get_target_user_info - Informações do usuário alvo

📋 Pré-requisitos

  • Python 3.8+
  • Conta Microsoft 365/Azure AD
  • Aplicação registrada no Azure AD

🛠️ Instalação

  1. Clone o repositório
git clone <url-do-repositorio>
cd MCPMail
  1. Instale as dependências
pip install -r requirements.txt
  1. Configure as variáveis de ambiente
cp config.env.example .env
# Edite o arquivo .env com suas credenciais

⚙️ Configuração

1. Azure AD App Registration

Crie uma aplicação no Azure AD com as seguintes permissões:

Application Permissions:

  • User.Read.All
  • Mail.Read
  • Mail.Send
  • Team.ReadBasic.All
  • Channel.ReadBasic.All
  • ChannelMessage.Send

Delegated Permissions (para chat):

  • User.Read
  • Chat.ReadWrite
  • ChatMessage.Send

2. Arquivo .env

Configure o arquivo .env com suas credenciais:

# Azure AD Configuration
CLIENT_ID=seu_client_id
CLIENT_SECRET=seu_client_secret
TENANT_ID=seu_tenant_id

# Microsoft Graph Scopes
SCOPES=https://graph.microsoft.com/.default

# Target User (para operações específicas)
TARGET_USER_EMAIL=usuario@seudominio.com

# MCP Configuration
MCP_HOST=localhost
MCP_PORT=8001

# Cache Configuration
CACHE_ENABLED=true
CACHE_TTL=3600

# Rate Limiting
RATE_LIMIT_REQUESTS=100
RATE_LIMIT_WINDOW=60

🚀 Uso

Executar o servidor MCP

# Com email padrão
python MCP_Microsoft_Graph.py

# Com email específico
python MCP_Microsoft_Graph.py usuario@empresa.com

# Com configurações personalizadas
python MCP_Microsoft_Graph.py --host 0.0.0.0 --port 8002

Exemplos de uso das tools

# Listar emails dos últimos 7 dias
list_emails(days_back=7)

# Buscar emails com termo específico
search_emails("importante")

# Enviar email
send_email(
    to="destinatario@empresa.com",
    subject="Assunto do email",
    body="Corpo do email"
)

# Listar equipes
list_teams()

# Enviar mensagem no Teams
send_message(
    team_id="team_id",
    channel_id="channel_id",
    message="Mensagem para o canal"
)

# Listar chats
list_chats()

# Enviar mensagem no chat
send_chat_message(
    chat_id="chat_id",
    message="Mensagem para o chat"
)

🔧 Arquitetura

Componentes Principais

  • MicrosoftGraphAuth: Gerenciamento de autenticação
  • CacheManager: Sistema de cache para otimização
  • RateLimiter: Controle de taxa de requisições
  • Tools MCP: Ferramentas expostas via MCP

Fluxos de Autenticação

  • Client Credentials Flow: Para operações de aplicação
  • Device Code Flow: Para operações delegadas (chat)

📊 Monitoramento

O sistema inclui:

  • Logs detalhados com Loguru
  • Cache para otimização de performance
  • Rate limiting para evitar limites da API
  • Tratamento de erros robusto

🔒 Segurança

  • Credenciais armazenadas em variáveis de ambiente
  • Tokens de acesso com expiração automática
  • Validação de permissões antes das operações

🐛 Troubleshooting

Erro 401 - Unauthorized

  • Verifique se as permissões estão configuradas no Azure AD
  • Para chat, use permissões delegadas

Erro de Client Secret

  • Certifique-se de usar o valor do secret, não o ID

Erro de Rate Limiting

  • Ajuste RATE_LIMIT_REQUESTS e RATE_LIMIT_WINDOW

📝 Licença

Este projeto está sob a licença MIT.

🤝 Contribuição

  1. Fork o projeto
  2. Crie uma branch para sua feature
  3. Commit suas mudanças
  4. Push para a branch
  5. Abra um Pull Request

📞 Suporte

Para suporte, abra uma issue no GitHub ou entre em contato através do email configurado no projeto.