What is MCP?
MCP (Model Context Protocol) is a standard way for AI apps to connect to outside tools and data. GHL's MCP server turns CRM actions, like finding a contact, into tools an AI app can call. GHL's help center calls it the HighLevel MCP Server.
What you can do with the GoHighLevel MCP server
GHL's MCP setup article lists tools for tasks like these:
- Find a contact by name, email or phone.
- Create or update contacts, and add or remove tags.
- Search conversation history and send a message to a contact.
- Pull calendar events and appointment notes.
- Search opportunities and update deal details.
- Review payment orders and transactions.
- Create blog posts, email templates and social media posts.
Your team can then type requests like these:
- "Find the five most recently created contacts in this sub-account."
- "Summarize my last messages with [email protected]."
Pick the right GHL MCP endpoint
GHL runs separate MCP endpoints for different AI tools. Use the one built for yours.
| AI tool | Endpoint | Sign-in |
|---|---|---|
| Claude (claude.ai, Claude Code, Cowork) | https://services.leadconnectorhq.com/mcp/anthropic/v2 | OAuth |
| ChatGPT and Codex | https://services.leadconnectorhq.com/mcp/openai/v2/ | OAuth |
| Cursor, Windsurf, n8n and other HTTP MCP clients | https://services.leadconnectorhq.com/mcp/ | Private Integration Token + locationId header |
The OAuth endpoints reach much more of GHL. GHL's Claude articles cite 625 operations (571 active) across 40 domains. Its ChatGPT article cites more than 550 active operations across 38 domains.
They also work differently. The AI calls search_operations to find an action, describe_operation to read its inputs, and execute_operation to run it. Each operation runs against the GHL API, so our GoHighLevel API guide helps when you need more detail.
GHL now calls the universal endpoint "legacy," but still supports it. It lists 36 example tools for contacts, conversations, calendars, opportunities, payments, locations, blogs, email and social posts.
How to create a Private Integration Token
You need a token only for the universal endpoint. Skip this part if you connect Claude or ChatGPT with OAuth.
Step 1: Open Private Integrations
In the client's sub-account, go to Settings > Private Integrations.
Step 2: Create the integration
Click Create New Integration. Name it after the tool that will use it, like "Cursor - ops team."
Step 3: Pick least-privilege scopes
Grant only what the AI needs. For a read-only assistant, start with these scopes from GHL's recommended list:
- View Contacts
- View Conversations and View Conversation Messages
- View Opportunities
- View Calendars and View Calendar Events
- View Custom Fields and View Locations
Add an edit scope only when the AI must change that data. For example, add Edit Contacts only if it must create or update contacts.
GHL's recommended list skips the blog, email and social tools. Add those scopes only if you use those tools.
Step 4: Copy the token once
Click Create new Integration and copy the token right away. GHL shows it only once. Save it in a password manager.
Step 5: Copy the Location ID
Go to Settings > Business Profile and copy the Location ID. You can also find it in the browser URL after /location/.
How to connect Claude to GoHighLevel
Claude.ai (OAuth)
- 01In Claude, go to Customize > Connectors. Click + Add, then Add custom connector.
- 02Name it "GHL" and paste
https://services.leadconnectorhq.com/mcp/anthropic/v2. - 03Click Continue, review the detected sign-in settings, and click Add.
- 04Click Connect, sign in to GHL, pick the sub-account and approve the scopes.
- 05Start a new chat and ask Claude to list recent contacts.
Anthropic says custom connectors also work in Claude Desktop and Cowork. Free plans allow one custom connector. On Team and Enterprise plans, an Owner adds it under Organization settings > Connectors.
Claude.ai also offers a Request headers option, but it's a limited beta. Header names outside Claude's preset list need Anthropic's approval. OAuth is the simpler path for GHL.
Claude Code (OAuth)
claude mcp add --transport http leadconnector https://services.leadconnectorhq.com/mcp/anthropic/v2Then run /mcp inside Claude Code and finish the sign-in in your browser. Check the connection with claude mcp list. To use GHL in every project, add --scope user before the URL.
Claude Code with a token
A token limits Claude to the legacy endpoint's smaller tool set (GHL lists 36 examples) and the scopes you picked.
claude mcp add --transport http ghl https://services.leadconnectorhq.com/mcp/ \
--header "Authorization: Bearer YOUR_TOKEN" \
--header "locationId: YOUR_LOCATION_ID"That command saves the token in ~/.claude.json. To share the setup without the token, commit a .mcp.json file that reads environment variables:
{
"mcpServers": {
"ghl": {
"type": "http",
"url": "https://services.leadconnectorhq.com/mcp/",
"headers": {
"Authorization": "Bearer ${GHL_PIT}",
"locationId": "${GHL_LOCATION_ID}"
}
}
}
}Set GHL_PIT and GHL_LOCATION_ID in your shell before you start Claude Code. GHL's sample JSON has no type field. Add "type": "http", because Claude Code treats a url entry without a type as a config error.
How to connect ChatGPT and Codex to GoHighLevel
ChatGPT (OAuth)
- 01On ChatGPT web, go to Settings > Apps > Create. No Create button? Turn on developer mode under Settings > Apps > Advanced settings, or ask your workspace admin.
- 02Name it "LeadConnector" and paste
https://services.leadconnectorhq.com/mcp/openai/v2/. - 03Scan the tools, sign in to GHL, pick the sub-account and approve the permissions.
- 04Finish creating the app. In a new chat, pick LeadConnector from the Apps menu and test a simple read.
OpenAI offers custom MCP apps on Business, Enterprise and Edu plans, on the web only. Pro users get read and fetch access in developer mode. OpenAI is still rolling out write actions in beta.
Codex CLI (OAuth)
codex mcp add leadconnector --url https://services.leadconnectorhq.com/mcp/openai/v2/
codex mcp login leadconnectorThe login command starts GHL's sign-in. Pick the sub-account and approve the permissions.
Connect Cursor, Windsurf or n8n
These tools use the universal endpoint with your token and Location ID.
Cursor
Add this to .cursor/mcp.json in your project, or to ~/.cursor/mcp.json for all projects:
{
"mcpServers": {
"ghl": {
"url": "https://services.leadconnectorhq.com/mcp/",
"headers": {
"Authorization": "Bearer ${env:GHL_PIT}",
"locationId": "${env:GHL_LOCATION_ID}"
}
}
}
}${env:...} reads values from your environment, so the token stays out of the file. By default, Cursor asks before it runs an MCP tool.
Windsurf and n8n
GHL lists Windsurf as a supported client. Use the same URL and headers, and check Windsurf's docs for its config format.
GHL says its MCP server works with n8n "out of the box." In n8n's MCP Client Tool node, Multiple Headers auth can send both headers. Check n8n's docs for the transport setting in your version.
Security checklist
- Create one token per sub-account and per tool. GHL lets you create up to 20 tokens, so each tool can have its own.
- Start with view scopes. Add edit scopes only for tasks that need them.
- Rotate tokens every 90 days, as GHL recommends. "Rotate and expire this token later" keeps the old token working for 7 days.
- If a token leaks, choose "Rotate and expire this token now."
- Never paste tokens into shared chats, tickets, screenshots or public repos. Use environment variables instead.
- Test with read-only prompts first. Review AI-driven changes while edit scopes are on.
- In Claude, auto-approve only tools you trust. Turn off write tools before using Research, which can call tools without asking.
- Treat content the AI reads, like inbound messages, as untrusted. It can carry prompt-injection text.
Limits: what GHL MCP can't do yet
- Each request runs against one sub-account. You can't run one operation across several sub-accounts.
- GHL is still rolling out agency connections that cover several sub-accounts. If you don't see that option, connect each sub-account separately.
- The universal endpoint can read calendar events but lists no booking tool. Its payment tools are read-only.
- GHL says token scopes are narrower than OAuth scopes.
- GHL's universal-endpoint article says OAuth there is "planned for a future release." GHL lists OAuth for Cursor, Windsurf and VS Code as in development.
- Sensitive or irreversible operations may ask for extra confirmation.
- GHL's MCP articles don't say which GHL plans include MCP. Check GHL's current docs for your plan.
- The operation list can change, so run search_operations before bulk jobs. GHL's MCP docs list no MCP-specific rate limits, so run bulk jobs in small batches.
Troubleshooting
- 401 or "unauthorized": Check that the header reads
Authorization: Bearer <token>, with the space. Then confirm nobody rotated or deleted the token. - Tools are missing: Tools appear based on the token's scopes. Edit the scopes from the integration's three-dot menu. The token stays the same, so just reconnect the client.
- Wrong sub-account's data: Recheck the
locationIdunder Settings > Business Profile. With an OAuth agency connection, name the sub-account in your prompt. - Private Integrations menu missing: Turn the feature on in Labs, as GHL advises. An agency admin may also need to grant you access.
- Variable not filled in: Claude Code flags unset variables in
claude mcp listand/mcp. Set them in the shell where you start Claude Code. - "Pending approval" in Claude Code: Project
.mcp.jsonservers need your approval. Startclaudein that folder and approve the server. - Cursor won't connect: Open the Output panel and choose "MCP Logs" to see the error.
- Can't change a claude.ai connector's sign-in: Remove the connector and add it again.