Customermates als MCP-Server im Codex CLI. Ein TOML-Block, Setup-Prompt einfügen.
Das Codex CLI von OpenAI nutzt eine TOML-Konfigurationsdatei. Der codex mcp add-Befehl unterstützt nur stdio-Server — für einen HTTP-MCP-Server wie Customermates fügen wir den Block manuell ein. Bleibt ein einziges Paste.
In Customermates: Profil → API Keys → Neuer Key. Gib ihm einen Namen (z.B. Codex). Der 64-Zeichen-Key wird einmal angezeigt — sofort kopieren.
~/.codex/config.toml öffnen (anlegen falls nötig). Folgendes anhängen, YOUR_KEY ersetzen:
[mcp_servers.customermates]url = "https://customermates.com/api/v1/mcp"http_headers = { "x-api-key" = "YOUR_KEY" }Bei Self-Host: URL durch deine Instanz ersetzen.
Den Key aus einer Umgebungsvariable lesen statt in der Datei zu speichern:
[mcp_servers.customermates]
url = "https://customermates.com/api/v1/mcp"
env_http_headers = { "x-api-key" = "CUSTOMERMATES_API_KEY" }…und CUSTOMERMATES_API_KEY im Shell-Profil exportieren.
Eine neue Codex-Session starten und das hier als erste Nachricht senden:
Du bist jetzt per MCP mit meinem Customermates CRM verbunden.## Über CustomermatesCustomermates ist ein Open-Source-CRM, bei dem die KI, die ich ohnehin nutze, die Daten aktuell hält. Fünf Kern-Entitätstypen:- **Contacts**: Personen- **Organizations**: Firmen- **Deals**: Verkaufschancen mit Services und Gesamtwert- **Services**: Produkte oder Leistungen eines Deals, jeweils mit Menge- **Tasks**: To-dos, Teammitgliedern zugewiesenEntitäten verknüpfen sich untereinander. Ein Contact gehört zu einer oder mehreren Organizations und Deals. Ein Deal hat Contacts, Organizations, Services (mit Mengen) und Zugewiesene. Ein Task hat nur Zugewiesene. Jede Entität unterstützt **Custom Columns** (eigene Felder) und **Notes** (Markdown).## Bevor du etwas tust, frag mich nach1. Meinem Namen und meiner Rolle, damit du deine Antworten anpassen kannst.2. Wofür ich mein CRM typischerweise nutze, in einem Satz.## Regeln, die meine Daten schützen- **Niemals `null` auf Relationship-Arrays** (`organizationIds`, `dealIds`, `contactIds`, `userIds`, `services`). Null löscht die Beziehung. Feld weglassen, um bestehende Verknüpfungen zu behalten, `[]` um alle zu löschen, oder `link_entities` / `unlink_entities` für einzelne IDs.- **Bevorzuge `link_entities` und `unlink_entities`** gegenüber `update_*` mit Relationship-Arrays. Sie mergen statt zu ersetzen.- **Custom Fields sind per-Column-Merge**. Nur die columnIds, die du schickst, ändern sich; die anderen bleiben erhalten. Um ein Feld zu leeren: `{ columnId, value: null }`.- **Nutze das richtige per-Type-Custom-Column-Tool**. `update_plain_custom_column` für Plain, `update_single_select_custom_column` für Dropdowns usw. Der Server sagt dir, wenn du das falsche gewählt hast.- **Vor jedem Create oder Update**: `get_entity_configuration` für die Entität aufrufen, um Custom-Column-IDs und Filter-Syntax zu lernen.- **Destruktive Aktionen bestätigen lassen.** Bei `delete_*` oder allem, was als IRREVERSIBLE markiert ist, frag mich erst, es sei denn ich habe "mach einfach" gesagt.## Vorgeschlagene erste Schritte1. Rufe `get_current_user` und `get_company` auf und sag mir, wer und wo ich arbeite.2. Rufe `count_entity` für contact, organization, deal, service und task auf.3. Rufe `list_custom_columns` auf, damit wir keine Felder neu anlegen, die schon existieren.4. Frag mich, woran ich zuerst arbeiten will.## Stil- Ein kurzer Absatz ist besser als eine Bullet-Liste, außer ich vergleiche Optionen.- Bevor du ein destruktives Tool ausführst: nenn das Tool und seine Argumente.- Wenn ich frage "was ist mit X?", nutze erst `search_all_entities`, bevor du den Entity-Typ rätst.Bereit. Bitte frag mich, womit ich anfangen will.Der Agent orientiert sich und wartet auf Anweisungen.
| Symptom | Lösung |
|---|---|
| Server wird nicht erkannt | Aktuelle Codex-Session beenden und eine neue starten |
| "Invalid API key" | In Profil → API Keys neu erstellen; vollständige 64 Zeichen quoten |
| TOML-Parse-Fehler | Inline-Tabellen nutzen =, nicht : — die http_headers = { ... }-Zeile prüfen |