Skip to content
VS Code

civicrm mcp for VS Code

io.github.yogiadhik/civicrm-mcp

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

client:VS Code transport:stdio runtime:npm

Install civicrm mcp in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "civicrm-base-url",
      "description": "CIVICRM_BASE_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "civicrm-api-key",
      "description": "CIVICRM_API_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "civicrm-cms",
      "description": "CIVICRM_CMS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "civicrm-site-key",
      "description": "CIVICRM_SITE_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "civicrm-auth-mode",
      "description": "CIVICRM_AUTH_MODE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "civicrm-allow-writes",
      "description": "CIVICRM_ALLOW_WRITES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "civicrm-allow-deletes",
      "description": "CIVICRM_ALLOW_DELETES",
      "password": true
    }
  ],
  "servers": {
    "civicrm-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "civicrm-mcp"
      ],
      "env": {
        "CIVICRM_BASE_URL": "${input:civicrm-base-url}",
        "CIVICRM_API_KEY": "${input:civicrm-api-key}",
        "CIVICRM_CMS": "${input:civicrm-cms}",
        "CIVICRM_SITE_KEY": "${input:civicrm-site-key}",
        "CIVICRM_AUTH_MODE": "${input:civicrm-auth-mode}",
        "CIVICRM_ALLOW_WRITES": "${input:civicrm-allow-writes}",
        "CIVICRM_ALLOW_DELETES": "${input:civicrm-allow-deletes}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

civicrm mcp in other clients