Mailmodo
Official# mailmodo-mcp
[](https://smithery.ai/server/@mailmodo/mailmodo-mcp)
This is a TypeScript project that implements a Message Control Protocol (MCP) server for Mailmodo integration with Claude Desktop and other MCP supported client.
<a href="https://glama.ai/mcp/servers/@mailmodo/mailmodo-mcp">
<img width="380" height="200" src="https://glama.ai/mcp/servers/@mailmodo/mailmodo-mcp/badge" alt="Mailmodo MCP server" />
</a>
## Prerequisites
- Node.js (v20 or higher recommended)
- npm (comes with Node.js)
## Installation
### Installing via Smithery
To install Mailmodo Integration Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@mailmodo/mailmodo-mcp):
```bash
npx -y @smithery/cli install @mailmodo/mailmodo-mcp --client claude
```
### Manual Installation
1. Clone the repository:
```bash
git clone https://github.com/mailmodo/mailmodo-mcp.git
cd mailmodo-mcp
```
2. Install dependencies:
```bash
npm install
```
## Building the Project
To compile the TypeScript code to JavaScript, run:
```bash
npm run build
```
This will create a `dist` directory containing the compiled JavaScript files.
## Running the Project
After building, you can run the project using:
```bash
node dist/index.js
```
Or use the npm script:
```bash
npm start
```
## Claude Desktop Configuration
### Local Run from Code
To configure this project with Claude Desktop, add the following configuration to your Claude Desktop settings:
```json
{
"mcpServers": {
"mailmodo": {
"command": "node",
"args": [
"/path/to/your/mailmodo-mcp/dist/index.js"
]
}
}
}
```
### Run from docker image
```json
{
"mcpServers": {
"mailmodo": {
"command": "docker",
"args": [
"run",
"--platform",
"linux/amd64",
"-i",
"--rm",
"-e",
"MAILMODO_API_KEY",
"avneesh001/mailmodo-mcp"
],
"env": {
"MAILMODO_API_KEY": "<GET MAILMODO KEY from https://manage.mailmodo.com/app/settings/apikey and insert here>"
}
}
}
}
```
### Run from npx
```json
{
"mcpServers": {
"mailmodo": {
"command": "npx",
"args": [
"-y",
"@mailmodo/mcp"
],
"env": {
"MAILMODO_API_KEY": "<GET MAILMODO KEY from https://manage.mailmodo.com/app/settings/apikey and insert here>"
}
}
}
}
```
### Connect via Remote Server
```json
{
"mcpServers": {
"mailmodo": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.app.mailmodo.com/mcp",
"--header",
"mmApiKey:${MAILMODO_API_KEY}"
],
"env": {
"MAILMODO_API_KEY": "<GET MAILMODO KEY from https://manage.mailmodo.com/app/settings/apikey and insert here>"
}
}
}
}
```
Make sure to adjust the file path in the `args` array to match your local project directory.
## Development
To run the project in development mode with automatic recompilation:
1. Install `ts-node` and `nodemon` as dev dependencies:
```bash
npm install --save-dev ts-node nodemon
```
2. Add a dev script to your package.json:
```json
{
"scripts": {
"dev": "nodemon src/index.ts",
"build": "tsc",
"start": "node dist/index.js"
}
}
```
3. Run the development server:
```bash
npm run dev
```
## Project Structure
```
mailmodo-mcp/
├── src/ # TypeScript source files
├── dist/ # Compiled JavaScript files
├── package.json # Project dependencies and scripts
└── tsconfig.json # TypeScript configuration
```
## Tools and Resources
The Mailmodo MCP server provides several tools and resources for interacting with Mailmodo's functionality. Here's a comprehensive list:
### Resources
1. **Mailmodo Templates** (`mailmodo://templates`)
- Returns a list of all available email templates in JSON format
- MIME Type: application/json
2. **Mailmodo Campaigns** (`mailmodo://campaigns`)
- Returns a list of all campaigns in JSON format
- MIME Type: application/json
3. **Mailmodo Contact Lists** (`mailmodo://contact-lists`)
- Returns all contact lists in JSON format
- MIME Type: application/json
### Tools
1. **User Details**
- Name: `userDetails`
- Description: Get all details of a contact
- Parameters:
- `email` (string): Email address of the contact
2. **Campaign Report Tool**
- Name: `MailmodoCampainReportTool`
- Description: Get campaign reports including open, click, and submission counts
- Parameters:
- `campaignId` (UUID): ID of the campaign
- `fromDate` (YYYY-MM-DD): Start date for the report
- `toDate` (YYYY-MM-DD): End date for the report
3. **Current DateTime**
- Name: `currentDateTime`
- Description: Get current date and time
- Parameters: None
4. **Send Event**
- Name: `sendEvent`
- Description: Send custom events with email and event properties
- Parameters:
- `email` (string): Contact's email address
- `event_name` (string): Name of the event
- `ts` (number, optional): Timestamp
- `event_properties` (object, optional): Additional event properties
5. **Contact List Management**
- **Add Contact to List**
- Name: `addContactToList`
- Description: Add a single contact to a list
- Parameters:
- `email` (string): Contact's email
- `listName` (string): Name of the list
- `data` (object, optional): Contact properties
- Various optional fields for contact metadata
- **Bulk Add Contacts**
- Name: `addBulkContactToList`
- Description: Add multiple contacts to a list in a single operation
- Parameters:
- `listName` (string): Name of the list
- `values` (array): Array of contact objects
- **Remove Contact from List**
- Name: `removeContactFromList`
- Description: Remove a contact from a specific list
- Parameters:
- `email` (string): Contact's email
- `listName` (string): Name of the list
6. **Contact Status Management**
- **Unsubscribe Contact**
- Name: `unsubscribeContact`
- Description: Unsubscribe or suppress a contact
- Parameters:
- `email` (string): Contact's email
- **Resubscribe Contact**
- Name: `resubscribeContact`
- Description: Resubscribe a previously unsubscribed contact
- Parameters:
- `email` (string): Contact's email
- **Archive Contact**
- Name: `archiveContact`
- Description: Permanently archive a contact
- Parameters:
- `email` (string): Contact's email
7. **Campaign Management**
- **Send Email Campaign**
- Name: `sendEmailToCampaign`
- Description: Trigger an email campaign with personalization
- Parameters:
- `campaignId` (string): Campaign ID
- `email` (string): Recipient's email
- Various optional parameters for customization
- **Broadcast Campaign**
- Name: `broadcastCampaignToList`
- Description: Trigger campaigns to an entire contact list
- Parameters:
- `campaignId` (string): Campaign ID
- `listId` (string): Target list ID
- Optional parameters for campaign customization
## License
[MIT License](LICENSE)TDQS
Scored across 12 tools
Most tools target distinct resources and actions: contact list management, contact state changes, campaign triggers, and reports are clearly separated. Potential confusion exists between unsubscribe, archive, and remove-from-list, but descriptions clarify the different outcomes since archive is permanent and remove only affects list membership.
Most tools follow a camelCase verb_noun pattern (addContactToList, sendEvent, broadcastCampaignToList), but the first tool 'MailmodoCampainReportTool' breaks the convention with PascalCase and a 'Tool' suffix alert. Also, 'currentDateTime' and 'userDetails' are noun-first rather than verb-first, so the pattern is not fully consistent.
Twelve tools is a well-scoped surface for an email marketing/contact management server. Each tool covers a distinct operation without excessive granularity or obvious bloat.
The set covers contact lifecycle operations, list management, campaign triggering, and reports, but there are notable gaps. There is no way to create or update campaigns, list campaigns, or manage templates, and campaign report retrieval requires a campaign ID that cannot be discovered through the provided tools, leaving some workflows incomplete.