Skip to main content
Glama
README.md
# GHL MCP Server

A remote MCP (Model Context Protocol) server running on Cloudflare Workers that gives AI agents full programmatic access to GoHighLevel.

## What This Does

Your AI agents connect to this server as a tool. They can then create, read, update, and delete custom fields, custom values, and custom field folders in your GHL account — no manual work required.

**Current capabilities (Phase 1):**
- Contact-level custom fields (full CRUD + bulk create)
- Custom object fields (Custom Objects + Company)
- Custom field folders
- Custom values (location-wide variables)

**Planned (Phase 2+):**
- Contacts management
- Opportunities & Pipelines
- Calendars & Appointments
- Conversations & Messaging
- Workflows
- And every other GHL API endpoint

## Architecture

```
Your AI Agent (Claude, GPT, etc.)
        │
        │  MCP Protocol (Streamable HTTP)
        ▼
┌─────────────────────────┐
│  Cloudflare Worker       │
│  (GHL MCP Server)        │
│                          │
│  ┌────────────────────┐  │
│  │  McpAgent          │  │  ← Durable Object (stateful sessions)
│  │  (tools defined)   │  │
│  └────────┬───────────┘  │
│           │              │
│  ┌────────▼───────────┐  │
│  │  GHL API Client    │  │  ← Typed HTTP client
│  └────────┬───────────┘  │
└───────────┼──────────────┘
            │
            │  REST API (Bearer token)
            ▼
┌─────────────────────────┐
│  GoHighLevel API         │
│  services.leadconnector  │
│  hq.com                  │
└─────────────────────────┘
```

## Setup

### Prerequisites

- Node.js 18+
- A Cloudflare account
- A GoHighLevel Private Integration Token
- Your GHL Location ID (Sub-Account ID)

### 1. Clone & Install

```bash
git clone https://github.com/YOUR_USERNAME/ghl-mcp-server.git
cd ghl-mcp-server
npm install
```

### 2. Configure Secrets

For local development, copy the example env file:
```bash
cp .dev.vars.example .dev.vars
# Edit .dev.vars with your actual GHL credentials
```

For production deployment, set secrets via Wrangler:
```bash
npx wrangler secret put GHL_API_KEY
npx wrangler secret put GHL_LOCATION_ID
```

### 3. Deploy

```bash
npm run deploy
```

Your MCP server will be live at: `https://ghl-mcp-server.YOUR_SUBDOMAIN.workers.dev/sse`

### 4. Connect Your AI Agent

Use the deployed URL as an MCP server endpoint in your AI agent's configuration.

For Claude Desktop (via mcp-remote proxy):
```json
{
  "mcpServers": {
    "ghl": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://ghl-mcp-server.YOUR_SUBDOMAIN.workers.dev/sse"
      ]
    }
  }
}
```

## Available Tools

### Contact-Level Custom Fields
| Tool | Description |
|------|-------------|
| `ghl_list_contact_custom_fields` | List all contact custom fields |
| `ghl_get_contact_custom_field` | Get a specific field by ID |
| `ghl_create_contact_custom_field` | Create a single field |
| `ghl_update_contact_custom_field` | Update a field |
| `ghl_delete_contact_custom_field` | Delete a field |
| `ghl_bulk_create_contact_custom_fields` | Create multiple fields at once |

### Custom Object Fields
| Tool | Description |
|------|-------------|
| `ghl_list_object_custom_fields` | List fields for a custom object |
| `ghl_create_object_custom_field` | Create a field on a custom object |
| `ghl_create_custom_field_folder` | Create a folder for organizing fields |

### Custom Values
| Tool | Description |
|------|-------------|
| `ghl_list_custom_values` | List all custom values |
| `ghl_create_custom_value` | Create a custom value |
| `ghl_update_custom_value` | Update a custom value |
| `ghl_delete_custom_value` | Delete a custom value |

## Supported Field Types

| Type | Description |
|------|-------------|
| `TEXT` | Single-line text |
| `LARGE_TEXT` | Multi-line text |
| `NUMERICAL` | Number |
| `PHONE` | Phone number |
| `MONETORY` | Currency/money |
| `EMAIL` | Email address |
| `DATE` | Date picker |
| `CHECKBOX` | Checkbox |
| `SINGLE_OPTIONS` | Dropdown (single select) |
| `MULTIPLE_OPTIONS` | Multi-select |
| `RADIO` | Radio buttons |
| `FILE_UPLOAD` | File attachment |
| `TEXTBOX_LIST` | List of text inputs |

## Roadmap

### Phase 2: Contacts
- Create, update, delete, search contacts
- Bulk contact operations
- Tag management
- Notes and tasks

### Phase 3: Opportunities & Pipelines
- Pipeline management
- Opportunity CRUD
- Stage updates

### Phase 4: Calendars & Conversations
- Calendar management
- Appointment scheduling
- Send messages (SMS, email)

### Phase 5: Workflows & Automation
- Trigger workflows
- Manage workflow configurations

### Phase 6: Everything Else
- Forms, Surveys, Funnels
- Payments, Invoices, Products
- Media library
- Social media posting

## Development

```bash
# Local development
npm run dev

# Deploy to production
npm run deploy
```

## GHL API Reference

This server is built against the [GoHighLevel API V2](https://marketplace.gohighlevel.com/docs/). The OpenAPI specs from the [official docs repo](https://github.com/GoHighLevel/highlevel-api-docs) are included in `/api-specs` for reference.

## License

MIT