@aiwerk/mcp-server-ghl
Enables AI agents to interact with the GoHighLevel (GHL) CRM and marketing automation platform through 576 tools covering contacts, opportunities, conversations, calendars, invoices, payments, campaigns, and other business operations.
README
@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 Fields
Why 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.
Install
npm install -g @aiwerk/mcp-server-ghl
Requires 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-ghl
Claude 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=1
Every 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 |
|---|---|---|
GHL_PIT_TOKEN |
required | Private Integration Token |
GHL_LOCATION_ID |
required | Location the PIT is scoped to; default for locationId/altId params |
GHL_API_BASE_URL |
https://services.leadconnectorhq.com |
Override the host |
GHL_API_TIMEOUT_MS |
30000 |
Per request timeout |
GHL_DRY_RUN |
off | 1 blocks all writes |
GHL_MAX_RATE_LIMIT_WAIT_MS |
10000 |
Longest wait before failing on a rate limit |
GHL_ENABLED_TAGS |
all | Comma separated domain filter, for example contacts,invoices |
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 account
Development
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 build
Licence
MIT, see LICENSE.
Built by AIWerk. Not affiliated with GoHighLevel / HighLevel Inc.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。