A Node.js TypeScript implementation of an MCP (Model Context Protocol) server that provides comprehensive email and WhatsApp communication capabilities. This is a complete conversion from the original Python implementation, maintaining 100% feature parity while adding TypeScript enhancements.
- 📧 Email Communication: Send professional emails via Gmail API with OAuth2 authentication
- 📱 WhatsApp Communication: Send WhatsApp messages via WhatsApp Business API
- 👤 User Management: Retrieve user information from MongoDB with ObjectId support
- 🔗 MCP Compatible: Full compatibility with Model Context Protocol
- 🔒 Secure Authentication: OAuth2 flows with automatic token refresh
- ⚙️ Flexible Configuration: Environment variables and CLI argument support
npm install
npm run build
Set up your environment variables:
# MongoDB Configuration
export MONGODB_URI="mongodb://localhost:27017"
export MONGODB_DB_NAME="mcp_communication"
# Gmail OAuth Configuration
export OAUTH_CLIENT_ID="your_gmail_oauth_client_id"
export OAUTH_CLIENT_SECRET="your_gmail_oauth_client_secret"
export GMAIL_SCOPES="https://www.googleapis.com/auth/gmail.send"
# WhatsApp Business API Configuration
export WHATSAPP_TOKEN="your_whatsapp_api_token"
export WHATSAPP_URL="https://graph.facebook.com/v18.0/YOUR_PHONE_NUMBER_ID/messages"
Run the interactive OAuth setup wizard:
npm run oauth-setup
# Start the server
npx mcp-utilities
# With custom configuration
npx mcp-utilities --mongodb-uri mongodb://localhost:27017 --debug
# Development mode
npm run dev
Send formal emails with HTML content support, CC, and BCC capabilities.
Parameters:
-
subject
(string): Email subject line (max 100 characters) -
content
(string): HTML email content with formatting support -
recipient
(array): Main recipient email addresses -
cc
(array, optional): Carbon copy recipients -
bcc
(array, optional): Blind carbon copy recipients
Example:
{
"subject": "Meeting Invitation",
"content": "<h1>Team Meeting</h1><p>Join us tomorrow at 10 AM.</p><br>Best regards,<br>Syia",
"recipient": ["team@company.com"],
"cc": ["manager@company.com"]
}
Send quick WhatsApp messages to individual recipients.
Parameters:
-
content
(string): Plain text message content -
recipient
(string): WhatsApp phone number (E.164 or local format)
Example:
{
"content": "Hello! Your appointment is confirmed for tomorrow at 2 PM.",
"recipient": "+1234567890"
}
Retrieve detailed user information from MongoDB by user ID.
Returns: User object with firstName, lastName, email, and phone fields.
Provides contextual instructions for working with the Communication system, including current date information.
Variable | Description | Default |
---|---|---|
MONGODB_URI |
MongoDB connection string | mongodb://localhost:27017 |
MONGODB_DB_NAME |
MongoDB database name | mcp_communication |
OAUTH_CLIENT_ID |
Gmail OAuth client ID | - |
OAUTH_CLIENT_SECRET |
Gmail OAuth client secret | - |
GMAIL_SCOPES |
Gmail OAuth scopes | https://www.googleapis.com/auth/gmail.send |
WHATSAPP_TOKEN |
WhatsApp Business API token | - |
WHATSAPP_URL |
WhatsApp API endpoint | - |
Options:
--mongodb-uri URI Set MongoDB URI
--mongodb-db-name NAME Set MongoDB database name
--oauth-client-id ID Set OAuth client ID
--oauth-client-secret SECRET Set OAuth client secret
--whatsapp-token TOKEN Set WhatsApp API token
--whatsapp-url URL Set WhatsApp API URL
--debug Enable debug logging
--help, -h Show help message
mcp-utilities/
├── src/
│ ├── config.ts # Configuration management
│ ├── database.ts # MongoDB client and operations
│ ├── index.ts # Main server entry point
│ ├── oauth-setup.ts # Interactive OAuth setup
│ ├── prompts.ts # MCP prompt handlers
│ ├── resources.ts # MCP resource handlers
│ ├── tools.ts # Tool implementations
│ └── tool-schemas.ts # Tool schema definitions
├── bin/cli.js # Executable CLI script
├── scripts/install.js # Installation helper
└── dist/ # Compiled JavaScript output
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run dev
# Clean build files
npm run clean
# Set up Gmail OAuth
npm run oauth-setup
- Go to Google Cloud Console
- Create a new project or select existing
- Enable the Gmail API
- Create OAuth 2.0 credentials (Desktop application)
- Set authorized redirect URIs:
http://localhost:3000/oauth2callback
- Export your credentials:
export OAUTH_CLIENT_ID="your_client_id" export OAUTH_CLIENT_SECRET="your_client_secret"
- Run the setup wizard:
npm run oauth-setup
- Set up WhatsApp Business API account
- Create a message template named "whatsapp_template"
- Get your phone number ID and access token
- Configure environment variables:
export WHATSAPP_TOKEN="your_access_token" export WHATSAPP_URL="https://graph.facebook.com/v18.0/YOUR_PHONE_NUMBER_ID/messages"
Ensure MongoDB is running with a users
collection:
// Example user document structure
{
"_id": ObjectId("..."),
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+1234567890"
}
- Node.js: ≥18.0.0
- MongoDB: ≥4.0
- TypeScript: ≥5.0
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details.
Developed by Syia AI - Advancing communication through intelligent automation.
This TypeScript implementation provides 100% feature parity with the original Python version while offering:
- ✅ Enhanced type safety with TypeScript
- ✅ Automatic OAuth token refresh
- ✅ Interactive setup wizards
- ✅ Modern ESM module support
- ✅ Comprehensive CLI help
- ✅ Better error handling
- ✅ npm package ecosystem benefits
For migration assistance or questions, please open an issue.