Skip to main content
Glama
monica-mcp

monica-mcp

by philipp-mlr

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=true to block all write operations

  • Delete protection — set MONICA_DISABLE_DELETE=true to block only deletes

  • Tool exclusion — set MONICA_EXCLUDE_TOOLS=monica_contact,monica_tag to remove specific tools

  • Read-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

{
  "mcpServers": {
    "monica": {
      "command": "npx",
      "args": ["-y", "monica-mcp"],
      "env": {
        "MONICA_BASE_URL": "https://your-monica-instance.com",
        "MONICA_API_TOKEN": "your-bearer-token"
      }
    }
  }
}
{
  "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.js

Configuration

Environment Variable

Required

Default

Description

MONICA_API_TOKEN

Yes

—

Bearer token for Monica API

MONICA_BASE_URL

No

https://app.monicahq.com

Your Monica instance URL

MONICA_READ_ONLY

No

false

Block all create/update/delete operations

MONICA_DISABLE_DELETE

No

false

Block only delete operations

MONICA_EXCLUDE_TOOLS

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

monica_contact

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

monica_address

list, get, create, update, delete

Address CRUD

monica_contact_field

list, get, create, update, delete

Contact field CRUD (email, phone, etc.)

monica_contact_field_type

list, get, create, update, delete

Contact field type CRUD

monica_company

list, get, create, update, delete

Company CRUD

monica_occupation

list, get, create, update, delete

Occupation CRUD

monica_group

list, get, create, update, delete

Contact group CRUD

Communication

Tool

Actions

Description

monica_activity

list, get, create, update, delete

Activity CRUD

monica_activity_type

list, get, create, update, delete

Activity type CRUD

monica_activity_type_category

list, get

Activity type categories (read-only)

monica_call

list, get, create, update, delete

Call log CRUD

monica_conversation

list, get, create, update, delete, list_messages, add_message, update_message, delete_message

Conversation + message threading

Productivity

Tool

Actions

Description

monica_note

list, get, create, update, delete

Note CRUD

monica_task

list, get, create, update, delete

Task CRUD

monica_reminder

list, get, create, update, delete

Reminder CRUD

monica_tag

list, get, create, update, delete

Tag CRUD

monica_journal_entry

list, get, create, update, delete

Journal entry CRUD

Professional & Financial

Tool

Actions

Description

monica_relationship

list, get, create, update, delete

Relationship CRUD

monica_relationship_type

list, get

Relationship types (read-only per API)

monica_relationship_type_group

list, get

Relationship type groups (read-only per API)

monica_gift

list, get, create, update, delete, associate_photo

Gift CRUD + photo association

monica_debt

list, get, create, update, delete

Debt CRUD

Reference Data (read-only)

Tool

Actions

Description

monica_country

list, get

Countries

monica_currency

list, get

Currencies

monica_gender

list, get

Genders

monica_audit_log

list

Audit logs

monica_user

get

Authenticated user info

monica_photo

list, get

Photos (upload not supported by Monica API)

monica_document

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 coverage

Roadmap

  • 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 whoami

Publishing 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-run

CI/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:

  1. Create an npm Automation access token at https://www.npmjs.com/settings/~/tokens (type must be Automation, not "Publish" — Automation tokens bypass 2FA)

  2. Add it as a GitHub secret: NPM_TOKEN

  3. Tag and push:

    npm version patch
    git push origin main --tags

License

MIT

Available Tools

29 tools
monica_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

    B3/5.0

    Scored across 29 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count4/5

    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.

    Completeness4/5

    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

    ActivityNo data
    ResponsivenessSyncing

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An 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.
      2
      MIT
    • A
      license
      Not graded
      quality
      F
      maintenance
      Comprehensive MCP server for the Mautic marketing automation API, providing 203 tools for managing contacts, campaigns, emails, segments, and more.
      2
      ISC
    • A
      license
      C
      quality
      B
      maintenance
      MCP server for Pipedrive CRM providing 88 tools for full CRUD on deals, persons, organizations, activities, and more, with custom field resolution and safety guards.
      93
      8
      MIT
    • A
      license
      B
      quality
      A
      maintenance
      MCP server that provides 62 tools to manage Outlook mail, calendar, contacts, and tasks for personal Microsoft accounts via Microsoft Graph API.
      71
      796 PyPI
      44
      MIT