Loading
Back to Blog
GoHighLevel App Marketplace

How to Connect Claude MCP with GoHighLevel (2026 Setup Guide)

Step-by-step setup for connecting Claude to GoHighLevel via MCP. Install the server, configure Claude Desktop, and run your first CRM prompt in minutes

5 min read

Why connect Claude to GoHighLevel?

If you spend your day inside GoHighLevel — searching contacts, chasing opportunities, sending SMS, building workflows — connecting Claude to GHL via the Model Context Protocol (MCP) is the highest-leverage AI setup you can run right now. Once it's wired up, you can ask Claude things like "find every lead tagged 'demo-booked' that hasn't been contacted in 14 days and draft a follow-up SMS" and it will actually do it — not pretend, not hallucinate, not ask you to paste a CSV.

This guide walks through the full setup: what MCP is, how to install a GHL MCP server, how to configure Claude Desktop, and the prompts I run daily after shipping 120+ apps to the GHL Marketplace.

What is MCP, and why does it matter for GHL?

Model Context Protocol (MCP) is an open standard from Anthropic that lets Claude talk to external tools and data sources through a uniform interface. Think of it as USB-C for LLMs: every MCP server exposes a set of tools (functions Claude can call) and resources (data Claude can read), and Claude can use them inside any chat.

For GoHighLevel users, MCP turns Claude from a chatbot into an operator. Instead of copy-pasting CRM data or asking Claude to "imagine" your pipeline, Claude reads and writes directly to your GHL location through the official V2 API.

What you can do once it's connected

  • Search contacts by tag, source, custom field, or pipeline stage
  • Create, update, and delete contacts and opportunities
  • Send SMS, email, and conversation messages from Claude
  • Pull conversation history and summarize threads
  • Trigger workflows and add contacts to campaigns
  • Read calendars and book appointments
  • Pull invoice, subscription, and order data
  • Run cross-pipeline reports by source, tag, or owner

Anything the GHL V2 API can do, an MCP server can expose to Claude.

Prerequisites

  • A GoHighLevel sub-account (or agency) with API access
  • A Private Integration Token (PIT) — fastest path for personal use; OAuth if you're building this for clients
  • Claude Desktop (claude.ai/download) or Claude Code
  • Node.js 18+ or Python 3.10+, depending on which MCP server you run

Step 1 — Get your GHL credentials

In your sub-account, go to Settings → Private Integrations → Create New Integration. Name it "Claude MCP," select the scopes you actually need (start with contacts, conversations, opportunities, calendars, locations, workflows), and copy the generated PIT. Then grab your Location ID from Settings → Company.

Treat the PIT like a password. Anyone with it can fully act inside your GHL location.

Step 2 — Install a GHL MCP server

You have two paths.

Option A — Use an existing GHL MCP server

Several community-built GHL MCP servers exist on GitHub and npm. Pick one with active commits, broad endpoint coverage, and clean auth handling. Install with:


npx -y @your-chosen/ghl-mcp-server

Option B — Build your own with the MCP SDK (recommended)

The Anthropic MCP SDK (@modelcontextprotocol/sdk for TypeScript, fastmcp for Python) lets you wrap any subset of the GHL V2 API in ~150 lines. This is the path I recommend if you want fine-grained control over which tools Claude can call — and it's the only path that lets you publish your own MCP server on the GHL Marketplace later.

A minimal Node example exposing one tool:


import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new Server({ name: "ghl-mcp", version: "0.1.0" });

server.tool("search_contacts", { query: z.string() }, async ({ query }) => {
  const r = await fetch("https://services.leadconnectorhq.com/contacts/search", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.GHL_PIT}`,
      Version: "2021-07-28",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ locationId: process.env.GHL_LOCATION_ID, query }),
  });
  return { content: [{ type: "text", text: JSON.stringify(await r.json()) }] };
});

await server.connect(new StdioServerTransport());

Add one tool per endpoint you actually use. Start with search_contacts, get_contact, send_sms, and create_opportunity — that's 80% of daily CRM operations.

Step 3 — Configure Claude Desktop

Open Claude Desktop's config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add your GHL MCP server:


{
  "mcpServers": {
    "gohighlevel": {
      "command": "node",
      "args": ["/absolute/path/to/ghl-mcp/dist/index.js"],
      "env": {
        "GHL_PIT": "pit-xxxx...",
        "GHL_LOCATION_ID": "loc_xxxx..."
      }
    }
  }
}

Save, fully quit Claude Desktop, and reopen. You should see the plug icon in the chat input showing your GHL tools are loaded.


Step 4 — Test it

Run these prompts in order:

  • "Search my GHL contacts tagged 'demo-booked' created in the last 7 days."
  • "Pull the last 5 conversations from contact ID xyz and summarize them."
  • "Create a new opportunity in the 'Sales' pipeline for John Doe, value $2,500, stage 'Proposal Sent'."
  • "Find every contact missing an email address and list them."

If Claude calls the tool and returns real GHL data, you're live.


Common errors and how to fix them

401 Unauthorized — PIT is wrong, expired, or missing the required scope. Regenerate with the right scopes.

404 on Location ID — You used the agency-level ID instead of the sub-account location ID. Use the sub-account one for most endpoints.

Claude doesn't see the tools — Bad JSON in the config, wrong absolute path, or you didn't fully quit before reopening. Check Help → View Logs in Claude Desktop.

Tools appear but error on call — Most often a missing Version: 2021-07-28 header on the GHL API call. Add it to every request.

What to build next

Once Claude is reading and writing to your GHL location, the real leverage comes from custom tools that match how you actually work — a find_stalled_deals tool that filters by stage age, a draft_followup tool that pulls conversation context and writes the next message, a weekly_pipeline_report resource Claude can read in one shot.

That's the gap between "I connected Claude to my CRM" and "Claude runs my CRM operations for me." It's also the gap I'll cover in the next post.

Frequently Asked Questions

What is Claude MCP?+

Model Context Protocol (MCP) is an open standard from Anthropic that lets Claude connect to external tools and data sources through a uniform interface. For GoHighLevel, MCP lets Claude read and write to your CRM directly using the official V2 API.

Do I need to be a developer to connect Claude to GoHighLevel?+

Not strictly. If you use a community-built GHL MCP server, you only need to generate a Private Integration Token in GHL, edit one config file in Claude Desktop, and restart the app. Building your own MCP server requires Node.js or Python knowledge.

Is it safe to connect Claude to my GoHighLevel account?+

It's as safe as any API integration. Claude uses your Private Integration Token to act inside your location, so treat the token like a password and scope it narrowly to only what you need. Never commit the token to a public repo.

Can I publish my own GHL MCP server on the HighLevel Marketplace?+

Yes. Once you've built an MCP server wrapping your GHL workflow, you can package it as a marketplace app, expose it to your subaccounts, and distribute it through the GoHighLevel App Marketplace under your developer account.

Ready to Build Your GoHighlevel Integration?

Get in touch with us today and let's discuss how we can help build your GoHighlevel App Integration.

Get a Quote