silvaleo1979/MCPMail
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.
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çadossearch_emails- Busca avançada em emailssend_email- Envia emailsget_email_details- Obtém detalhes completos de um email
💬 Teams Management
list_teams- Lista equipes do usuáriolist_channels- Lista canais de uma equipesend_message- Envia mensagens em canais do Teamssearch_messages- Busca mensagens em canais
💬 Chat Management
list_chats- Lista chats do usuárioget_chat_messages- Obtém mensagens de um chatsend_chat_message- Envia mensagens em chatssearch_chat_messages- Busca mensagens em chats
🔧 Utilitários
get_user_info- Informações do usuárioclear_cache- Limpa cacheget_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
- Clone o repositório
git clone <url-do-repositorio>
cd MCPMail
- Instale as dependências
pip install -r requirements.txt
- 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.AllMail.ReadMail.SendTeam.ReadBasic.AllChannel.ReadBasic.AllChannelMessage.Send
Delegated Permissions (para chat):
User.ReadChat.ReadWriteChatMessage.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_REQUESTSeRATE_LIMIT_WINDOW
📝 Licença
Este projeto está sob a licença MIT.
🤝 Contribuição
- Fork o projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
📞 Suporte
Para suporte, abra uma issue no GitHub ou entre em contato através do email configurado no projeto.