Civicrm MCP Server
by yogiadhikio.github.YogiAdhik/civicrm-mcpv0.1.2
Model Context Protocol server for CiviCRM — AuthX-first, schema-introspected, write-gated.
context tax
queued
security
queued
cold start
queued
freshness
Slowing5mo ago
Install Civicrm MCP server
Install in Claude Code
claude mcp add civicrm -e CIVICRM_BASE_URL='<civicrm-base-url>' -e CIVICRM_API_KEY='<civicrm-api-key>' -e CIVICRM_SITE_KEY='<civicrm-site-key>' -- npx -y civicrm-mcpInstall in Cursor
{
"mcpServers": {
"civicrm": {
"command": "npx",
"args": [
"-y",
"civicrm-mcp"
],
"env": {
"CIVICRM_BASE_URL": "<civicrm-base-url>",
"CIVICRM_API_KEY": "<civicrm-api-key>",
"CIVICRM_SITE_KEY": "<civicrm-site-key>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).
Install in Claude Desktop
{
"mcpServers": {
"civicrm": {
"command": "npx",
"args": [
"-y",
"civicrm-mcp"
],
"env": {
"CIVICRM_BASE_URL": "<civicrm-base-url>",
"CIVICRM_API_KEY": "<civicrm-api-key>",
"CIVICRM_SITE_KEY": "<civicrm-site-key>"
}
}
}
}Settings → Developer → Edit Config (claude_desktop_config.json), then restart.
Install in VS Code
{
"servers": {
"civicrm": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"civicrm-mcp"
],
"env": {
"CIVICRM_BASE_URL": "<civicrm-base-url>",
"CIVICRM_API_KEY": "<civicrm-api-key>",
"CIVICRM_SITE_KEY": "<civicrm-site-key>"
}
}
}
}Add to .vscode/mcp.json in your workspace.
Install in Windsurf
{
"mcpServers": {
"civicrm": {
"command": "npx",
"args": [
"-y",
"civicrm-mcp"
],
"env": {
"CIVICRM_BASE_URL": "<civicrm-base-url>",
"CIVICRM_API_KEY": "<civicrm-api-key>",
"CIVICRM_SITE_KEY": "<civicrm-site-key>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
Configuration
| Variable | Required | Secret | Description |
|---|---|---|---|
| CIVICRM_BASE_URL | yes | — | Base URL of the CiviCRM install, e.g. https://crm.example.org. No trailing slash. |
| CIVICRM_API_KEY | yes | yes | API key of the contact the server authenticates as. Keep it on a dedicated 'MCP Bot' contact with minimum permissions. |
| CIVICRM_CMS | — | — | CMS host: drupal, wordpress, standalone, or backdrop. |
| CIVICRM_SITE_KEY | — | yes | Optional — only needed if the site enables the AuthX site-key guard. |
| CIVICRM_AUTH_MODE | — | — | authx (default, recommended) or legacy for pre-5.36 installs. |
| CIVICRM_ALLOW_WRITES | — | — | Set to 'true' to enable create / update / save / submit actions. Off by default. |
| CIVICRM_ALLOW_DELETES | — | — | Set to 'true' to enable delete / replace actions. Off by default. |
Freshness
Slowing — last maintenance signal 5mo ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-05-18 · 5mo ago · GitHub
Latest release
no data · GitHub
Package published
no data · npm/PyPI
Registry entry updated
2026-04-24 · 6mo ago · official registry · v0.1.2
FAQ
›How do I install the Civicrm MCP server in Claude Code?
Run: claude mcp add civicrm -e CIVICRM_BASE_URL='<civicrm-base-url>' -e CIVICRM_API_KEY='<civicrm-api-key>' -e CIVICRM_SITE_KEY='<civicrm-site-key>' -- npx -y civicrm-mcp. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does Civicrm require an API key?
Yes. It expects CIVICRM_BASE_URL, CIVICRM_API_KEY, CIVICRM_SITE_KEY, of which 2 are secrets.
›Can I use Civicrm as a remote (hosted) MCP server?
No hosted endpoint is published; it runs locally over stdio.
›Is Civicrm in the official MCP registry?
Yes, as io.github.YogiAdhik/civicrm-mcp.