How to connect the GoHighLevel MCP server to n8n

    Wire GHL's official MCP endpoint into an n8n AI Agent so one agent can read contacts, check calendars, and write opportunities — with the auth, scopes, and guardrails that keep it safe.

    Last updated 2026-09-03~6 min read
    GoHighLeveln8nMCPAI AgentPrivate Integration

    Skip the setup. Download the n8n workflow JSON — MCP Client Tool pre-pointed at the GHL MCP endpoint, an AI Agent wired to it, header-auth credential placeholder, and a first working tool call. Import it, drop in your token and Location ID, and run.

    What this integration does

    An MCP (Model Context Protocol) server exposes GoHighLevel's actions — read a contact, create an opportunity, list calendar events, send a message — as tools an LLM agent can call directly, without you hand-wiring an HTTP Request node for each endpoint. n8n sits in the middle: its MCP Client Tool node connects to the GHL MCP server, pulls in the tool list, and hands those tools to an AI Agent node. The agent decides which GHL action to take from a natural-language instruction, and n8n executes it.

    This is the Harness Engineering pattern applied to a CRM: instead of a rigid workflow with one branch per action, you get an agent that can do any of GHL's supported operations because the MCP server advertises them. You still keep n8n's error handling, logging, and scheduling around it.

    Prerequisites

    • A GoHighLevel sub-account (Location) with admin access
    • n8n 1.88+ (cloud or self-hosted) — the MCP Client Tool and AI Agent nodes
    • An LLM credential in n8n (OpenAI, Anthropic, or Gemini) for the agent
    • Ten minutes to create a Private Integration token — the MCP server authenticates with it

    Step 1: Enable the GHL MCP server

    GoHighLevel exposes an official MCP endpoint at https://services.leadconnectorhq.com/mcp/. It's not a server you host — it's LeadConnector's, and it authenticates per-request with your Private Integration token plus the Location it should act on. Nothing to deploy; you just need the credentials to talk to it.

    Step 2: Create the Private Integration token

    • In GHL, go to Settings → Private Integrations → Create new integration at the Sub-Account level
    • Grant only the scopes the agent will use — e.g. contacts.readonly, contacts.write, calendars.readonly, calendars/events.write, conversations/message.write
    • Copy the token once (GHL shows it a single time) and note your Location ID (Settings → Business Profile)

    A wrong-scope token is the most common failure here: the MCP server connects but the specific tool call returns 401/403. If that happens, see the GHL 401 fix — the same scope and token rules apply.

    Step 3: Point n8n's MCP Client Tool at the server

    • In n8n, add an MCP Client Tool node (or wire it as a tool under an AI Agent node)
    • Set the SSE / server endpoint to https://services.leadconnectorhq.com/mcp/
    • Add the two headers the server requires:
    Authorization: Bearer pit-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    locationId:    YOUR_LOCATION_ID
    Version:       2021-07-28

    Store the token in an n8n Header Auth credential rather than pasting it inline, so it isn't exposed in the workflow JSON. Exactly one space after Bearer, no trailing newline — a malformed header reads as Invalid JWT.

    Step 4: Make the first tool call end-to-end

    • Attach an AI Agent node with your LLM credential and connect the MCP Client Tool as its tool source
    • The agent will auto-discover the GHL tools the server advertises (contacts, calendars, opportunities, conversations)
    • Give it a concrete instruction: "Look up the contact with email [email protected] and tell me their pipeline stage."
    • A successful run confirms token + scope + Location + transport are all aligned before you build anything real on top

    Step 5: Guardrails before production

    An agent that can write to your CRM needs the same discipline as any other automation. Three things to add before this touches live data:

    • Scope the token tight. If the agent only reads and books, don't grant delete or opportunity-write. The MCP server can only expose what the token permits — that's your blast-radius control.
    • Dedupe repeated calls. An agent re-invoked on a retry can create a second contact or a duplicate opportunity. Key writes on a stable identifier and drop repeats, the same way the production reliability checklist handles webhook retries.
    • Log every tool call. Write the agent's chosen tool, arguments, and result to a table. When an agent does something unexpected, the log is the only way to see why.

    Common gotchas

    1. Missing locationId header. The MCP server needs to know which sub-account to act on. Without the header the connection can still open but tool calls fail or return another Location's data. Set it explicitly.

    2. Agency token on a Location server. The MCP endpoint acts at the Location level; an Agency-scoped token authenticates but isn't valid for Location tool calls. Create the Private Integration at the Sub-Account level.

    3. Transport mismatch. If n8n reports it can't list tools, the endpoint or transport type is wrong. Use the exact /mcp/ path (trailing slash) and n8n's default MCP transport; a stray path returns an empty tool list, which the agent then treats as "no tools available."

    4. Over-broad prompts. An agent given "clean up my CRM" will happily take destructive actions if the token allows it. Keep instructions specific and scope the token to match.

    Extending this pattern

    • Chain the GHL MCP tools with a webhook trigger so inbound events drive agent actions — start from the GHL → n8n webhook guide
    • Add a second MCP server (Supabase, Slack) so one agent spans CRM and database
    • Put the whole thing on a schedule for nightly enrichment or pipeline hygiene runs

    Browse 4,900+ ready-to-import workflow templates →

    Need this workflow customized or debugged? Book a 30-min scope call →

    Stuck configuring this workflow?

    I build and fix n8n workflows for agencies and SaaS teams. 30-minute scope call — bring the problem, leave with an estimate.

    Related pages

    Related workflows