Comprehensive Model Context Protocol (MCP) server for the InboxAssure email marketing platform. This server provides full API coverage with 23 tools for managing campaigns, replies, and email accounts through AI assistants like Claude and Cursor.
- 23 comprehensive tools covering the entire InboxAssure API
- Campaigns Management: Create, manage, and analyze email campaigns
- Replies Management: Handle incoming emails and compose responses
- Email Accounts: Manage sender accounts and configurations
- Multi-transport support: STDIO, HTTP, and SSE protocols
- Client compatibility: Works with Claude Desktop, Cursor, and other MCP clients
- Secure API key handling: Client-provided keys, no server-side storage
- Node.js (version 18.x or later)
- npm (usually comes with Node.js)
- InboxAssure API key (starting with
iak_
)
-
Clone this repository:
git clone https://github.com/your-org/inboxassure-mcp-server cd inboxassure-mcp-server
-
Install dependencies:
npm install
# Using npm script
npm run start:stdio -- --api-key YOUR_INBOXASSURE_API_KEY
# Or directly using node
node src/cli.js --stdio --api-key YOUR_INBOXASSURE_API_KEY
# Default port 3000
npm start -- --api-key YOUR_INBOXASSURE_API_KEY
# Custom port
npm start -- --api-key YOUR_INBOXASSURE_API_KEY --port 3001
The HTTP server provides:
- MCP Endpoint:
http://localhost:PORT/mcp
(POST requests) - Health Check:
http://localhost:PORT/health
(GET requests)
-
get_bison_hello
- Test endpoint to verify API connectivity
-
list_campaigns
- List all campaigns with filtering and pagination- Parameters:
workspace_id
, optionalparams
(search, status, page, per_page)
- Parameters:
-
create_campaign
- Create a new email marketing campaign- Parameters:
workspace_id
,name
, optionaltype
- Parameters:
-
get_campaign_details
- Get detailed campaign information- Parameters:
workspace_id
,campaign_id
- Parameters:
-
pause_campaign
- Temporarily pause a running campaign- Parameters:
workspace_id
,campaign_id
- Parameters:
-
resume_campaign
- Resume a paused campaign- Parameters:
workspace_id
,campaign_id
- Parameters:
-
get_campaign_stats
- Get performance metrics for date range- Parameters:
workspace_id
,campaign_id
,start_date
,end_date
- Parameters:
-
get_campaign_leads
- View leads in campaign with status- Parameters:
workspace_id
,campaign_id
, optionalparams
- Parameters:
-
create_campaign_schedule
- Set up campaign sending schedule (days, times, timezone)- Parameters:
workspace_id
,campaign_id
,start_time
,end_time
,timezone
, day booleans
- Parameters:
-
get_schedule_templates
- Get predefined schedule templates for quick setup- Parameters:
workspace_id
- Parameters:
-
create_sequence_steps
- Define email sequence steps for drip campaigns- Parameters:
workspace_id
,campaign_id
,title
,sequence_steps
array
- Parameters:
-
attach_lead_list
- Import entire lead lists into campaigns- Parameters:
workspace_id
,campaign_id
,lead_list_id
- Parameters:
-
list_replies
- Retrieve email replies with filtering- Parameters:
workspace_id
, optionalparams
(search, status, folder, etc.)
- Parameters:
-
get_reply_details
- Get complete reply details and content- Parameters:
workspace_id
,reply_id
- Parameters:
-
compose_new_email
- Send standalone emails outside campaigns- Parameters:
workspace_id
,sender_email_id
,to_emails
,message
, optionalcontent_type
,cc_emails
,bcc_emails
- Parameters:
-
reply_to_email
- Respond to emails maintaining thread- Parameters:
workspace_id
,reply_id
,sender_email_id
,to_emails
,message
, optionalcontent_type
- Parameters:
-
get_conversation_thread
- Get complete conversation history- Parameters:
workspace_id
,reply_id
- Parameters:
-
list_email_accounts
- List configured email accounts- Parameters:
workspace_id
, optionalparams
(search, page, per_page)
- Parameters:
-
get_email_account_details
- Get account configuration and stats- Parameters:
workspace_id
,email_id
- Parameters:
-
update_email_account
- Modify account settings- Parameters:
workspace_id
,email_id
, optionaldaily_limit
,name
,email_signature
- Parameters:
-
get_account_campaigns
- See which campaigns use this email account- Parameters:
workspace_id
,email_id
- Parameters:
-
get_account_replies
- View replies received by this email account- Parameters:
workspace_id
,email_id
- Parameters:
-
bulk_update_email_signatures
- Update signatures across multiple accounts- Parameters:
workspace_id
,sender_email_ids
array,email_signature
- Parameters:
Total: 23 tools (1 original + 11 campaigns + 5 replies + 6 email accounts)
Add to your Claude MCP configuration:
{
"mcpServers": {
"InboxAssure": {
"command": "node",
"args": [
"/path/to/inboxassure-mcp-server/src/cli.js",
"--api-key=YOUR_INBOXASSURE_API_KEY",
"--stdio"
]
}
}
}
Add to your Cursor MCP settings:
{
"mcpServers": {
"InboxAssure Email Marketing": {
"command": "node",
"args": [
"/full/path/to/src/cli.js",
"--api-key=YOUR_INBOXASSURE_API_KEY",
"--stdio"
]
}
}
}
Once published to NPM:
{
"mcpServers": {
"InboxAssure": {
"command": "npx",
"args": [
"-y",
"inboxassure-mcp-server",
"--api-key=YOUR_INBOXASSURE_API_KEY",
"--stdio"
]
}
}
}
This server follows security best practices:
-
Client-provided: API keys are provided via
--api-key
argument - No server storage: Keys are never stored on the server
- Header extraction: Supports multiple header formats for compatibility
- Per-request authentication: Each API call uses the client's key
# Start with placeholder API key (update in package.json)
npm run dev
npm run dev:stdio
# Linting (placeholder)
npm run lint
-
Start the server:
node src/cli.js --api-key=YOUR_KEY --stdio
-
Send test JSON-RPC messages:
{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
The project includes PM2 ecosystem configuration:
# Deploy to production server
ssh -i ~/.ssh/mcpx root@167.99.230.52 "cd /root/mcpx && git pull && pm2 restart all"
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY src/ ./src/
EXPOSE 3000
CMD ["node", "src/cli.js"]
The server integrates with the complete InboxAssure API:
-
Base URL:
https://bison.imnodev.com/api/
-
Authentication:
X-API-Key
header with InboxAssure API key - Endpoints: Campaigns, Replies, Email Accounts APIs
- workspace_id: Your InboxAssure workspace identifier
-
Pagination:
page
(default: 1),per_page
(default: 15, max: 100) -
Filtering:
search
,status
,folder
parameters -
Date Format: ISO 8601 (
YYYY-MM-DD
orYYYY-MM-DDTHH:MM:SSZ
)
-
"API key is required": Ensure
--api-key
is provided in client configuration -
Connection errors: Verify API key format starts with
iak_
- Tools not appearing: Check client MCP configuration and restart client
- Permission errors: Verify API key has appropriate workspace permissions
The server provides extensive debug logging:
# Check server logs
tail -f /var/log/your-app/mcp-server.log
# Enable verbose debugging
DEBUG=* node src/cli.js --api-key=YOUR_KEY
-
Windows:
%APPDATA%\Claude\logs\mcp*.log
-
macOS:
~/Library/Logs/Claude/mcp*.log
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details.
For issues and questions:
- Create an issue on GitHub
- Check the InboxAssure API documentation
- Review the MCP specification