mcpField
G
ghl-mcp-server

ghl-mcp-server

Local
github.com/northrosetechBusiness & Marketing1Updated 27w ago

About ghl-mcp-server

ghl-mcp-server connects AI assistants and agents to GoHighLevel CRM. It provides tools across contact management, messaging, calendars, sales pipelines, payments, and other CRM functions.

Key features

  1. 01Manage contacts, tags, notes, and tasks
  2. 02Search and send messages across conversations
  3. 03Manage calendars, events, and appointments
  4. 04Handle opportunities and sales pipelines
  5. 05Work with invoices, payments, and subscriptions
  6. 06Access forms, campaigns, social posts, and products

Use cases

  1. 01Update contact records and enroll contacts in workflows
  2. 02Find available booking slots and create appointments
  3. 03Track deals and move opportunities between stages
  4. 04Create or send invoices from an AI workflow

MCP support

The MCP server exposes 60+ GoHighLevel CRM tools to MCP clients. It supports stdio and HTTP transports for connections including Claude Desktop and N8N.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"northrosetech-ghl": {
"command": "npx",
"args": [
"-y",
"@northrosetech/ghl-mcp-server"
],
"env": {
"GHL_API_KEY": "<GHL_API_KEY>",
"GHL_LOCATION_ID": "<GHL_LOCATION_ID>",
"GHL_BASE_URL": "<GHL_BASE_URL>",
"GHL_API_VERSION": "<GHL_API_VERSION>",
"TRANSPORT": "<TRANSPORT>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
Run commandnpx -y @northrosetech/ghl-mcp-server
Environment variables to set
GHL_API_KEYSecretGoHighLevel Private Integration Token. Create at: GHL Settings → Private Integrations → Create New Integration.
GHL_LOCATION_IDGoHighLevel sub-account (location) ID. Visible in the URL when viewing a sub-account.
GHL_BASE_URLGHL API base URL. The default works for all standard installs.
GHL_API_VERSIONValue for the GHL API Version header.
TRANSPORTTransport mode: 'stdio' for Claude Desktop / Claude Code, 'http' for N8N and remote clients.
LOG_LEVELLog verbosity.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@northrosetech/ghl-mcp-server1.0.1

Tools

64

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
limitintegerNoResults per page
querystringNoSearch term — name, email, phone
filtersarrayNoAdvanced search filters
locationIdstringNoGHL Location ID (uses default if omitted)
startAfterstringNoPagination cursor from previous response
startAfterIdstringNoPagination ID cursor from previous response

Details

From the project README

GHL MCP Server

GoHighLevel MCP Server for Claude, N8N, and Custom AI Agents Built by Saurabh K Shah (https://saurabhshah.com)

A comprehensive Model Context Protocol (MCP) server that connects AI assistants directly to your GoHighLevel CRM. Supports 60+ tools across contacts, conversations, calendars, pipelines, payments, invoices, workflows, custom fields, social media, and more.

Features

  • Contacts: Search, create, update, delete, upsert, tags, notes, tasks, workflow management
  • Conversations & Messaging: SMS, Email, WhatsApp, search threads, send messages, schedule sends
  • Calendars & Appointments: List calendars, get free slots, create/update/delete events
  • Opportunities & Pipelines: Full deal management, stage transitions, pipeline listing
  • Payments & Invoices: Orders, transactions, subscriptions, create/send/void invoices
  • Workflows: List all workflows, add/remove contacts from workflows
  • Custom Fields: List, create custom fields for contacts
  • Locations: Sub-account details, tags management
  • Users: Search team members
  • Forms & Surveys: List forms/surveys, get submissions
  • Campaigns: List all campaigns
  • Social Media: List/create posts, view connected accounts
  • Funnels & Blogs: List funnels, blogs
  • Products: List products and prices

Quick Start

1. Get Your GHL Credentials
  1. Log into GoHighLevel → Settings → Private Integrations
  2. Click Create New Integration
  3. Name it (e.g., "Claude MCP Server")
  4. Select all scopes you need (contacts, conversations, calendars, payments, etc.)
  5. Copy the Private Integration Token
  6. Note your Location ID (visible in the URL when viewing any sub-account)
2. Install & Configure
git clone https://github.com/northrosetech/ghl-mcp-server.git
cd ghl-mcp-server
npm install
cp .env.example .env

Edit .env:

GHL_API_KEY=your_private_integration_token_here
GHL_LOCATION_ID=your_location_id_here

Build:

npm run build
3. Connect to Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on Mac):

{
  "mcpServers": {
    "ghl": {
      "command": "node",
      "args": ["/absolute/path/to/ghl-mcp-server/dist/index.js"],
      "env": {
        "GHL_API_KEY": "your_private_integration_token",
        "GHL_LOCATION_ID": "your_location_id",
        "TRANSPORT": "stdio"
      }
    }
  }
}

Restart Claude Desktop. You should see GHL tools available.

4. Connect to N8N (HTTP Mode)

Start the server in HTTP mode:

TRANSPORT=http PORT=3001 GHL_API_KEY=your_token GHL_LOCATION_ID=your_id node dist/index.js

In N8N:

  1. Add an MCP Client node
  2. Set URL to http://localhost:3001/mcp
  3. Set transport to HTTP Streamable
  4. Use the GHL tools in your workflows
5. Connect to Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "ghl": {
      "command": "node",
      "args": ["./ghl-mcp-server/dist/index.js"],
      "env": {
        "GHL_API_KEY": "your_token",
        "GHL_LOCATION_ID": "your_id"
      }
    }
  }
}

Available Tools (60+)

Contacts (15 tools)
ToolDescription
ghl_search_contactsSearch contacts by query, tags, filters
ghl_get_contactGet contact by ID
ghl_create_contactCreate new contact
ghl_update_contactUpdate existing contact
ghl_delete_contactDelete contact
ghl_upsert_contactCreate or update by email/phone
ghl_add_contact_tagsAdd tags to contact
ghl_remove_contact_tagsRemove tags from contact
ghl_get_contact_notesGet contact notes
ghl_create_contact_noteAdd note to contact
ghl_delete_contact_noteDelete a note
ghl_get_contact_tasksGet contact tasks
ghl_create_contact_taskCreate task for contact
ghl_update_contact_taskUpdate task
ghl_add_contact_to_workflowAdd contact to workflow
ghl_remove_contact_from_workflowRemove from workflow
Conversations & Messaging (6 tools)
ToolDescription
ghl_search_conversationsSearch conversation threads
ghl_get_conversationGet conversation details
ghl_get_messagesGet messages in a thread
ghl_send_messageSend SMS/Email/WhatsApp/etc.
ghl_cancel_scheduled_messageCancel scheduled message
ghl_update_conversationUpdate conversation status
Calendars & Appointments (8 tools)
ToolDescription
ghl_list_calendarsList all calendars
ghl_get_calendarGet calendar details
ghl_get_free_slotsGet available booking slots
ghl_get_eventsGet appointments/events
ghl_create_eventCreate appointment
ghl_update_eventUpdate appointment
ghl_delete_eventDelete appointment
ghl_create_calendarCreate new calendar
Opportunities & Pipelines (7 tools)
ToolDescription
ghl_search_opportunitiesSearch deals
ghl_get_opportunityGet deal details
ghl_create_opportunityCreate new deal
ghl_update_opportunityUpdate deal / move stages
ghl_delete_opportunityDelete deal
ghl_update_opportunity_statusChange deal status
ghl_list_pipelinesList pipelines & stages
Payments & Invoices (9 tools)
ToolDescription
ghl_list_ordersList payment orders
ghl_get_orderGet order details
ghl_list_transactionsList transactions
ghl_list_subscriptionsList subscriptions
ghl_list_invoicesList invoices
ghl_get_invoiceGet invoice details
ghl_create_invoiceCreate invoice
ghl_send_invoiceEmail invoice to contact
ghl_void_invoiceVoid an invoice
Other Tools (15+ tools)
ToolDescription
ghl_list_workflowsList all workflows
ghl_list_custom_fieldsList custom fields
ghl_create_custom_fieldCreate custom field
ghl_get_locationGet location details
ghl_get_location_tagsGet location tags
ghl_create_location_tagCreate new tag
ghl_search_usersSearch team members
ghl_list_formsList forms
ghl_get_form_submissionsGet form submissions
ghl_list_surveysList surveys
ghl_list_campaignsList campaigns
ghl_list_social_postsList social posts
ghl_create_social_postCreate/schedule social post
ghl_list_social_accountsList connected social accounts
ghl_list_funnelsList funnels/websites
ghl_list_productsList products
ghl_list_blogsList blogs
ghl_list_linksList trigger links

Architecture

ghl-mcp-server/
├── src/
│   ├── index.ts              # Entry point (stdio + HTTP transport)
│   ├── constants.ts          # All GHL API endpoints & config
│   ├── types.ts              # TypeScript interfaces
│   ├── services/
│   │   └── api-client.ts     # Auth, rate limiting, error handling
│   └── tools/
│       ├── contacts.ts       # Contact management tools
│       ├── conversations.ts  # Messaging tools
│       ├── calendars.ts      # Calendar & appointment tools
│       ├── opportunities.ts  # Pipeline & deal tools
│       └── business.ts       # Payments, invoices, workflows, etc.
├── dist/                     # Compiled JS
├── package.json
├── tsconfig.json
└── .env.example

Rate Limits

The server includes built-in rate limiting matching GHL's limits:

  • Burst: 100 requests per 10 seconds
  • Daily: 200,000 requests per day

The server automatically queues and retries when limits are approached.

Error Handling

All tools return actionable error messages with hints:

  • 401: Check your API key (must be Private Integration Token)
  • 403: Missing scopes — edit your Private Integration in GHL Settings
  • 404: Resource not found — check the ID
  • 422: Validation error with details
  • 429: Rate limit — automatic retry

License

MIT — Built by Saurabh K Shah (https://saurabhshah.com)

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.