Where civicrm_mcp fits¶
civicrm_mcp is a CiviCRM extension that lets an organisation's own AI assistant work with CiviCRM safely, through MCP. Among the proposed building blocks it is the MCP gateway, and it hosts the shared tool registry. This page sets out what it takes on, now and later, and what belongs elsewhere.
Today's scope is set by the extension itself
The extension's own Scope and non-goals page is authoritative for what it does now. This page describes the longer-term picture and how it connects to the rest of these notes.
flowchart LR
subgraph OUT["Other extensions or services"]
direction TB
K["Tool packs<br/>fundraising · cases · events"]
Q["Configuration · import ·<br/>data quality · semantic search"]
A["Assistants inside CiviCRM<br/>+ AI provider setting"]
KS["Knowledge service<br/>on civicrm.org"]
end
subgraph IN["civicrm_mcp"]
direction TB
E["MCP endpoint<br/>+ OAuth 2.1 sign-in"]
R["Tool registry"]
T["Generic read tools<br/>APIv4 · SearchKit"]
W["Preview-and-confirm<br/>framework for writes"]
L["Call log · privacy controls<br/>· admin screens"]
end
K -- "register tools" --> R
Q -- "register tools" --> R
A -- "use the same tools" --> R
classDef inside fill:#e0f2f1,stroke:#00897b,color:#004d40
classDef outside fill:#fff3e0,stroke:#ef6c00,color:#e65100
classDef hub fill:#b2dfdb,stroke:#00695c,stroke-width:2px,color:#004d40
class E,T,W,L inside
class R hub
class K,Q,A,KS outside
click K "../capabilities/#extensions-that-could-provide-them"
click Q "../capabilities/#extensions-that-could-provide-them"
click A "../path-forward/#an-ai-provider-setting"
click R "../path-forward/#one-tool-registry-used-in-both-directions"
In scope¶
| Area | Today | Later (proposed) | Capability |
|---|---|---|---|
| MCP endpoint and sign-in | Inside CiviCRM, OAuth 2.1, WordPress sites | More CMSs (Drupal, Backdrop, Standalone) and more AI clients | C1 |
| Acting as the signed-in person | Every call runs with their permissions | — | C1 |
| Generic read tools | APIv4 and SearchKit, read-only | Smaller, better-described tools that use fewer tokens | C2 |
| Tool registry | Other extensions add tools through an event | The same registry used by assistants inside CiviCRM, not only by MCP | C3 |
| Changes | None: read-only | A preview-and-confirm framework every write tool uses, opt-in per site | C4 |
| Privacy controls | Permissions, ACLs, row limits | Per-person profiles; "safe for AI" fields that also limit filtering | C14 |
| Call log | One row per call, refused calls included | — | C1 |
| Administration | Allowlist, limits, revoke all tokens | Admin screens, so no command line is needed | — |
| Expert hand-off | — | A standard way for any tool to say "this needs an implementer" | C11 |
Out of scope, and where it belongs instead¶
| Not in civicrm_mcp | Why | Where it could live |
|---|---|---|
| Domain tool packs (fundraising, cases, events, volunteers) | Need domain experts and their own pace | Separate extensions that register tools |
| Configuration, starter kits, import, data quality, semantic search | Each is a substantial product of its own | Separate extensions using the registry and the preview framework |
| A chat interface or assistant inside CiviCRM | civicrm_mcp supplies tools and data; the conversation happens in the AI client | A separate in-app assistant extension, using the same registry |
| Running, choosing or paying for an AI model | Bring your own model | The organisation's own AI service, or an AI provider setting extension |
| API-key access for outside servers | Other MCP servers already offer it; civicrm_mcp is the signed-in, per-person option | Existing external MCP servers (related work) |
| A blanket permission bypass | The design rests on the AI acting as the person asking | — (narrow, reviewable exceptions only) |
| Long-running background AI work | PHP's request cycle can't host long agent loops | An external worker (C12) |
| Help before CiviCRM is installed | There is no site yet | A knowledge service on civicrm.org (C10) |
Open questions¶
- Should the tool registry eventually move out of civicrm_mcp, into its own extension or into core ("core when ready"), once assistants inside CiviCRM use it too?
- Which write tools come first, once the preview framework exists?
- Should "safe for AI" field markings be a CiviCRM-wide setting that every AI extension honours, rather than civicrm_mcp's alone?
Comments below, or as issues on the civicrm_mcp project.