{"apiVersion":"v1","directorySlug":"civico-mcp-31c7af7144","title":"civico","description":"Beratung, Hosting und Support rund um CiviCRM – aus Berlin.","pageUrl":"https://www.mcpbundles.com/skills/civico-mcp-31c7af7144","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.civico.de/mcp","hostedMcpUrl":null,"toolCount":8,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"de.civico/civico-mcp-31c7af7144","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"civicrm_search","description":"MEANING-based search over indexed CiviCRM code and documentation. Ask it a question in plain words — 'why does my recurring contribution not renew the membership', 'prevent duplicate contacts on import'. It matches on sense, not on wording, so the answer can use none of your terms and still be found. This is what it is for and where it is strongest. By default NOT keyword search: do NOT write boolean or FTS syntax. 'Membership AND token*' searches for the word 'AND'; quotes buy no exact-phrase m","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"cms":{"enum":["drupal","wordpress","joomla","standalone"],"type":"string"},"kind":{"enum":["code","docs","both"],"type":"string","default":"both"},"mode":{"enum":["semantic","keyword"],"type":"string","default":"semantic"},"repo":{"type":"string"},"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string"},"trust":{"enum":["official","maintainer","community","untrusted"],"type":"string"},"intent":{"enum":["auto","exact","howto","symptom","architecture","version"],"type":"string","default":"auto"},"version":{"type":"string","pattern":"^[4-9]\\.\\d{1,2}(?:\\.\\d{1,2})?$"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"civicrm_search","displayName":"civicrm_search","title":"civicrm_search"},{"name":"civicrm_read","description":"Read a file from the index by its relative path (from a prior search/find result). Source files can be large — when the hit named a line (civicrm_search reports 'line N' where the matching passage starts, civicrm_grep and civicrm_find_hook report one per match), read that line ±30 rather than the whole file. Widen or drop the range only if that window turns out not to contain the answer.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["path"],"properties":{"path":{"type":"string"},"line_end":{"type":"integer","maximum":9007199254740991,"minimum":1},"line_start":{"type":"integer","maximum":9007199254740991,"minimum":1}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"civicrm_read","displayName":"civicrm_read","title":"civicrm_read"},{"name":"civicrm_evidence","description":"Read several bounded source passages in one call. Use after search when the answer needs corroboration from multiple results. Enforces one shared character budget, preserves source paths/lines, and marks community text as untrusted evidence.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["path"],"properties":{"line":{"type":"integer","maximum":9007199254740991,"minimum":1},"path":{"type":"string"},"context":{"type":"integer","default":30,"maximum":100,"minimum":1}}},"maxItems":10,"minItems":1},"max_chars":{"type":"integer","default":20000,"maximum":50000,"minimum":1000}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"civicrm_evidence","displayName":"civicrm_evidence","title":"civicrm_evidence"},{"name":"civicrm_grep","description":"Exact/regex search over the indexed source checkouts (ripgrep). FIRST CHOICE whenever you already know the string you are looking for: a class, hook, method, constant, setting key, error message. 'hook_civicrm_post', 'CRM_Utils_Hook::post', '$entity->save()'. civicrm_search matches on meaning, so it can rank a near-miss above the literal one you named; this tool cannot, because it only returns literal matches. Punctuation works here and nowhere else. Rust regex syntax; set fixed=true for a liter","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["pattern"],"properties":{"glob":{"type":"string"},"repo":{"type":"string"},"fixed":{"type":"boolean","default":false},"limit":{"type":"integer","default":30,"maximum":100,"minimum":1},"pattern":{"type":"string"},"ignore_case":{"type":"boolean","default":false}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"civicrm_grep","displayName":"civicrm_grep","title":"civicrm_grep"},{"name":"civicrm_find_hook","description":"Find implementations of a CiviCRM hook across indexed code. Accepts 'pre', 'civicrm_pre', or 'hook_civicrm_pre'. Returns file, line, and implementing function per hit — civicrm_read(path, line range) shows the full implementation. The common hooks (pre, post, buildForm, alterMailParams) are implemented by most extensions in the index, so results are capped and report the true total: narrow with repo ('civicrm-core' for the reference implementation, 'de.systopia.*' for a family) rather than raisi","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"body":{"type":"integer","default":0,"maximum":60,"minimum":0},"name":{"type":"string"},"repo":{"type":"string"},"limit":{"type":"integer","default":30,"maximum":200,"minimum":1},"tests":{"enum":["include","only","exclude"],"type":"string","default":"include"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"civicrm_find_hook","displayName":"civicrm_find_hook","title":"civicrm_find_hook"},{"name":"civicrm_find_entity","description":"Locate APIv4, BAO, and DAO source files for a CiviCRM entity (e.g. 'Contact', 'Contribution', 'Membership').","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"name":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"civicrm_find_entity","displayName":"civicrm_find_entity","title":"civicrm_find_entity"},{"name":"civicrm_extension_info","description":"Metadata for a published CiviCRM extension from the civicrm.org directory (version, description, maintainer, download URL) plus indexed file/hook counts. Requires the registry to be enabled in the index sources.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["key"],"properties":{"key":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"civicrm_extension_info","displayName":"civicrm_extension_info","title":"civicrm_extension_info"},{"name":"civicrm_stats","description":"Index statistics: totals by kind, repo count, and the largest repos. Verifies the index is populated. Pass repo to ask about ONE repo ('is de.systopia.xcm indexed, and how big') — that is the cheap, common question. full=true dumps all 300+ repos and is rarely what you want.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"top":{"type":"integer","default":15,"maximum":100,"minimum":1},"full":{"type":"boolean","default":false},"repo":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"civicrm_stats","displayName":"civicrm_stats","title":"civicrm_stats"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=civico&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AuY2l2aWNvLmRlL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22civico%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.civico.de%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22civico%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.civico.de%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=civico&connectorUrl=https%3A%2F%2Fmcp.civico.de%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"civico\" --url \"https://mcp.civico.de/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/civico-mcp-31c7af7144","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/civico-mcp-31c7af7144/tools/{tool}","mcpServerUrl":"https://mcp.civico.de/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/civico-mcp-31c7af7144?live=1"}