@elitedcs/ghl-mcp 3.57.0 → 3.59.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 +73 -0
- package/README.md +54 -7
- package/dist/index.js +2415 -1655
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,78 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.59.0 — One-command install: `npx -y @elitedcs/ghl-mcp cli install`
|
|
4
|
+
|
|
5
|
+
The old install step said "Edit Config, paste this block." Edit Config opens a
|
|
6
|
+
folder, not a text box — and the block was a complete config object, so anyone
|
|
7
|
+
who already had other MCP servers and followed the instruction literally wiped
|
|
8
|
+
them. A real buyer hit exactly that this week.
|
|
9
|
+
|
|
10
|
+
This release replaces the hand-edit with one command:
|
|
11
|
+
|
|
12
|
+
npx -y @elitedcs/ghl-mcp cli install
|
|
13
|
+
|
|
14
|
+
It finds Claude Desktop's settings file (including the Microsoft Store build's
|
|
15
|
+
relocated path on Windows), adds GHL Command **alongside** whatever servers are
|
|
16
|
+
already there, and saves a verified backup before touching anything. If the
|
|
17
|
+
file has a formatting problem — often caused by our own old instructions — it
|
|
18
|
+
repairs what it can and preserves the original in the backup. If the file can't
|
|
19
|
+
be read at all, it writes a fresh working config and keeps the original so
|
|
20
|
+
nothing is ever lost.
|
|
21
|
+
|
|
22
|
+
Safety properties, all tested (33 new tests):
|
|
23
|
+
|
|
24
|
+
- **Never writes without a verified backup** of an existing file, and aborts if
|
|
25
|
+
the backup can't be confirmed byte-for-byte.
|
|
26
|
+
- **Never fights Claude for the file**: writes are atomic, lock errors retry
|
|
27
|
+
briefly then stop with plain instructions, and if anything else modifies the
|
|
28
|
+
file mid-run it stops rather than overwrite the newer change.
|
|
29
|
+
- **Never guesses between multiple config files** — it stops and asks.
|
|
30
|
+
- **Never touches** symlinked configs pointing somewhere unexpected, UTF-16
|
|
31
|
+
files, or files whose content it can read but not safely restructure.
|
|
32
|
+
- `--dry-run` previews every decision without writing; `--print-only` emits the
|
|
33
|
+
merged JSON for locked-down machines.
|
|
34
|
+
|
|
35
|
+
Also in this release: the license-failure message now points at ghlcommand.com
|
|
36
|
+
(and mentions the free tier) instead of a retired page, and `setup_ghl_mcp`'s
|
|
37
|
+
description finally includes a URL for people who reach it without a license.
|
|
38
|
+
|
|
39
|
+
## 3.58.0 — Anonymous install stats, so we can find out where installs get stuck
|
|
40
|
+
|
|
41
|
+
Most people who install GHL Command never get it working, and until now there
|
|
42
|
+
was no way to tell whether that was 50 people or 1,200. This release adds a
|
|
43
|
+
small, anonymous count of install and startup events so the gap can be measured
|
|
44
|
+
and fixed. It is the first release that sends anything off your machine, so the
|
|
45
|
+
disclosure ships in the same version as the feature, not the one after.
|
|
46
|
+
|
|
47
|
+
**Turn it off with either of these and no network call is made at all:**
|
|
48
|
+
|
|
49
|
+
GHL_TELEMETRY=0
|
|
50
|
+
DO_NOT_TRACK=1
|
|
51
|
+
|
|
52
|
+
Run `health_check` to see whether it is on and to confirm an opt-out took effect.
|
|
53
|
+
|
|
54
|
+
- **Exactly twelve fields, and the server rejects anything else.** A random
|
|
55
|
+
device id, the event name, package version, Node major, platform, three
|
|
56
|
+
automation flags (CI / TTY / container), your licence tier, seconds since this
|
|
57
|
+
machine first ran GHL Command, a failure reason code, and a timestamp. The
|
|
58
|
+
endpoint refuses a payload carrying an unknown field rather than quietly
|
|
59
|
+
dropping it, and the database enforces the same list a second time — so the
|
|
60
|
+
shape cannot drift without both being changed deliberately.
|
|
61
|
+
- **Never sent:** your licence key, email, GHL API key, location ID, contact or
|
|
62
|
+
client data, hostname, usernames, file paths, or raw error text. Nothing about
|
|
63
|
+
your GoHighLevel account or your clients' accounts leaves your machine. The
|
|
64
|
+
failure reason is one of eleven fixed labels, never a server message, because
|
|
65
|
+
those can name a sub-account.
|
|
66
|
+
- **Separate identity from your licence.** The telemetry device id is generated
|
|
67
|
+
independently and shares no code with the licence fingerprint, so it cannot
|
|
68
|
+
affect activation or consume an install slot. A consequence worth stating: a
|
|
69
|
+
telemetry row cannot be linked back to a customer.
|
|
70
|
+
- **It cannot slow you down.** Sending is fire-and-forget with a 2-second
|
|
71
|
+
timeout, never awaited, and every failure is swallowed. Identity and
|
|
72
|
+
environment are resolved once per process, so a tool call performs no disk
|
|
73
|
+
access at all.
|
|
74
|
+
- `health_check` gains an "Anonymous usage stats" row reporting ON or OFF.
|
|
75
|
+
|
|
3
76
|
## 3.57.0 — Clone Site: copy a live page for a client, with the guardrails built in
|
|
4
77
|
|
|
5
78
|
A second bundled skill. Point Claude at any live URL and get a working,
|
package/README.md
CHANGED
|
@@ -89,7 +89,24 @@ This MCP (Model Context Protocol) server connects Claude directly to GoHighLevel
|
|
|
89
89
|
|
|
90
90
|
### 2. Install in Claude Desktop App
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
One command in any terminal (Terminal on Mac, PowerShell on Windows):
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
npx -y @elitedcs/ghl-mcp cli install
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
It finds Claude Desktop's settings file, adds GHL Command **alongside any MCP servers you already have** (nothing gets overwritten), and saves a backup first. If the file has a formatting problem, it repairs it. Then **quit Claude completely** — Cmd+Q on Mac; on Windows right-click the Claude icon by the clock and choose Quit — and reopen.
|
|
99
|
+
|
|
100
|
+
> **Claude Code (terminal) instead?** One command:
|
|
101
|
+
> ```
|
|
102
|
+
> claude mcp add --scope user -t stdio ghl -- npx -y @elitedcs/ghl-mcp@latest
|
|
103
|
+
> ```
|
|
104
|
+
> Then restart Claude Code.
|
|
105
|
+
|
|
106
|
+
<details>
|
|
107
|
+
<summary>Prefer to edit the config by hand?</summary>
|
|
108
|
+
|
|
109
|
+
Open Claude Desktop → **Settings...** → **Developer** → **Edit Config**. That opens a **folder**, not a text box — open `claude_desktop_config.json` from it in a text editor. If the file is empty, paste this whole block:
|
|
93
110
|
|
|
94
111
|
```json
|
|
95
112
|
{
|
|
@@ -102,13 +119,9 @@ Open Claude Desktop. Click **Claude** menu (top-left) → **Settings...** → **
|
|
|
102
119
|
}
|
|
103
120
|
```
|
|
104
121
|
|
|
105
|
-
|
|
122
|
+
If it already has other tools in it, do **not** paste over them — add only the `"ghl": { ... }` entry inside your existing `"mcpServers"` object. Save, then fully quit and reopen Claude. (Unsure? Run `npx -y @elitedcs/ghl-mcp cli install --dry-run` to preview exactly what would change, or `--print-only` to get the merged file printed for you.)
|
|
106
123
|
|
|
107
|
-
>
|
|
108
|
-
> ```
|
|
109
|
-
> claude mcp add --scope user -t stdio ghl -- npx -y @elitedcs/ghl-mcp@latest
|
|
110
|
-
> ```
|
|
111
|
-
> Then restart Claude Code.
|
|
124
|
+
</details>
|
|
112
125
|
|
|
113
126
|
### 3. Activate
|
|
114
127
|
|
|
@@ -690,6 +703,40 @@ This MCP server is safe to share via GitHub.
|
|
|
690
703
|
|
|
691
704
|
---
|
|
692
705
|
|
|
706
|
+
## Anonymous Usage Stats
|
|
707
|
+
|
|
708
|
+
GHL Command sends a small, anonymous count of install and startup events so we can see where installs get stuck. Most people who install this never get it working, and we couldn't tell whether that was 50 people or 1,200 — this is how we find out and fix it.
|
|
709
|
+
|
|
710
|
+
**Turn it off with either of these — no network call is made at all:**
|
|
711
|
+
|
|
712
|
+
```bash
|
|
713
|
+
GHL_TELEMETRY=0 # or the cross-tool standard:
|
|
714
|
+
DO_NOT_TRACK=1
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
Run `health_check` any time to see whether it's on and confirm an opt-out took effect.
|
|
718
|
+
|
|
719
|
+
**Exactly what is sent** — twelve fields, nothing else, ever:
|
|
720
|
+
|
|
721
|
+
| Field | Example | What it is |
|
|
722
|
+
|---|---|---|
|
|
723
|
+
| `device_id` | `e09eb5cd…` | A random number generated on your machine. Not derived from your hostname, username, or hardware. |
|
|
724
|
+
| `event` | `client_connected` | One of seven: connected, started unlicensed, entered a key, setup failed, setup succeeded, license valid, first tool call. |
|
|
725
|
+
| `pkg_version` | `3.57.0` | Which version you're running. |
|
|
726
|
+
| `node_major` | `24` | Node.js major version. |
|
|
727
|
+
| `platform` | `darwin` | mac, linux, or windows. |
|
|
728
|
+
| `is_ci`, `is_tty`, `is_container` | `false` | Whether this is an automated environment. |
|
|
729
|
+
| `licensed_tier` | `none` | none, free, or full. |
|
|
730
|
+
| `elapsed_s` | `12` | Seconds since this machine first ran GHL Command. |
|
|
731
|
+
| `reason_code` | `ghl_key_wrong_location` | If setup failed, which of eleven fixed labels. Never a raw error message. |
|
|
732
|
+
| `ts` | `2026-08-04T03:31:08Z` | When it happened. |
|
|
733
|
+
|
|
734
|
+
**Never sent:** your license key, email, GHL API key, location ID, contact or client data, hostname, usernames, file paths, IP-derived location, or raw error text. Nothing about your GHL account or your clients' accounts ever leaves your machine.
|
|
735
|
+
|
|
736
|
+
The receiving endpoint **rejects** any payload containing a field not on that list rather than quietly dropping it, and the database enforces the same list a second time — so the shape can't drift without both being changed deliberately.
|
|
737
|
+
|
|
738
|
+
---
|
|
739
|
+
|
|
693
740
|
## Reliability & Type Safety
|
|
694
741
|
|
|
695
742
|
This server has been through a rigorous, multi-pass audit for production reliability (v2.4.0–v2.7.0). Here's what's in place:
|