@elitedcs/ghl-mcp 3.32.0 → 3.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +71 -0
- package/README.md +27 -9
- package/dist/index.js +895 -310
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,76 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.34.0 — Headless/server deployment hardening
|
|
4
|
+
|
|
5
|
+
Built for production server installs (Linux droplets, containers, MCP
|
|
6
|
+
gateways). License scope, stated plainly: **one license covers every
|
|
7
|
+
GoHighLevel sub-account you manage — unlimited, across multiple agency
|
|
8
|
+
companies — on up to 3 of your own machines. Never metered per account.**
|
|
9
|
+
Nothing in the code ever capped registered locations; the docs now say so.
|
|
10
|
+
|
|
11
|
+
- **Headless seed CLI** behind an explicit sentinel (`ghl-mcp cli …`), so
|
|
12
|
+
gateway-supplied argv can never trigger a subcommand:
|
|
13
|
+
`register-location`, `register-company-firebase`, `register-agency-key`,
|
|
14
|
+
`list-locations`. Live validation identical to the interactive tools
|
|
15
|
+
(`--no-validate` for air-gapped builds), strict arg parsing, deterministic
|
|
16
|
+
exit codes (0/2/3/4), config-dir writability preflight, never prints keys.
|
|
17
|
+
- **`.ghl-tokens.json` schema documented** with a pre-populatable example —
|
|
18
|
+
the registry is read at boot, so a hand-seeded file just works. Full guide
|
|
19
|
+
at `docs/HEADLESS.md` (+ new README "Server / Headless Deployment" section).
|
|
20
|
+
- **Firebase scope documented:** credentials are per-COMPANY, not
|
|
21
|
+
per-sub-account — one set covers every sub-account under a company; each
|
|
22
|
+
company's token rotates and persists independently.
|
|
23
|
+
- **`GHL_MCP_CONFIG_DIR`** — explicit absolute-path config-dir override so all
|
|
24
|
+
state (including auto-rotated Firebase tokens) lives on a persistent
|
|
25
|
+
mounted volume. Relative paths fail fast at boot.
|
|
26
|
+
- **Node 20 supported** (`engines: >=20`, esbuild target lowered to node20).
|
|
27
|
+
Verified on real Node 20: full test suite, server boot, CLI, and Ed25519
|
|
28
|
+
attestation verification (one harmless ExperimentalWarning). The publish
|
|
29
|
+
smoke test now runs on a Node 20/22/24 matrix.
|
|
30
|
+
- **Graceful shutdown** on SIGTERM/SIGINT (bounded 3s) for supervised
|
|
31
|
+
deployments.
|
|
32
|
+
- **`GHL_MCP_DISABLE_UPDATE_CHECK=1`** disables the startup npm version ping
|
|
33
|
+
(air-gapped/firewalled servers).
|
|
34
|
+
- Transport remains stdio by design (gateways supervise it as a child
|
|
35
|
+
process); an optional Streamable-HTTP mode is on the roadmap for the
|
|
36
|
+
server-deployment track.
|
|
37
|
+
|
|
38
|
+
## 3.33.0 — Account-wide silent-failure audit + trust hardening
|
|
39
|
+
|
|
40
|
+
**`audit_workflows`** — scans EVERY workflow in the current location for
|
|
41
|
+
references to pipelines, stages, custom fields, users, workflows, forms,
|
|
42
|
+
calendars, and surveys that don't exist — the GHL bug where one bad ID silently
|
|
43
|
+
kills that action and every action after it. Returns a prioritized report:
|
|
44
|
+
what's broken, what couldn't be scanned, what couldn't be fully verified.
|
|
45
|
+
Conservative by construction: it never reports a false break (uncertain checks
|
|
46
|
+
are `unverified`, not `error`). The same engine upgrade sharpens
|
|
47
|
+
`validate_workflow`: four opportunity action shapes (including the dominant
|
|
48
|
+
UI-native `internal_create_opportunity`), if/else condition-node custom-field
|
|
49
|
+
checks, `create_update_contact` field refs, hyphenated `task-notification`
|
|
50
|
+
nodes, and custom-field trigger conditions are now covered. 18 new unit tests;
|
|
51
|
+
verified live against 35 real workflows with zero false alarms.
|
|
52
|
+
|
|
53
|
+
**`register_agency_key`** — new tool to store the agency-level (company-scoped)
|
|
54
|
+
API key, with live validation before saving. Previously the snapshot tools
|
|
55
|
+
required an agency key that no tool could register.
|
|
56
|
+
|
|
57
|
+
**Trust + reliability hardening** (from the 2026-06-10 audit):
|
|
58
|
+
|
|
59
|
+
- List tools now attach `_pagination` (returned / limit / total / complete +
|
|
60
|
+
an explicit INCOMPLETE note) so a single page can never silently read as the
|
|
61
|
+
full dataset: `search_contacts`, `search_opportunities`,
|
|
62
|
+
`search_conversations`, `list_invoices`, `list_workflows_full`.
|
|
63
|
+
- Version is read from package.json at runtime instead of baked at build time —
|
|
64
|
+
a stale local build can no longer misreport its version.
|
|
65
|
+
- `health_check` now reports a corrupted token registry as a FAIL with recovery
|
|
66
|
+
steps (previously only visible on stderr, i.e. invisible in the Desktop App).
|
|
67
|
+
- Clearer guidance errors: missing locationId now points at `switch_location` /
|
|
68
|
+
`list_registered_locations`; missing agency key points at
|
|
69
|
+
`register_agency_key`.
|
|
70
|
+
- Firebase token-refresh URL now percent-encodes the API key (consistency).
|
|
71
|
+
- New regression tests pin that error messages never contain API keys or
|
|
72
|
+
Firebase refresh tokens.
|
|
73
|
+
|
|
3
74
|
## 3.32.0 — Account-health summary + phone reads
|
|
4
75
|
|
|
5
76
|
Three read tools. The composite is the second roadmap build and the first
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GHL Command — GoHighLevel MCP Server
|
|
2
2
|
|
|
3
|
-
**Full GoHighLevel API access for Claude.**
|
|
3
|
+
**Full GoHighLevel API access for Claude.** 219 tools across 43 modules — manage contacts, conversations, pipelines, calendars, funnels, workflows, invoices, custom objects, webhooks, and more. **Includes full workflow builder, funnel/page editor, form builder, pipeline builder, bulk operations, account export, and workflow cloning** — capabilities no other GHL tool offers. **Multi-tenant:** one install can run the workflow builder across multiple clients' GHL accounts.
|
|
4
4
|
|
|
5
5
|
**Distributed via npm as [`@elitedcs/ghl-mcp`](https://www.npmjs.com/package/@elitedcs/ghl-mcp).** Buyers install with one config block — no git, no Node.js setup, no terminal commands. Updates flow automatically (`npx @latest` re-resolves on every Claude restart).
|
|
6
6
|
|
|
@@ -26,7 +26,7 @@ Built by [Elite DCs, LLC](https://elitedcs.com).
|
|
|
26
26
|
> "Thank you, Jerry. You're a star."
|
|
27
27
|
> — Frankie B.
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
30+ releases on npm since launch (v3.6.0 → v3.34.0). Bugs get fixed in days, not quarters.
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
@@ -116,7 +116,7 @@ Run setup_ghl_mcp to activate GHL Command:
|
|
|
116
116
|
ghl_location_id: YOUR_LOCATION_ID
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
Approve the tool call. Server validates your license, verifies your GHL credentials, writes them to a per-user config file. **Quit Claude one more time and reopen** —
|
|
119
|
+
Approve the tool call. Server validates your license, verifies your GHL credentials, writes them to a per-user config file. **Quit Claude one more time and reopen** — the full core toolset is now unlocked (219 tools total with the optional Workflow Builder Firebase add-on).
|
|
120
120
|
|
|
121
121
|
### 4. Try it
|
|
122
122
|
|
|
@@ -217,7 +217,25 @@ To unlock full builder access across multiple clients from one install:
|
|
|
217
217
|
|
|
218
218
|
---
|
|
219
219
|
|
|
220
|
-
##
|
|
220
|
+
## Server / Headless Deployment
|
|
221
|
+
|
|
222
|
+
GHL Command runs headless — Linux droplet, container, or behind an MCP gateway (MetaMCP, etc.). **One license covers every GoHighLevel sub-account you manage, on up to 3 of your own machines. No per-account fees.** A server counts as one machine; restarts never consume extra activations.
|
|
223
|
+
|
|
224
|
+
Highlights (full guide: [`docs/HEADLESS.md`](docs/HEADLESS.md)):
|
|
225
|
+
|
|
226
|
+
- **Scriptable multi-account setup** — pre-seed the documented `.ghl-tokens.json`, or use the CLI in a Dockerfile/entrypoint:
|
|
227
|
+
```bash
|
|
228
|
+
npx -y @elitedcs/ghl-mcp cli register-location --location-id XXXX --api-key pit-... --name "Account"
|
|
229
|
+
npx -y @elitedcs/ghl-mcp cli register-company-firebase --company-id YYYY --refresh-token ... --user-id ...
|
|
230
|
+
npx -y @elitedcs/ghl-mcp cli register-agency-key --api-key pit-...
|
|
231
|
+
```
|
|
232
|
+
- **Persistent config dir** — set `GHL_MCP_CONFIG_DIR=/data/ghl-mcp` (absolute path) on a mounted volume so auto-rotated Firebase tokens survive container restarts.
|
|
233
|
+
- **Firebase is per-company, not per-sub-account** — one credential set covers all sub-accounts under a company.
|
|
234
|
+
- **Node 20+**, graceful SIGTERM shutdown, `GHL_MCP_DISABLE_UPDATE_CHECK=1` for air-gapped boxes. Transport is stdio (your gateway supervises it as a child process); an HTTP serve mode is on the roadmap.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Tools
|
|
221
239
|
|
|
222
240
|
> **v3.10.0 adds Email Templates** (`list_email_templates`, `create_email_template`, `update_email_template`) — Claude can now create new HTML email templates and save content into them via the public API. Templates power both standalone marketing emails and workflow email actions. Delete + rename remain UI-only (no public-API endpoint exists).
|
|
223
241
|
|
|
@@ -537,7 +555,7 @@ To unlock full builder access across multiple clients from one install:
|
|
|
537
555
|
Uses **esbuild** for production builds (not tsc). TypeScript 5.9.3 + MCP SDK types cause tsc to run out of memory at 4GB+. esbuild bundles in ~5ms with zero memory issues.
|
|
538
556
|
|
|
539
557
|
```bash
|
|
540
|
-
npm run build # esbuild → dist/index.js (~
|
|
558
|
+
npm run build # esbuild → dist/index.js (~428KB)
|
|
541
559
|
npm run dev # tsc --watch (type-checking only)
|
|
542
560
|
```
|
|
543
561
|
|
|
@@ -648,9 +666,9 @@ This MCP server is safe to share via GitHub.
|
|
|
648
666
|
| Concern | How It's Handled |
|
|
649
667
|
|---|---|
|
|
650
668
|
| **API Keys** | Stored in a per-user credentials file (`~/Library/Application Support/elitedcs-ghl-mcp/credentials.json` on Mac) at chmod 0600. Never in code, never committed. |
|
|
651
|
-
| **License validation** |
|
|
669
|
+
| **License validation** | Checked at `setup_ghl_mcp` against the elitedcs.com license server, then cached as a signed attestation (~30 days). The server renews the attestation in the background as expiry approaches — never per-request, and your GHL keys are never sent to us. |
|
|
652
670
|
| **Multi-user** | Each user brings their own license key + GHL API key. Complete account isolation. |
|
|
653
|
-
| **Scope** | The server only talks to GHL's API
|
|
671
|
+
| **Scope** | The server only talks to GHL's API, the elitedcs.com license server (setup + periodic attestation renewal), and npm's registry (startup version banner — `GHL_MCP_DISABLE_UPDATE_CHECK=1` to disable). No filesystem access beyond its config dir, no shell commands. |
|
|
654
672
|
| **Permissions** | Controlled by your GHL Private Integration scopes. Disable what you don't need. |
|
|
655
673
|
|
|
656
674
|
---
|
|
@@ -716,7 +734,7 @@ Source repo is private. Contributors need an invitation from `drjerryrelth`. The
|
|
|
716
734
|
|
|
717
735
|
### Reducing context / token usage
|
|
718
736
|
|
|
719
|
-
Every registered MCP tool's schema is shipped to the model on every message. With
|
|
737
|
+
Every registered MCP tool's schema is shipped to the model on every message. With 219 tools that's a meaningful per-message context cost even in chats that never touch GHL. If you only use a slice of GHL Command, restrict the tool surface with `GHL_ENABLED_MODULES` and/or `GHL_ENABLED_TOOLS`:
|
|
720
738
|
|
|
721
739
|
```jsonc
|
|
722
740
|
// Claude Desktop config — enable whole modules
|
|
@@ -778,7 +796,7 @@ Built by **[Elite DCs, LLC](https://elitedcs.com)** — a digital marketing and
|
|
|
778
796
|
|
|
779
797
|
**Tech stack:** TypeScript, Node.js, esbuild, MCP SDK, Zod, GHL API v2, Firebase Auth
|
|
780
798
|
|
|
781
|
-
**Version:**
|
|
799
|
+
**Version:** 3.34.0
|
|
782
800
|
|
|
783
801
|
---
|
|
784
802
|
|