Skip to main content
Glama

GoHighLevel MCP Server

Ein Model Context Protocol-Server, der einem LLM-Agenten operative Kontrolle über eine GoHighLevel-CRM gibt – 114 Tools in 24 Modulen, die Kontakte, Pipelines, Kalender, Messaging, Rechnungsstellung und Zahlungen über die GoHighLevel-API v2 abdecken.

Das Problem

GoHighLevel ist das System of Record für eine kleine Agentur: jeder Kunde, jede Buchung, jede Rechnung. Die Arbeit, die den Tag wirklich auffrisst, ist keine einzelne CRM-Aktion, sondern das Verknüpfen zwischen ihnen – ein Shooting wird bestätigt, also muss jemand die Opportunity anlegen, sie in die richtige Pipeline-Phase verschieben, den Kalenderslot für den richtigen Kontakt buchen, die Rechnung entwerfen und eine Notiz verfassen. Jede Schritt für sich ist ein dreißig Sekunden langes Klicken, und die Sequenz läuft mehrere Male pro Woche.

Genau diese Sequenz kann ein Agent ausführen, wenn er auf das CRM zugreifen kann. Dieser Server ist genau dieser Zugriff: Er macht GoHighLevel als typisierte, mit Annotationen versehene Tools verfügbar, sodass ein Agent die gesamte Kette aus einem einzigen Anweisungssatz heraus ausführen kann, während die destruktiven und nach außen gerichteten Schritte für die Bestätigung sichtbar bleiben.

Related MCP server: GoHighLevel MCP Server

Architektur

24 Tool-Module registrieren sich über stdio bei einem McpServer. Der gesamte Datenverkehr läuft über eine einzige ghlRequest()-Funktion, die Authentifizierung, den obligatorischen Version-Header, die Query-String-Assemblierung und das Formen von Fehlern übernimmt. Module lassen sich beim Start über GHL_DISABLED_MODULES ein- und ausschalten – das ist wichtiger, als es klingen mag, denn 114 Tool-Definitionen bedeuten einen erheblichen Teil des Kontextfensters eines Agenten, bevor auch nur ein einziges Wort der Benutzeranfrage gelesen wurde. Ein Deployment, das nur Buchungen verarbeitet, kann sechs Module registrieren und den Rest überspringen.

  MCP host (Claude Desktop / Claude Code)
          | stdio (JSON-RPC)
  +-------v--------------------------------------------+
  |  index.ts   MODULES registry, GHL_DISABLED_MODULES  |
  +-------+--------------------------------------------+
          |
  +-------v-----+ +---------------+ +-----------+ ......  24 modules
  |  contacts   | | opportunities | | invoices  |
  +-------+-----+ +-------+-------+ +-----+-----+
          |               |               |
          |               |         +-----v--------------+
          |               |         | billing-helpers.ts |
          |               |         |  businessDetails   |
          |               |         |  contactDetails    |
          |               |         |  sender resolution |
          |               |         +-----+--------------+
          +-------+-------+---------------+
                  |
        +---------v----------------------------+
        |  client.ts  ghlRequest()             |
        |   Bearer token + Version header      |
        |   status-specific error hints        |
        +---------+----------------------------+
                  |
          services.leadconnectorhq.com

Jedes Schreib-Tool trägt MCP-Annotationen – 17 sind als destructiveHint markiert, und ghl_send_message / ghl_send_invoice sind als nach außen gerichtet gekennzeichnet, weil sie echte Kunden erreichen. Der Host zeigt diese Markierungen an, bevor er einen Aufruf genehmigt – das ist der Unterschied zwischen einem Agenten, der eine Rechnung entwirft, und einem Agenten, der versehentlich eine an einen Kunden schickt.

Der wirklich harte Teil

Eine Rechnung zu erstellen. Der Endpunkt erwartet businessDetails- und contactDetails-Blöcke, und die Dokumentation untertreibt beides: Wenn man versucht, eine contactId und ein paar Positionen wie in der Dokumentation beschrieben zu übermitteln, kommt der Fehler zurück, der kein Feld benennt. Beide Blöcke müssen vollständig angegeben werden, und businessDetails.phoneNo und contactDetails.phoneNo sind Pflichtfelder – ein Kontakt mit E-Mail-Adresse und ohne Telefonnummer kann überhaupt nicht in Rechnung gestellt werden.

Noch schlimmer ist, dass die Werte mit dem übereinstimmen müssen, was die UI erzeugt, sonst sehen per API erstellte Rechnungen anders aus als handgefertigte Rechnungen – anderes Logo, fehlende Konditionen, falsche Nummerierung. Diese Standardwerte stehen nicht in dem Standortprofil, wo man sie erwartet; sie liegen hinter GET /invoices/settings, also derselben Quelle, aus der auch die UI ihre Vorbelegung nimmt.

src/tools/billing-helpers.ts löst beide Blöcke auf, sodass die Tools nur eine contactId benötigen. Für Geschäftsdaten durchlaufen vier Ebenen: Argument beim Aufruf, GHL_BUSINESS_*-Umgebungsvariable, gespeicherte Rechnungseinstellung, Standortprofil – jede Ebene füllt nur das auf, was die darüber liegende leer ließ. Kontaktdienste werden abgerufen und zusammengesetzt; für name gibt es die Rückfallebenen vollständiger Name, Vor– und Nachname, Name des Unternehmens, E-Mail und zuletzt Telefon, weil GoHighLevel leere Namen ablehnt und echte CRM-Angaben häufig keinen Namen haben. Beide Pfade werfen eine Meldung, die das fehlende Feld und die Möglichkeit benennt, es bereitzustellen, statt GHLs undurchschautes 422 an die Oberfläche zu bringen. Jede Abfrage wird pro Standort zwischengespeichert, sodass ein Stapel aus zehn Rechnungen einen Abruf der Einstellungen kostet, nicht zehn.

Was ich anders machen würde

  1. Keine Tests. 4.000 Zeilen und keine. Die Fallback-Kette in billing-helpers ist pure Logik über Fixture-Daten – die einfachste Sache im Repository, um sie gegen Dinge, und gleichzeitig die teuerste Fehlerquelle, denn Fehlerformat ist eine falsch formatierte Rechnung, die an eine Kund spurllt.

  2. Kein Retry bei 429. ghlRequest teilt dem Aufrufer mit, dass „rate limited; retry in nach kurzer Verzögerung“ vor, und dann wird nicht erneut versucht. Backoff gehört in den Client und nicht in das Urteilsvermögen des Agenten.

  3. Die Caches sind Modul-Level-Maps mit ohne LeitungsInvalidierung. Für einen stdio-Server, den der Host normalerweise beim Start einfach neu startet, ist das richtig; falsch wird es, sobald dieser Prozess über einen längeren Zeitraum läuft und eine Änderung des Business-Profi none get wird.

  4. Antworten sind durchgängig Record<string, unknown>. GoHighLevel stellt eine OpenAPI-Spezifikation bereit; würd gewinnen, würde es eine Klasse von Laufwert-Begehen er Zeit in Compile-Fehler er verwandeln.

  5. 114 Tools in einem Server sind zu viele. Modul-Toggles sind ein Workaround, keine Lösung. Es ist besser, eine kleine Gruppe von Tools und einen Mechanismum für die Entdeckung zu haben, damit der Agent nur zahlt, was er auch nutzt.

Einrichtung

Sie benötigen Node.js 20+ sowie ein GoHighLevel-Konto.

1. Ein Private-Integration-Token erstellen

Einstellungen → Private Integrationen → Neue Integration erstellen. Aktivieren Sie die Bereiche, die zu den Projektionswerkzeugen passen, die Sie verwenden möchten; mindestens:

contacts.readonly, contacts.write, opportunities.readonly, opportunities.write, calendars.readonly, calendars/events.write, conversations.readonly, conversations/message.write, invoices.readonly, invoices.write, products.readonly, products.write, locations/customFields.readonly, workflows.readonly

Kopieren Sie das Token – es beginnt mit pit-.

2. Finden Sie Ihre Standort-ID

Einstellungen → Unternehmensprofil, oder lesen Sie diese direkt aus der Dashboard-URL ab: .../location/<LOCATION_ID>/...

3. Erstellen

git clone <this-repo>
cd ghl-mcp
npm install
npm run build

4. An einem MCP-Host registrieren

{
  "mcpServers": {
    "gohighlevel": {
      "command": "node",
      "args": ["/absolute/path/to/ghl-mcp/dist/index.js"],
      "env": {
        "GHL_API_KEY": "pit-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "GHL_LOCATION_ID": "your-location-id"
      }
    }
  }
}

Starten Sie den Host neu. Eine Liste aller unterstützten Variablen finden Sie in .env.example, einschließlich des Rechnungs-Business-Blocks und der Modul-Schalter.

Um den Server ohne Host zu testen:

GHL_API_KEY=pit-... GHL_LOCATION_ID=... npm run inspect

Ein Hinweis zum Thema „Automationen erstellen“

Die GoHighLevel-API kann keine Workflow-Logik erstellen – das visuelle Konstrukt ist rein für die Benutzeroberfläche. Das unterstützte Muster ist: einen Workflow einmalig in der UI zu erstellen, seine ID mit ghl_list_workflows zu ermitteln und Kontakte mit ghl_add_contact_to_workflow einzuschreiben.

Tool-Referenz

Bereich

Tools

Kontakte

ghl_search_contacts, ghl_get_contact, ghl_create_contact, ghl_update_contact, ghl_add_contact_tags, ghl_delete_contact

Verkaufschancen / Pipelines

ghl_get_pipelines, ghl_search_opportunities, ghl_get_opportunity, ghl_create_opportunity, ghl_update_opportunity

Kalender / Termine

ghl_get_calendars, ghl_get_free_slots, ghl_create_appointment, ghl_get_appointment, ghl_update_appointment, ghl_delete_appointment

Gespräche / Messaging

ghl_search_conversations, ghl_get_messages, ghl_send_message

Rechnungen

ghl_list_invoices, ghl_get_invoice, ghl_create_invoice, ghl_send_invoice, ghl_void_invoice, ghl_delete_invoice

Angebote

ghl_list_estimates, ghl_generate_estimate_number, ghl_create_estimate, ghl_update_estimate, ghl_send_estimate, ghl_estimate_to_invoice, ghl_delete_estimate

Produkte

ghl_list_products, ghl_get_product, ghl_create_product, ghl_update_product, ghl_delete_product, ghl_list_product_prices, ghl_create_product_price

Benutzerdefinierte Felder

ghl_list_custom_fields, ghl_get_custom_field, ghl_create_custom_field, ghl_update_custom_field, ghl_delete_custom_field

Aufgaben

ghl_list_contact_tasks, ghl_get_contact_task, ghl_create_contact_task, ghl_update_contact_task, ghl_delete_contact_task

Notizen

ghl_list_contact_notes, ghl_get_contact_note, ghl_create_contact_note, ghl_update_contact_note, ghl_delete_contact_note

Workflows (Automationen)

ghl_list_workflows, ghl_add_contact_to_workflow, ghl_remove_contact_from_workflow

Zahlungen

ghl_list_orders, ghl_get_order, ghl_list_transactions, ghl_list_subscriptions, ghl_get_subscription

Formulare & Umfragen

ghl_list_forms, ghl_get_form_submissions, ghl_list_surveys, ghl_get_survey_submissions

Benutzer & Teams

ghl_list_users, ghl_get_user

Kalenderereignisse

ghl_get_calendar_events, ghl_block_calendar_slot, ghl_list_appointment_notes, ghl_create_appointment_note

Social Planner

ghl_list_social_accounts, ghl_list_social_posts, ghl_get_social_post, ghl_create_social_post, ghl_delete_social_post

Medienbibliothek

ghl_list_media, ghl_upload_media_by_url, ghl_delete_media

Kampagnen & Links

ghl_list_campaigns, ghl_add_contact_to_campaign, ghl_remove_contact_from_campaign, ghl_list_trigger_links, ghl_create_trigger_link, ghl_delete_trigger_link

Tags

ghl_list_tags, ghl_create_tag, ghl_update_tag, ghl_delete_tag

Benutzerdefinierte Werte

ghl_list_custom_values, ghl_get_custom_value, ghl_create_custom_value, ghl_update_custom_value, ghl_delete_custom_value

Unternehmen

ghl_list_businesses, ghl_get_business, ghl_create_business, ghl_update_business, ghl_delete_business

Benutzerdefinierte Objekte

ghl_list_object_schemas, ghl_get_object_schema, ghl_search_object_records, ghl_get_object_record, ghl_create_object_record, ghl_update_object_record, ghl_delete_object_record

Verknüpfungen

ghl_list_associations, ghl_get_record_relations, ghl_create_relation, ghl_delete_relation

Funnels

ghl_list_funnels, ghl_list_funnel_pages

Lizenz

MIT – siehe LICENSE. Nicht verbunden mit oder unterstützt von GoHighLevel.

Install Server
F
license - not found
B
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to perform CRM operations like creating contacts, managing deals, and updating leads through natural language using the Model Context Protocol.
    4
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to directly interact with the entire GoHighLevel CRM via 563+ tools across 44 categories, allowing natural language control for contacts, messaging, opportunities, calendars, and more.
    23
    1
    ISC
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to interact with a CRM covering companies, people, leads, deals, and more, with role checks, scoped agent keys, approval gates, and a shared audit trail.
    AGPL 3.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP-native CRM backend for AI agents, enabling customer, opportunity, note, follow-up, and pipeline health management through 15 MCP tools.

View all related MCP servers

Related MCP Connectors

  • Agent-native CRM. 25 tools — contacts, deals, sequences, enrichment waterfall, audit log.

  • SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.

  • See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vmproductions631-tech/gohighlevel-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server