monica-mcp
This MCP server provides full-coverage integration with Monica CRM through 29 tools, enabling AI assistants to manage personal relationships and contacts across all major Monica API endpoints.
Contact Management
List, get, create, update, delete, and search contacts by name, nickname, email, job, or company
Manage addresses, custom contact fields, contact field types (e.g., Instagram, WhatsApp), companies, occupations, and groups
Assign or remove tags from contacts
Communication & Activities
Log activities (with type, date, emotions) and manage activity types/categories
Log calls and manage conversations across channels, including full message threading (add, update, delete messages)
Productivity & Planning
Full CRUD for notes, tasks (with completion status), reminders (one-time or recurring), tags, and journal entries
Relationships & Finances
Define and track relationships between contacts; browse relationship types and groups (read-only)
Track gifts (ideas, received, offered) with optional photo association
Record debts between you and your contacts
Reference & System Data (Read-Only)
Browse countries, currencies, genders, activity types, and relationship type definitions
View audit logs, authenticated user info, photos, and documents
Safety Features
Read-only mode to block all write operations
Delete protection mode to block only deletions
Tool exclusion to remove specific tools from availability
All delete actions require an explicit
action: "delete"parameter and include irreversibility warnings
Provides tools for managing contacts, activities, notes, tasks, reminders, relationships, gifts, debts, and other CRM data in a Monica instance.
Click on "Deploy 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., "@monica-mcp search contacts named Smith"
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.
monica-mcp
A full-coverage Model Context Protocol server for Monica CRM. 29 tools covering all 30 API endpoints — search contacts, log activities, manage notes/tasks/reminders, track relationships, and more.
Designed for AI assistants like Claude Desktop, Hermes, Cline, and any MCP-compatible client.
Note: This project is 100% AI-generated. The code, tests, CI/CD, and documentation were all written by an AI agent (Hermes). No human wrote any of the code.
Tested against a live Monica v4.1.2 instance on the author's homelab. All 29 tools validated with create → read → update → delete lifecycle tests. Test data was cleaned up after verification.
Design Philosophy
Action-based tools (not one tool per CRUD op)
Most MCP servers expose 5 separate tools per entity (list, get, create, update, delete). With 30 entities that's 150 tools — flooding the LLM's context window with ~50K+ tokens just for tool definitions. Research shows tool selection accuracy degrades quickly past 15-20 tools.
This server uses one tool per entity with an action parameter:
monica_contact(action: "list" | "get" | "create" | "update" | "delete", ...)Result: 29 tools instead of 150+, ~10-15K tokens for definitions, and better tool selection accuracy.
Safety by design
Delete is an action, not a tool — the AI must explicitly pass
action: "delete"rather than calling a tool named "delete"Read-only mode — set
MONICA_READ_ONLY=trueto block all write operationsDelete protection — set
MONICA_DISABLE_DELETE=trueto block only deletesTool exclusion — set
MONICA_EXCLUDE_TOOLS=monica_contact,monica_tagto remove specific toolsRead-only entities — countries, currencies, genders have no create/update/delete actions
Delete warnings — every tool description includes "⚠️ delete is irreversible"
Related MCP server: mcp-mautic
Quick Start
npx (recommended)
{
"mcpServers": {
"monica": {
"command": "npx",
"args": ["-y", "monica-mcp"],
"env": {
"MONICA_BASE_URL": "https://your-monica-instance.com",
"MONICA_API_TOKEN": "your-bearer-token"
}
}
}
}Read-only mode (recommended for exploration)
{
"mcpServers": {
"monica": {
"command": "npx",
"args": ["-y", "monica-mcp"],
"env": {
"MONICA_BASE_URL": "https://your-monica-instance.com",
"MONICA_API_TOKEN": "your-bearer-token",
"MONICA_READ_ONLY": "true"
}
}
}
}Local development
git clone https://github.com/philipp-mlr/monica-mcp.git
cd monica-mcp
npm install
npm run build
MONICA_BASE_URL=https://your-monica-instance.com MONICA_API_TOKEN=your-token node dist/index.jsConfiguration
Environment Variable | Required | Default | Description |
| Yes | — | Bearer token for Monica API |
| No |
| Your Monica instance URL |
| No |
| Block all create/update/delete operations |
| No |
| Block only delete operations |
| No | — | Comma-separated tool names to exclude |
Getting an API token
In Monica, go to Settings → API → Create New Token. Copy the generated Bearer token.
Tool Reference
All 29 tools use an action parameter. Available actions vary per entity — see each tool's description for details.
Contact Management
Tool | Actions | Description |
| list, get, create, update, delete, search, set_tags, update_career, list_activities, list_calls, list_addresses, list_notes, list_tasks, list_reminders, list_gifts, list_debts, list_relationships, list_conversations, list_photos, list_documents, list_fields, list_audit_logs, assign_tag, remove_tag | Full contact management with 15+ contact-scoped sub-queries |
| list, get, create, update, delete | Address CRUD |
| list, get, create, update, delete | Contact field CRUD (email, phone, etc.) |
| list, get, create, update, delete | Contact field type CRUD |
| list, get, create, update, delete | Company CRUD |
| list, get, create, update, delete | Occupation CRUD |
| list, get, create, update, delete | Contact group CRUD |
Communication
Tool | Actions | Description |
| list, get, create, update, delete | Activity CRUD |
| list, get, create, update, delete | Activity type CRUD |
| list, get | Activity type categories (read-only) |
| list, get, create, update, delete | Call log CRUD |
| list, get, create, update, delete, list_messages, add_message, update_message, delete_message | Conversation + message threading |
Productivity
Tool | Actions | Description |
| list, get, create, update, delete | Note CRUD |
| list, get, create, update, delete | Task CRUD |
| list, get, create, update, delete | Reminder CRUD |
| list, get, create, update, delete | Tag CRUD |
| list, get, create, update, delete | Journal entry CRUD |
Professional & Financial
Tool | Actions | Description |
| list, get, create, update, delete | Relationship CRUD |
| list, get | Relationship types (read-only per API) |
| list, get | Relationship type groups (read-only per API) |
| list, get, create, update, delete, associate_photo | Gift CRUD + photo association |
| list, get, create, update, delete | Debt CRUD |
Reference Data (read-only)
Tool | Actions | Description |
| list, get | Countries |
| list, get | Currencies |
| list, get | Genders |
| list | Audit logs |
| get | Authenticated user info |
| list, get | Photos (upload not supported by Monica API) |
| list, get | Documents (upload not supported by Monica API) |
API Limitations
Feature | Status | Reason |
Photo upload | Not supported | Monica API returns 405 |
Document upload | Not supported | Monica API returns 405 |
Tech Stack
Node.js 18+ — runtime
TypeScript — type safety
@modelcontextprotocol/sdk — MCP protocol implementation
Zod — input validation
Vitest — testing
Development
npm run dev # Start with hot reload (tsx watch)
npm run typecheck # Type-check without emitting
npm test # Run tests (26 tests)
npm test -- --coverage # Run tests with coverageRoadmap
Automated integration tests — spin up a fresh Monica Docker container in CI, run tools against it, tear it down. This would catch API regressions before they affect users.
Rate limiting — respect Monica's 60 req/min limit with client-side throttling
Photo/document upload — if Monica's API ever supports these, add the tools back
npm release cadence — publish new versions automatically when the version watchdog detects a Monica release that passes integration tests
Publishing to npm
This package is published to npmjs.com for npx usage.
First-time setup
# 1. Create an npm account at https://www.npmjs.com/signup
# 2. Login on the CLI
npm login
# 3. Verify you're logged in
npm whoamiPublishing a new version
# 1. Bump the version in package.json
npm version patch # 0.1.0 → 0.1.1 (bug fixes)
npm version minor # 0.1.0 → 0.2.0 (new features, backwards compatible)
npm version major # 0.1.0 → 1.0.0 (breaking changes)
# 2. Build and publish
npm run build
npm publish
# Or dry-run first to see what gets published:
npm publish --dry-runCI/CD auto-publish
The included GitHub Actions workflow (.github/workflows/release.yml) auto-publishes to npm when a tag v*.*.* is pushed. To use this:
Create an npm Automation access token at https://www.npmjs.com/settings/~/tokens (type must be Automation, not "Publish" — Automation tokens bypass 2FA)
Add it as a GitHub secret:
NPM_TOKENTag and push:
npm version patch git push origin main --tags
License
MIT
Available Tools
29 toolsmonica_activityA
Manage activitys. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, page, limit, +6 more.
monica_activity_typeA
Manage activity_types. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, name, page, +2 more.
monica_activity_type_categoryD
Manage activity_type_categorys. Actions: list, get.
Inputs: action (required), id, page, limit.
monica_addressC
Manage addresss. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, city, name, +7 more.
monica_audit_logB
List all audit logs in your account.
Inputs: no named parameters.
monica_callA
Manage calls. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, page, limit, +3 more.
monica_companyB
Manage companys. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, name, page, +3 more.
monica_contactC
Manage contacts. Actions: list, get, create, update, delete. ⚠️ delete is irreversible. Additional actions: search, set_tags, update_career, list_activities, list_calls, list_addresses, list_notes, list_tasks, list_reminders, list_gifts, list_debts, list_relationships, list_conversations, list_photos, list_documents, list_fields, list_audit_logs, assign_tag, remove_tag.
Inputs: job (required), tags (required), action (required), tag_id (required), +21 more.
monica_contact_fieldA
Manage contact_fields. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, data, page, +3 more.
monica_contact_field_typeA
Manage contact_field_types. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, name, page, +5 more.
monica_conversationC
Manage conversations. Actions: list, get, create, update, delete. ⚠️ delete is irreversible. Additional actions: list_messages, add_message, update_message, delete_message.
Inputs: action (required), message_id (required), message_content (required), id, +7 more.
monica_countryD
Manage countrys. Actions: list, get.
Inputs: action (required), id, page, limit.
monica_currencyC
Manage currencys. Actions: list, get.
Inputs: action (required), id, page, limit.
monica_debtB
Manage debts. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, page, limit, +5 more.
monica_documentC
Manage documents. Actions: list, get.
Inputs: action (required), id, page, limit.
monica_genderC
Manage genders. Actions: list, get.
Inputs: action (required), id, page, limit.
monica_giftB
Manage gifts. Actions: list, get, create, update, delete. ⚠️ delete is irreversible. Additional actions: associate_photo.
Inputs: action (required), photo_id (required), id, url, +9 more.
monica_groupA
Manage groups. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, name, page, +1 more.
monica_journal_entryA
Manage journal_entrys. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, page, post, +2 more.
monica_noteB
Manage notes. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, body, page, +3 more.
monica_occupationA
Manage occupations. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, page, limit, +9 more.
monica_photoD
Manage photos. Actions: list, get.
Inputs: action (required), id, page, limit.
monica_relationshipB
Manage relationships. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, page, limit, +3 more.
monica_relationship_typeC
Manage relationship_types. Actions: list, get.
Inputs: action (required), id, page, limit.
monica_relationship_type_groupD
Manage relationship_type_groups. Actions: list, get.
Inputs: action (required), id, page, limit.
monica_reminderA
Manage reminders. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, page, limit, +6 more.
monica_tagA
Manage tags. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, name, page, +2 more.
monica_taskB
Manage tasks. Actions: list, get, create, update, delete. ⚠️ delete is irreversible.
Inputs: action (required), id, page, limit, +5 more.
monica_userA
Get the currently authenticated user's information.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 29 tools
Each tool is named after a distinct entity (e.g., monica_contact, monica_call) and clearly specifies the actions supported. Over 29 tools, no two appear to cover the same domain, making selection unambiguous.
All tools follow a consistent pattern: 'monica_' followed by a singular noun in snake_case (e.g., monica_activity_type). No mixing of conventions or verb-noun styles; uniformity is high.
29 tools are appropriate for a comprehensive personal CRM server covering contacts, activities, calls, notes, tasks, etc. While slightly on the higher side, each tool corresponds to a well-defined entity and earns its place.
The tool set offers full CRUD for most major entities (contacts, activities, calls, tasks, etc.) and includes additional actions like search and tagging. Minor gaps exist (e.g., documents only have list/get, no create/update/delete), but overall coverage is strong.
Maintenance
Related MCP Connectors
MCP server for Getfly CRM — customers, opportunities, orders, tickets and tasks.
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
Secure MCP server for exploring incwo CRM data, documents, and email workflows.
Unofficial remote MCP server for Less Annoying CRM: OAuth 2.1, read-only grants, 10 tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides 36 tools for interacting with the amoCRM (Kommo) API v4, covering leads, contacts, companies, and tasks. It supports full entity lifecycles, account analytics, and bulk operations with integrated OAuth 2.0 and rate limiting.2MIT
- AlicenseNot gradedqualityFmaintenanceComprehensive MCP server for the Mautic marketing automation API, providing 203 tools for managing contacts, campaigns, emails, segments, and more.2ISC
- AlicenseCqualityBmaintenanceMCP server for Pipedrive CRM providing 88 tools for full CRUD on deals, persons, organizations, activities, and more, with custom field resolution and safety guards.938MIT
- AlicenseBqualityAmaintenanceMCP server that provides 62 tools to manage Outlook mail, calendar, contacts, and tasks for personal Microsoft accounts via Microsoft Graph API.71796 PyPI44MIT