🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

civicrm-mcp

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

civicrm-mcp

Model Context Protocol server for CiviCRM — AuthX-first, schema-introspected.

latest
Source
npmnpm
Version
0.1.2
Version published
Weekly downloads
48
9.09%
Maintainers
1
Weekly downloads
 
Created
Source

civicrm-mcp

A Model Context Protocol server for CiviCRM. Lets Claude Desktop, Claude Code, and other MCP-compatible clients talk to a CiviCRM install through its APIv4.

Status: v0.1 — stdio transport, three tools, AuthX-first auth.

Requirements

  • Node.js 18.17 or later
  • CiviCRM 5.47 or later (tested against 5.59+)
  • A CiviCRM install on Drupal, WordPress, Backdrop, or Standalone

Install

npm install
npm run build

Don't have a CiviCRM yet?

See docs/INSTALL_CIVICRM.md for a 20-minute guide to running CiviCRM Standalone locally via DDEV.

Configure

Generate an API key for a dedicated "MCP Bot" contact:

  • Create a CMS user + CiviCRM contact just for this integration.
  • Grant it the CiviCRM permissions you want exposed (access CiviCRM, view all contacts, optionally edit all contacts, authenticate with api key).
  • On that contact's summary page → MoreAPI Key, generate a random 20+ character key.

Copy .env.example to .env and fill in:

CIVICRM_BASE_URL=https://crm.example.org
CIVICRM_CMS=drupal            # or wordpress | standalone | backdrop
CIVICRM_API_KEY=...
CIVICRM_SITE_KEY=...          # only if the site-key guard is enabled
CIVICRM_AUTH_MODE=authx       # or legacy for pre-AuthX sites
CIVICRM_ALLOW_WRITES=false    # writes off by default
CIVICRM_ALLOW_DELETES=false   # deletes off by default

Use with Claude Desktop / Code

Add to your MCP config (~/Library/Application Support/Claude/claude_desktop_config.json or the equivalent for Claude Code):

{
  "mcpServers": {
    "civicrm": {
      "command": "node",
      "args": ["/absolute/path/to/civicrm-mcp/dist/index.js"],
      "env": {
        "CIVICRM_BASE_URL": "https://crm.example.org",
        "CIVICRM_CMS": "drupal",
        "CIVICRM_API_KEY": "…",
        "CIVICRM_ALLOW_WRITES": "false"
      }
    }
  }
}

Tools

Diagnostics

ToolWhat it does
civicrm_system_infoConnectivity / version sanity check; resolves the authenticated bot contact.

Read

ToolWhat it does
civicrm_find_contactsSearch contacts by name or primary email.
civicrm_get_contactFetch one contact by id, with sensible default fields.
civicrm_get_relationshipsList a contact's relationships with direction resolved.
civicrm_get_contributionsList contributions with filters (donor, date window, status, type) and running sum.
civicrm_list_eventsList events (defaults to upcoming only).

Introspection

ToolWhat it does
civicrm_list_entitiesList every APIv4 entity available on the install (incl. extensions).
civicrm_describe_entityReturn fields + actions for an entity. Call this before civicrm_api4 if unsure.

Write (require CIVICRM_ALLOW_WRITES=true)

ToolWhat it does
civicrm_create_contactCreate a contact; chains email/phone creation.
civicrm_update_contactUpdate fields on an existing contact by id.
civicrm_log_activityRecord an Activity (Phone Call, Meeting, Email, custom types).
civicrm_record_contributionRecord a donation / contribution.
civicrm_add_to_groupAdd a contact to a group (idempotent).
civicrm_remove_from_groupMark a contact as Removed from a group (preserves history).
civicrm_register_for_eventRegister a contact for an event (Participant.create).
civicrm_create_membershipCreate a Membership record; CiviCRM auto-calculates dates from the type.

Escape hatch

ToolWhat it does
civicrm_api4Generic APIv4 passthrough — any entity, any action. Gated by env flags.

Safety

  • Writes (create, update, save, submit) are refused unless CIVICRM_ALLOW_WRITES=true.
  • Deletes (delete, replace) are refused unless CIVICRM_ALLOW_DELETES=true.
  • api_key and hash fields are stripped from contact responses.
  • stdout is reserved for the MCP protocol; logs go to stderr.

Licence

MIT

Keywords

mcp

FAQs

Package last updated on 24 Apr 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts