{"name":"io.github.YogiAdhik/civicrm-mcp","slug":"yogiadhik-civicrm-mcp","title":null,"description":"Model Context Protocol server for CiviCRM — AuthX-first, schema-introspected, write-gated.","url":"https://mcp.market/server/yogiadhik-civicrm-mcp","rating":null,"grade":"B","score":72,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":15,"stars":0,"forks":0,"downloads_week":55,"last_push_at":"2026-05-18T20:02:23.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/YogiAdhik/civicrm-mcp","website":null,"version":"0.1.2","remotes":[],"packages":[{"registryType":"npm","identifier":"civicrm-mcp","version":"0.1.2","transport":{"type":"stdio"},"environmentVariables":[{"description":"Base URL of the CiviCRM install, e.g. https://crm.example.org. No trailing slash.","isRequired":true,"format":"string","name":"CIVICRM_BASE_URL"},{"description":"API key of the contact the server authenticates as. Keep it on a dedicated 'MCP Bot' contact with minimum permissions.","isRequired":true,"format":"string","isSecret":true,"name":"CIVICRM_API_KEY"},{"description":"CMS host: drupal, wordpress, standalone, or backdrop.","format":"string","default":"drupal","name":"CIVICRM_CMS"},{"description":"Optional — only needed if the site enables the AuthX site-key guard.","format":"string","isSecret":true,"name":"CIVICRM_SITE_KEY"},{"description":"authx (default, recommended) or legacy for pre-5.36 installs.","format":"string","default":"authx","name":"CIVICRM_AUTH_MODE"},{"description":"Set to 'true' to enable create / update / save / submit actions. Off by default.","format":"string","default":"false","name":"CIVICRM_ALLOW_WRITES"},{"description":"Set to 'true' to enable delete / replace actions. Off by default.","format":"string","default":"false","name":"CIVICRM_ALLOW_DELETES"}]}],"tools":[{"name":"civicrm_add_to_group","description":"Add a contact to a group (GroupContact status='Added'). Idempotent — updates an existing row rather than creating duplicates. Requires CIVICRM_ALLOW_WRITES=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_api4","description":"Generic APIv4 call. Accepts entity + action + params. Writes are gated by CIVICRM_ALLOW_WRITES; deletes by CIVICRM_ALLOW_DELETES. Use civicrm_describe_entity first if unsure of field names.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_create_contact","description":"Create a new CiviCRM contact. Chains email and phone creation when provided. Requires CIVICRM_ALLOW_WRITES=true.","write_action":true,"price_micros":0,"input_schema":null},{"name":"civicrm_create_membership","description":"Create a Membership record for a contact. CiviCRM will auto-calculate start/end dates from the membership type's duration if omitted. Requires CIVICRM_ALLOW_WRITES=true.","write_action":true,"price_micros":0,"input_schema":null},{"name":"civicrm_describe_entity","description":"Introspect an APIv4 entity — returns available fields (incl. custom fields) and actions. Call this before civicrm_api4 when unsure of field names or action support.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_find_contacts","description":"Search CiviCRM contacts by name or primary email. Returns id, display name, type, primary email and phone.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_get_contact","description":"Fetch a single CiviCRM contact by id. Returns core profile plus primary email/phone/address; pass `fields` to override.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_get_contributions","description":"List contributions (donations, dues, event fees) with optional filters by contact, date window, status, and financial type. Resolves donor display name and human-readable status labels.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_get_relationships","description":"List relationships (family, employer, membership, custom types) for a contact. Resolves the other party's display name and direction automatically.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_list_entities","description":"List all CiviCRM APIv4 entities available on this install (including those added by extensions). Optional substring filter.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_list_events","description":"List CiviEvent events. Defaults to upcoming only. Returns id, title, type, dates, public/online flags.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_log_activity","description":"Record an Activity against a target contact. Requires CIVICRM_ALLOW_WRITES=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_record_contribution","description":"Record a donation / contribution for a contact. Requires CIVICRM_ALLOW_WRITES=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_register_for_event","description":"Create a Participant record registering a contact for an event. Requires CIVICRM_ALLOW_WRITES=true.","write_action":true,"price_micros":0,"input_schema":null},{"name":"civicrm_remove_from_group","description":"Mark a contact as Removed from a group (GroupContact status='Removed'). Preserves history — does not hard-delete. Requires CIVICRM_ALLOW_WRITES=true.","write_action":true,"price_micros":0,"input_schema":null},{"name":"civicrm_system_info","description":"Connectivity sanity check — returns CiviCRM version (via Domain entity), the authenticated bot contact, and a count of installed extensions. Run first when debugging auth or URL setup.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civicrm_update_contact","description":"Update fields on a single CiviCRM contact by id. Requires CIVICRM_ALLOW_WRITES=true.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":72,"grade":"B","scanned_at":"2026-09-27T21:52:10.376Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T21:52:10.339Z","components":{"code":{"score":25,"max":25,"notes":["47 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":8,"max":15,"notes":["last push 132 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"civicrm-mcp","version":"0.1.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-04-24T18:41:31.164Z","repositoryUrl":"git+https://github.com/YogiAdhik/civicrm-mcp.git","weeklyDownloads":55}],"repo":{"found":true,"owner":"YogiAdhik","repo":"civicrm-mcp","archived":false,"pushedAt":"2026-05-18T20:02:23Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/135245698?v=4","ownerCreatedAt":"2023-06-01T14:36:36Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/135245698?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":55,"license":"MIT","lastPushAt":"2026-05-18T20:02:23.000Z","score":15}}}},"grade_history":[],"reviews":[]}