notifications-mcp
Provides a mail_send tool to send email alerts via Gmail to one or more recipients, supporting CC and BCC. Authenticates via OAuth 2.0 and handles rate limiting, enabling AI agents to notify users such as managers and technicians.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@notifications-mcpsend an email alert to manager@factory.com and tech@factory.com about machine #3 stopping with error code E-404"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
notifications-mcp
Unified Notifications MCP Server — Phase 1: Gmail
Send email alerts from any AI agent (Claude, LangGraph, GPT) via the Model Context Protocol.
What This Does
This MCP server exposes a mail_send tool that any MCP-compatible AI agent can call to send emails via Gmail.
Use case: A factory machine stops working → your AI monitoring agent calls mail_send → manager, technician, and staff all receive an alert email instantly.
Machine stops → AI Agent → mail_send tool → Gmail → Manager + Technician notifiedMCP endpoint: http://localhost:8100/mcp
Architecture
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)To add a new channel: create channels/<name>/tools.py with a register(mcp, cfg) function, add the channel name to enabled_channels in config.yaml. No other files change.
Setup
1. Prerequisites
Python 3.11+
A Google Cloud project with the Gmail API enabled
2. Google Cloud Setup
Go to Google Cloud Console
Enable the Gmail API for your project
Go to APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID
Application type: Web application
Add Authorized redirect URI:
http://localhost:8100/auth/gmail/callbackDownload the JSON → save as
credentials/google_credentials.json
3. Install Dependencies
pip install -r requirements.txt
# or for development:
pip install -e ".[dev]"4. Start the Server
python -m src.serverYou'll see:
{"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. Authenticate Gmail (First Time Only)
Open your browser and visit:
http://localhost:8100/auth/gmail/startYou'll be redirected to Google's consent page
Log in with the Gmail account you want to send FROM
Grant the "Send email" permission
You'll see ✅ Gmail Authenticated! — close the tab
The token is saved to
credentials/gmail_token.jsonand auto-refreshes silently from now on
Using the mail_send Tool
From MCP Inspector (testing)
npx @modelcontextprotocol/inspector http://localhost:8100/mcpCall mail_send with:
{
"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."
}From an AI Agent (Claude / LangGraph)
The agent sees this tool description:
mail_send — Send an email via Gmail to one or more recipients. For factory machine downtime alerts, include the machine name, location, stop time, and error code.
The agent calls it 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."
})From Antigravity / Claude Desktop
Add to your MCP config:
{
"mcpServers": {
"notifications": {
"url": "http://localhost:8100/mcp"
}
}
}Tool Reference
mail_send
Send an email to one or more recipients via Gmail.
Parameter | Type | Required | Description |
|
| ✅ | List of recipient email addresses |
|
| ✅ | Email subject line |
|
| ✅ | Email body (plain text) |
|
| ❌ | CC recipients |
|
| ❌ | BCC recipients |
Returns on success:
{"status": "sent", "message_id": "18b3c...", "recipients": ["manager@co.com"]}Returns on failure:
{"status": "failed", "error": "rate_limited", "message": "Gmail rate limit hit. Wait 60s."}Configuration
Edit config.yaml to change settings:
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"Running Tests
pytest tests/ -vExpected output:
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 PASSEDAdding Phase 2 (Teams) or Phase 3 (SMS)
Create the channel folder:
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)Add to
config.yaml:enabled_channels: - mail - teams ← add this channels: teams: tenant_id: "..." client_id: "..."Done.
server.pyandregistry.pyneed zero changes.
Security Notes
credentials/is gitignored — never commit Google credentialsOAuth token auto-refreshes silently — you only consent once
The server runs on localhost — not exposed to the internet by default
No API key required for localhost use
Phase 1: Gmail ✅ | Phase 2: Teams 🔜 | Phase 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