[email protected]
Portfolio / connectors

connectors

Open source under the MIT licence. View the source

A TypeScript npm workspace holding a GoHighLevel (GHL) API client and a read-only MCP server on top of it.

Experimental

connectors

The problem

Several of the author's apps each had their own partial GHL client and their own copy of the same lessons. This repo is the one place those lessons live, published as a reference for anyone building on the GHL API.

How it works

packages/highlevel is a client whose operation catalog is generated from GHL's published OpenAPI files, pinned to one upstream commit, with typed helpers for contacts, opportunities, pipelines and more. A client is built for one account and refuses requests naming another known account's location, and sends writes only when built with allowWrites: true. packages/highlevel-mcp is a stdio MCP server exposing allowlisted read-only tools; write tools are refused at boot.

How connectors works

Features

  • Every official GHL v2/v3 endpoint reachable through a generated catalog
  • Account guard and opt-in writes
  • Webhook signature verification, replay store and typed event names
  • Retries with backoff, typed errors, OAuth helper with pluggable token store
  • Read-only stdio MCP server
  • Tests use fake fetch functions; none call GoHighLevel

How it was built

Several apps talked to the GoHighLevel CRM API, each with its own partial client and its own copy of the same lessons. On 2026-10-07 Rico decided on one repository for every business connector, starting with GoHighLevel.

The whole library and its MCP server were built that day, cut into one issue per capability and run in three waves.

A generator reads the vendor's published OpenAPI files at a pinned commit, so every endpoint is reachable without a hand-written method for each.

A client is built for one account and refuses any request naming another account before it is sent. Writes are opt-in, and 22 POST operations that only search or list were reclassified as reads.

AI coding agents built each capability in its own lane and pull request, and Rico set the rule that a connector carries every capability its consumers already had.