ghl-mcp-remote
ghl-mcp-remote
Remoter MCP-Server (Model Context Protocol) für GoHighLevel – multi-tenant, per URL erreichbar, damit jede Agentur ihn über Claude oder ChatGPT nutzen kann, ohne dass jede Agentur etwas lokal ausführen muss.
Dies ist ein separates Projekt zum ursprünglichen ghl-mcp (stdio, persönliche/lokale Nutzung). Keines der beiden hängt vom anderen ab.
Unterschied zum ursprünglichen ghl-mcp
|
| |
Transport | stdio (lokaler Prozess) | HTTP ( |
Tenants | 1 Agentur pro Installation, Anmeldedaten in | eine beliebige Anzahl von Agenturen, isoliert durch |
„Login“ |
| Autorisierungsbildschirm von GHL selbst, ausgelöst durch Claude/ChatGPT |
Nutzung | Sie, selbst, lokal (Sie, lokal) | Beliebiges Unternehmen, von Claude.ai/ChatGPT aus, per URL |
Der Geschäftscode (die Tools in src/tools/) ist in beiden praktisch identisch – nur die Schicht für Authentifizierung/Speicherung ändert sich.
Related MCP server: GoHighLevel MCP Server
Architektur
Claude/ChatGPT ──(1) descobre──> GET /.well-known/oauth-authorization-server
──(2) registra───> POST /register (DCR, automático)
──(3) pede login─> GET /authorize ──redirect──> tela da GHL (o "login")
<──redirect── GET /oauth/ghl/callback
<──code+state───── (nosso próprio código de autorização)
──(4) troca──────> POST /token ──> access_token + refresh_token nossos
──(5) chama tool─> POST /mcp (Authorization: Bearer <access_token>)„Login“ = GHL autorisieren. Es gibt kein eigenes Konto/Passwort dieses Dienstes. Wenn der Admin einer Agentur den Zugriff auf dem Bildschirm der GHL selbst genehmigt, wird dadurch sein Tenant (identifiziert über die GHL-
companyId) bereits erstellt/aktualisiert und der Login auf MCP-Seite ist abgeschlossen.Eine einzige GHL-Marketplace-App (gleiche
GHL_CLIENT_ID/GHL_CLIENT_SECRET) bedient jede Agentur, die sie installiert – es ist nicht nötig, pro Kunde eine App zu erstellen.Jeder Tool-Aufruf wird authorisiert über ein Bearer-Token, das dieser Server ausstellt; die Middleware löst dieses Token zur korrekte
companyIdauf und injiziert es in einenAsyncLocalStorage(src/tenant-context.ts) – so bleibt der (identische) Tool-Code „ohne Bewusstsein“ für Multi-Tenancy.Umgesetzt auf der Grundlage dessen, was
@modelcontextprotocol/sdkbereits für OAuth-Servers anbietet (server/auth/router.ts,provider.ts) – siehesrc/auth/mcp-oauth-provider.ts.
Voraussetzungen für den Betrieb überall
GHL-Marketplace-OAuth-App (Developer > Ihre App), Vertriebsweg „Agency“ oder „Agency & Sub-Account“:
Redirect-URI:
<PUBLIC_URL>/oauth/ghl/callback (muss die endgültige öffentliche URL – HTTPS – dieses Dienstes sein). Vor allem.Scopes: die gleichen wie in
src/services/scopes.tsgelistet.
Postgres (irgendeiner – Supabase, Neon, RDS, das verwaltete Postgres der Hosting-Plattform etc.).
db/schema.sqldarauf einmal ausführen.Node.js 20+ (oder das Docker-Image dieses Projekts, das das seit dem enthalten hat).
Umgebungsvariablen
Siehe .env.example. Zusammenfassung:
Variable | Beschreibung |
| aus der OAuth-App des GHL-Marketplace's |
| dfür gültige öffentliche URL dieses Dienstes, ohne Schrägstrich am Ende |
| Port, auf dem der Prozess lauscht (viele Plattformen überschreiben lassen den selbst selbst) |
| Connection-String des Postgres |
| 32 Bytes in Base64 – |
Lokal ausführen (Dev)
npm install
npm run build
npm startMögliche Checks ohne eine öffentliche Domain:
curl localhost:8080/healthz
curl localhost:8080/.well-known/oauth-authorization-serverDer vollständige OAuth-Fluss (echte Autorisierung bei der GHL, Token erhalten, ein Tool aufrufen) funktioniert nur mit einer echten PUBLIC_URL (HTTPS) im Betrieb, da die GHL den Browser des Admins der Agentur sicher hierher zurückleiten müssen muss – und dieselbe URL muss als Redirect-URI in der GHL-App registriert sein.
Deployment
Dieses Projekt setzt keine bestimmte Hosting-Plattform voraus – es enthält nur ein generisches Dockerfile. Jede Plattform, die ein Docker-Image (oder direkt node dist/index.js) betreiben kann, ist geeignet, sofern:
Sie eine stabile öffentliche HTTPS-URL verfügbar macht → das wird
PUBLIC_URL.Sie die Umgebungsvariablen aus der Tabelle oben injiziert.
die Postgres-Datenbank von
DATABASE_URLbereitsdb/schema.sqlausgeführt hat.die Redirect-URI der GHL-Marketplace-App auf
<PUBLIC_URL>/oauth/ghl/callbackgesetzt wird, sobald die endgültige URL bekannt ist.
Verbinden mit Claude / ChatGPT
Sobald gehostet:
Claude.ai / Claude Desktop: Einstellungen → Connectors → „Custom Connector hinzufügen“ → URL:
https://<deine-domain>/mcp. Claude führt Sie automatisch zum Autorisierungsablauf.ChatGPT: In Arbeitsbereichen mit Unterstützung für Ferne/Remote-Connectors (varriert by Plan – Team, Enterprise oder „Developer Mode“) einen Connector hinzufügen, der auf
https://<deine-domain>/mcpzeigt.
Hinweis zu ChatGPT: Die Unterstützung für Remote-MCP-Connectors mit OAuth in ChatGPT ist je nach Tarif/Workspace unterschiedlich, und einige Oberflächen (z. B. Deep Research) beschränken, welche Tool-Formate sie akzeptieren (manchmal nur Tools im Format „search“/„fetch“). Dieser Server folgt der MCP-Autorisierungsspezifikation strikt (dieselbe, die Claude verwendet), was die Kompatibilität maximiert – aber es lohnt sich, ihn in echtem Betrieb zu testen, da das Verhalten auf ChatGPT-Seite außerhalb unserer Kontrolle bleibt.
Struktur
src/
index.ts App Express: monta o router de OAuth, POST/GET/DELETE /mcp,
GET /oauth/ghl/callback, GET /healthz, CORS.
server.ts createMcpServer() — registra as tools (idêntico ao projeto original).
tenant-context.ts AsyncLocalStorage que carrega o companyId durante cada request.
db/
pool.ts Pool do `pg` a partir de DATABASE_URL.
crypto.ts AES-256-GCM (tokens da GHL em repouso) + SHA-256 (hash dos nossos tokens).
agencies.ts Tokens de agência da GHL por companyId (substitui o antigo token-store.ts).
oauth-store.ts Clients MCP, pending auth, authorization codes, access/refresh tokens.
auth/
ghl-oauth.ts Troca/refresh de tokens com a GHL — equivalente ao oauth-flow.ts original,
mas web-based e por tenant em vez de CLI + arquivo único.
location-tokens.ts Cache de location tokens, agora chaveado por companyId.
mcp-oauth-provider.ts Implementa OAuthServerProvider do SDK — o núcleo do "login = autorizar a GHL".
ghl-callback.ts Handler de GET /oauth/ghl/callback.
services/
constants.ts, scopes.ts, ghl-client.ts Idênticos ao projeto original (só o import de token mudou).
tools/
*.ts Idênticos ao projeto original, exceto locations.ts (cache agora por tenant).
db/
schema.sql DDL do Postgres — rodar uma vez antes do primeiro start.Sicherheit
GHL-Refresh-Tokens: im Ruhezustand verschlüsselt (AES-256-GCM).
Zugriffs-/Refresh-Tokens, die dieser Server für Claude/ChatGPT ausgibt: nur als SHA-256-Hash abgelegt – niemals im Klartext, wie auch Passwörter.
PKCE (S256) für den gesamten MCP-seitigen Ablauf verpflichtend, lokal - nicht an die GHL delegiert.
Keine Zugangsdaten einer Agentur sind aus dem Token einer anderen agenten erreichtbar – jede Zugriff auf den Postgres wird über
companyIdgefiltert, und dieser Wert wird erst nach der Validierung des Bearer-Tokens eingesetzt.
This server cannot be installed
Maintenance
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
- AlicenseBqualityDmaintenanceMCP server for GoHighLevel API v2 that provides 50+ tools for CRM, billing, marketing, and operations workflows, enabling natural language interaction with contacts, opportunities, conversations, and more.501MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that provides tools for managing GoHighLevel (GHL) conversations, tasks, and calendar appointments through AI assistants like Claude.2135MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for GoHighLevel sub-accounts, enabling management of CRM contacts, pipelines, calendars, invoices, and more via natural language.
- AlicenseCqualityAmaintenanceA Model Context Protocol (MCP) server for GoHighLevel API v2 — giving any AI agent full access to your GHL location.1001935MIT
Related MCP Connectors
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jamersoncalixto/ghl-mcp-remote'
If you have feedback or need assistance with the MCP directory API, please join our Discord server