GoHighLevel MCP Server
Manage Facebook social media posts and accounts through GoHighLevel, including posting, updating, and deleting content.
Manage Google Business profile posts and accounts through GoHighLevel, including posting and updating content.
Manage Instagram social media posts and accounts through GoHighLevel, including posting, updating, and deleting content.
Manage TikTok social media posts and accounts through GoHighLevel, including posting and updating content.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GoHighLevel MCP ServerCreate a new opportunity for Acme Corp worth $5000"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CRM MCP — self-hosted, multi-sub-account MCP server
Built & maintained by Abdulrehman Moaz · XylatorAI — custom GoHighLevel/CRM integrations & AI systems for agencies.
Built on mastanley13/GoHighLevel-MCP by StrategixAI LLC (Mykel Stanley). This is a derivative work that adds a self-hosted, multi-sub-account deployment layer on top of that project's CRM tools. The original code remains © 2024 StrategixAI LLC and is used under its Community License. See
NOTICEandLICENSE.⚠️ The Community License permits non-commercial use only. Commercial resale or paid products based primarily on this software require written permission from the original author (
mykelandrewstanley@gmail.com).
A self-hosted Model Context Protocol server for your CRM, built for agencies. Connect any number of CRM sub-accounts, choose which tools each client can use, and hand every client a unique, revocable MCP URL.
Multiple sub-accounts — one deployment serves all your sub-accounts.
Per-client URLs — generate a unique
/mcp/<token>link scoped to a single sub-account (or your whole agency).Pick the tools — each link exposes only the tools you select.
Self-hosted — runs anywhere Docker runs; no third-party backend.
Secure by design — tokens are encrypted at rest, link secrets are hashed, and the dashboard is protected by Supabase Auth + Row Level Security.
Architecture
┌──────────────────────────┐ ┌──────────────────────────┐
│ Dashboard (Next.js) │ │ MCP Server (Express) │
│ - Supabase Auth login │ │ - /mcp/<link-token> │
│ - add sub-account PITs │ │ - resolves token→subacct│
│ - generate client URLs │ │ - per-link tool filter │
│ - pick tools per link │ │ - builds session pool │
└────────────┬─────────────┘ └────────────┬─────────────┘
writes (RLS, anon key) reads (service-role key)
└───────────────┬───────────────────┘
▼
┌──────────────┐
│ Supabase │
│ (Postgres) │
└──────────────┘/(repo root) — the MCP server (TypeScript + Express).dashboard/— the agency dashboard (Next.js, App Router).supabase/migrations/— database schema + RLS policies.
Sub-accounts authenticate to the CRM using Private Integration Tokens (PIT), which are long-lived, so there is no OAuth refresh machinery to run.
Related MCP server: GoHighLevel MCP Server
Prerequisites
Docker + Docker Compose
A Supabase project (free tier is fine)
A CRM Private Integration Token for each sub-account you want to connect
Setup
1. Create the database schema
In the Supabase dashboard → SQL Editor, run the contents of
supabase/migrations/0001_init.sql.
(Or apply it with the Supabase CLI: supabase db push.)
This creates the subaccounts and mcp_links tables and their RLS policies.
2. Configure environment
cp .env.example .envFill in:
Variable | Where to find it | Used by |
| Supabase → Project Settings → API | both |
| same page (anon public key) | dashboard |
| same page (service role key) | server only |
|
| both (must match) |
| your server's public URL | dashboard |
ENCRYPTION_KEYmust be identical for the dashboard and the server, or PITs encrypted by the dashboard won't decrypt on the server.
3. Run
docker compose up --buildDashboard → http://localhost:3000
MCP server → http://localhost:8000
Deploy to Render (both services, one Blueprint)
Render doesn't run docker-compose, but the included
render.yaml Blueprint deploys both services together.
Run
supabase/migrations/0001_init.sqlin your Supabase project (one time).Push this repo to GitHub.
In Render: New + → Blueprint → select your repo. Render detects
render.yamland creates both services.When prompted, fill in the secrets (same
ENCRYPTION_KEYon both):crm-mcp-server:SUPABASE_URL,SUPABASE_SERVICE_ROLE_KEY,ENCRYPTION_KEYcrm-mcp-dashboard:NEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_ANON_KEY,ENCRYPTION_KEY,NEXT_PUBLIC_MCP_BASE_URL
One follow-up step: the dashboard needs the server's public URL at build time, which isn't known until the server's first deploy. After the first deploy, copy the
crm-mcp-serverURL into the dashboard'sNEXT_PUBLIC_MCP_BASE_URLand redeploy the dashboard. (Only needed once.)
On a plain VPS with Docker,
docker compose up -ddoes all of this in a single command with no follow-up step.
Usage
Open the dashboard, sign up / sign in.
Sub-accounts → add each CRM sub-account: a name, its Location ID, and its Private Integration Token. The token is encrypted before it's stored.
MCP Links → create a link:
Scope: a single sub-account (for a client) or all your sub-accounts.
Tools: expose all, or pick a specific subset.
Copy the generated URL — the token is shown only once.
Give the client the URL. They add it to Claude / ChatGPT / any MCP client:
https://your-host/mcp/<token>.
Revoke a link any time from the dashboard — access stops immediately.
Security model
Concern | Mechanism |
Only the agency can write tokens | Supabase Auth + RLS ( |
Client URLs can't be guessed | 256-bit random secret in the URL |
DB leak doesn't expose live URLs | only |
PITs unreadable from a DB dump | AES-256-GCM encryption at rest |
Clients isolated to their sub-account | location scope + pool membership check |
Instant revocation |
|
Service role key never in browser | server-only; browser uses anon key + RLS |
Local (stdio) usage
For a single sub-account locally (e.g. Claude Desktop), no Supabase required:
npm install
npm run build
CRM_PIT_TOKEN=pit-xxxx CRM_LOCATION_ID=your-location-id npm run start:stdioOr point it at a dashboard link with MCP_LINK_TOKEN (+ the Supabase env vars).
Development
# MCP server
npm install
npm run dev
# Dashboard
cd dashboard
npm install
npm run devAuthor & Maintainer
⭐ Abdulrehman Moaz — Founder, XylatorAI
This self-hosted, multi-sub-account edition is built and maintained by Abdulrehman Moaz, founder of XylatorAI — custom CRM/GoHighLevel integrations & AI systems for agencies and SaaS builders.
🌐 Website: xylatorai.com
📧 Contact: rehman@xylatorai.com
Need a custom CRM marketplace app, conversation/payment provider, AI agent, or a bespoke MCP integration? Book a call with XylatorAI.
Credits
This project builds on the original
GoHighLevel MCP Server by
StrategixAI LLC (Mykel Stanley). The CRM API client and the full tool set
(src/tools/, src/clients/) originate from that project. Huge thanks to the
original author and the GoHighLevel community.
The self-hosted, multi-sub-account layer — Supabase-backed encrypted token storage, per-link MCP URLs, per-link tool selection, and the management dashboard — was added by XylatorAI.
License
Governed by the GoHighLevel MCP Server Community License — see
LICENSE and NOTICE.
✅ Personal, educational, and non-commercial use
✅ Modification and free distribution
❌ Commercial resale/licensing or paid products based primarily on this software
❌ Removing or altering the license or copyright notices
For commercial use, contact the original author: mykelandrewstanley@gmail.com.
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.
Latest Blog Posts
- 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/abdul-34/ghl-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server