notifications-mcp
notifications-mcp
Servidor MCP de Notificaciones Unificado — Fase 1: Gmail
Enviar alertas por correo electrónico desde cualquier agente de IA (Claude, LangGraph, GPT) mediante el Protocolo de Contexto de Modelo.
Qué Hace Esto
Este servidor MCP expone una herramienta mail_send que cualquier agente de IA compatible con MCP puede llamar para enviar correos electrónicos a través de Gmail.
Caso de uso: Una máquina de fábrica deja de funcionar → tu agente de monitoreo de IA llama a mail_send → el gerente, el técnico y el personal reciben un correo de alerta al instante.
Machine stops → AI Agent → mail_send tool → Gmail → Manager + Technician notifiedEndpoint MCP: http://localhost:8100/mcp
Arquitectura
notifications-mcp/
├── src/
│ ├── server.py ← Entrypoint (Streamable HTTP + OAuth routes)
│ ├── config.py ← Loads config.yaml
│ ├── registry.py ← Dynamically loads channel tools
│ └── channels/
│ ├── mail/ ← Gmail channel (Phase 1)
│ ├── teams/ ← Microsoft Teams (Phase 2 placeholder)
│ └── sms/ ← SMS via Twilio (Phase 3 placeholder)Para agregar un nuevo canal: crea channels/<nombre>/tools.py con una función register(mcp, cfg), agrega el nombre del canal a enabled_channels en config.yaml. No es necesario modificar ningún otro archivo.
Configuración
1. Requisitos previos
Python 3.11+
Un proyecto de Google Cloud con la API de Gmail habilitada
2. Configuración de Google Cloud
Habilita la API de Gmail para tu proyecto
Ve a APIs y Servicios → Credenciales → Crear credenciales → ID de cliente OAuth 2.0
Tipo de aplicación: Aplicación web
Agrega URI de redireccionamiento autorizado:
http://localhost:8100/auth/gmail/callbackDescarga el JSON → guárdalo como
credentials/google_credentials.json
3. Instalar Dependencias
pip install -r requirements.txt
# or for development:
pip install -e ".[dev]"4. Iniciar el Servidor
python -m src.serverVerás:
{"level": "INFO", "message": "Starting notifications-mcp | host=0.0.0.0 | port=8100"}
{"level": "INFO", "message": "MCP endpoint → http://localhost:8100/mcp"}
{"level": "INFO", "message": "Gmail OAuth → http://localhost:8100/auth/gmail/start"}5. Autenticar Gmail (Solo la Primera Vez)
Abre tu navegador y visita:
http://localhost:8100/auth/gmail/startSerás redirigido a la página de consentimiento de Google
Inicia sesión con la cuenta de Gmail desde la que deseas ENVIAR
Concede el permiso "Enviar correo electrónico"
Verás ✅ ¡Gmail Autenticado! — cierra la pestaña
El token se guarda en
credentials/gmail_token.jsony se renueva automáticamente de forma silenciosa a partir de ahora
Usar la Herramienta mail_send
Desde MCP Inspector (pruebas)
npx @modelcontextprotocol/inspector http://localhost:8100/mcpLlama a mail_send con:
{
"to": ["manager@yourcompany.com", "technician@yourcompany.com"],
"subject": "ALERT: Machine #3 stopped",
"body": "Machine #3 on Floor B stopped at 18:02.\nError code: E-404.\nPlease investigate immediately."
}Desde un Agente de IA (Claude / LangGraph)
El agente ve esta descripción de la herramienta:
mail_send — Enviar un correo electrónico a través de Gmail a uno o más destinatarios. Para alertas de parada de máquina en fábrica, incluye el nombre de la máquina, ubicación, hora de parada y código de error.
El agente la llama así:
result = await client.call_tool("mail_send", {
"to": ["manager@factory.com", "tech@factory.com"],
"subject": "ALERT: Machine #3 stopped",
"body": "Machine #3 stopped at 18:02. Error: E-404. Location: Floor B, Line 2."
})Desde Antigravity / Claude Desktop
Agrega a tu configuración de MCP:
{
"mcpServers": {
"notifications": {
"url": "http://localhost:8100/mcp"
}
}
}Referencia de Herramientas
mail_send
Envía un correo electrónico a uno o más destinatarios a través de Gmail.
Parámetro | Tipo | Obligatorio | Descripción |
|
| ✅ | Lista de direcciones de correo destino |
|
| ✅ | Asunto del correo |
|
| ✅ | Cuerpo del correo (texto plano) |
|
| ❌ | Destinatarios en copia |
|
| ❌ | Destinatarios en copia oculta |
Devuelve en caso de éxito:
{"status": "sent", "message_id": "18b3c...", "recipients": ["manager@co.com"]}Devuelve en caso de error:
{"status": "failed", "error": "rate_limited", "message": "Gmail rate limit hit. Wait 60s."}Configuración
Edita config.yaml para cambiar la configuración:
server:
host: "0.0.0.0"
port: 8100 # Change port here
enabled_channels:
- mail # Add 'teams' or 'sms' here in Phase 2/3
channels:
mail:
credentials_path: "credentials/google_credentials.json"
token_path: "credentials/gmail_token.json"
scopes:
- "https://www.googleapis.com/auth/gmail.send"
oauth_redirect_uri: "http://localhost:8100/auth/gmail/callback"Ejecutar Pruebas
pytest tests/ -vSalida esperada:
tests/channels/mail/test_tools.py::test_mail_send_success PASSED
tests/channels/mail/test_tools.py::test_mail_send_not_authenticated PASSED
tests/channels/mail/test_tools.py::test_mail_send_rate_limited PASSED
tests/channels/mail/test_tools.py::test_mail_send_missing_to_field PASSED
tests/channels/mail/test_tools.py::test_mail_send_missing_subject PASSED
tests/channels/mail/test_tools.py::test_mail_send_multiple_recipients PASSED
tests/channels/mail/test_tools.py::test_mail_send_with_cc_bcc PASSEDAgregar Fase 2 (Teams) o Fase 3 (SMS)
Crea la carpeta del canal:
src/channels/teams/__init__.py src/channels/teams/auth.py src/channels/teams/client.py src/channels/teams/schemas.py src/channels/teams/tools.py ← must have def register(mcp, cfg)Agrega a
config.yaml:enabled_channels: - mail - teams ← add this channels: teams: tenant_id: "..." client_id: "..."Listo.
server.pyyregistry.pyno necesitan cambios.
Notas de Seguridad
credentials/está en.gitignore— nunca subas credenciales de GoogleEl token OAuth se renueva automáticamente de forma silenciosa — solo das consentimiento una vez
El servidor se ejecuta en localhost — no está expuesto a internet por defecto
No se requiere clave API para uso en localhost
Fase 1: Gmail ✅ | Fase 2: Teams 🔜 | Fase 3: SMS 🔜
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
Push notifications for AI agents - send instant iPhone notifications from any MCP client.
Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Manojbonthu/Custom_MCP_Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server