@aiwerk/mcp-server-ghl
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., "@@aiwerk/mcp-server-ghlList opportunities won this month and their total value"
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.
@aiwerk/mcp-server-ghl
MCP server for the GoHighLevel (GHL) API, the CRM and marketing automation platform used by agencies to run their clients' sales pipelines, calendars, conversations and campaigns.
569 tools across 41 domains, generated from GHL's official OpenAPI 3.0.0 specification.
Contacts Opportunities Conversations Calendars Invoices
Payments Workflows Campaigns Forms Surveys
Funnels Blogs Courses Products Store
Social Media Ad Manager SaaS API Snapshots Custom FieldsWhy generated
Every endpoint, HTTP verb, parameter and field name comes from the official specification rather than from prose documentation, so the tool surface can't drift from what GHL actually accepts. What the specification can't tell you, which endpoints need an agency-level token instead of a location one, which API version an endpoint expects, which fields the docs forgot to mark required, is layered on top by hand. See GHL specifics worth knowing.
Related MCP server: GoHighLevel MCP Server
Install
npm install -g @aiwerk/mcp-server-ghlRequires Node.js 18 or newer.
Authentication
Create a Private Integration Token (PIT) in the target location under Settings > Private Integrations. A PIT is scoped to one location, it is not an agency-wide credential, and most tools need to know which location they're acting on.
export GHL_PIT_TOKEN="your-private-integration-token"
export GHL_LOCATION_ID="your-location-id"Usage
Claude Code
claude mcp add ghl \
--env GHL_PIT_TOKEN=your-token \
--env GHL_LOCATION_ID=your-location-id \
-- npx -y @aiwerk/mcp-server-ghlClaude Desktop
{
"mcpServers": {
"ghl": {
"command": "npx",
"args": ["-y", "@aiwerk/mcp-server-ghl"],
"env": {
"GHL_PIT_TOKEN": "your-token",
"GHL_LOCATION_ID": "your-location-id"
}
}
}
}AIWerk hosted service
Install it from the catalogue at aiwerkmcp.com and add your token in the interface. No local setup required.
Safety features
Dry run
export GHL_DRY_RUN=1Every write (POST/PUT/PATCH/DELETE) is stopped before it reaches GHL and
returns a description of the request that would have been sent. Reads still work
normally.
Agency-only endpoints get a clear error, not a bare 401
39 endpoints (snapshots, the SaaS API, agency OAuth token exchange, creating custom
objects) require an agency-level token. A location PIT gets a plain 401 from GHL for
these with no explanation in the body, the server knows which endpoints these are and
returns a message saying so, instead of making it look like a bad or expired token.
locationId is filled in automatically
A PIT is already scoped to one location, so 430 of the 569 tools accept locationId
(or altId/altType) as an optional parameter, if the calling agent doesn't supply
one, the server falls back to GHL_LOCATION_ID. This also means a tool call can't
accidentally target the wrong location by a copy-pasted id from a different account,
since the default always matches the token's own scope.
Configuration
Variable | Default | Purpose |
| required | Private Integration Token |
| required | Location the PIT is scoped to; default for |
|
| Override the host |
|
| Per request timeout |
| off |
|
|
| Longest wait before failing on a rate limit |
| all | Comma separated domain filter, for example |
Narrowing the tool set
All 569 tools are registered by default. A client that prefers a smaller surface can
restrict the server to specific domains (domain names are hyphenated, e.g.
social-media-posting, ad-manager):
export GHL_ENABLED_TAGS="contacts,opportunities,conversations,calendars"Unknown domain names are reported on startup rather than silently ignored.
A few GHL specifics worth knowing
The API version differs per endpoint, not globally. GHL sends a
Versionrequest header (2021-07-28or2021-04-15) that the server sets per call based on what each endpoint actually expects, a wrong version returns a different response shape silently, not an error, so there's no single default to fall back on. 29 endpoints send no version header at all; the server matches that too.A location PIT cannot call agency-only endpoints, ever, no scope fixes it.
snapshots/*,saas-api/*,oauth/locationToken,oauth/installedLocations, and creating custom objects (POST /objects) need an agency-level credential.11 endpoints in the official spec omit a path parameter's declaration (e.g. a
noteIdon some calendar/conversation routes, apostIdon blogs, atypeon contacts). The generator fills these in as required string fields since the parameter is clearly used in the path template, this is an upstream spec gap, not something introduced here.Rate limits have not yet been measured against a live account. The client retries on
429using whateverRetry-AfterGHL sends, but does not pre-emptively throttle with an invented number, an assumed limit that's wrong would either under-use the account or start failing calls that would have succeeded.
Testing
npm test # unit tests, mocked fetch
npm run smoke # read only, against a live accountDevelopment
The tool layer is generated and must not be edited by hand:
npm run gen-naming # specification -> tool names
npm run gen-tools # specification -> zod schemas and call sites
npm run buildLicence
MIT, see LICENSE.
Built by AIWerk. Not affiliated with GoHighLevel / HighLevel Inc.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to interact with GoHighLevel's complete API including contacts, opportunities, calendars, workflows, communications, and business management tools. Supports both Bearer token and OAuth2 authentication with automatic token management.137MIT
- AlicenseNot gradedqualityDmaintenanceConnects AI agents like Claude Desktop to the GoHighLevel CRM platform with over 260 tools for managing contacts, messaging, and business workflows. It enables comprehensive automation of marketing, sales pipelines, and customer relationship management through natural language.23ISC
- AlicenseNot gradedqualityBmaintenanceProvides access to over 460 tools within the GoHighLevel CRM, allowing AI assistants to manage contacts, opportunities, messaging, and business workflows through natural language.2397ISC
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with GoHighLevel's CRM, marketing automation, and business management tools via the API v2, with support for contacts, conversations, calendars, opportunities, payments, and workflows.35MIT
Related MCP Connectors
LeadConnector / GoHighLevel MCP Pack — wraps the GoHighLevel CRM for AI agents.
Connect AI to your Attio CRM. Manage contacts, companies, deals, and sales pipelines. Create tasks…
60+ Meta Ads tools for AI agents: audits, campaign management, audiences and CAPI tracking.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/AIWerk/mcp-server-ghl'
If you have feedback or need assistance with the MCP directory API, please join our Discord server