Skip to main content
Glama
geopopos

GoHighLevel MCP Server

by geopopos
README.md
# GoHighLevel MCP Server

An MCP (Model Context Protocol) server that integrates with the [GoHighLevel](https://www.gohighlevel.com/) CRM API. Enables LLMs to read conversations, send messages, create tasks, and manage calendar appointments within GoHighLevel locations.

## Tools

| Tool | Description |
|---|---|
| `ghl_search_conversations` | Search conversations in a location by query, status, contact, or assigned user |
| `ghl_get_conversation` | Get details of a single conversation by ID |
| `ghl_get_messages` | Retrieve messages from a conversation (with pagination) |
| `ghl_send_message` | Send SMS, Email, WhatsApp, Instagram, Facebook, or Live Chat messages |
| `ghl_create_conversation` | Create a new conversation for a contact in a location |
| `ghl_get_tasks` | List all tasks for a contact |
| `ghl_create_task` | Create a new task on a contact |
| `ghl_get_calendars` | List all calendars in a location |
| `ghl_get_calendar_events` | Get appointments/events within a date range |
| `ghl_create_appointment` | Book a new appointment on a calendar |

## Prerequisites

- Python 3.10+
- A GoHighLevel account with API access
- A **Private Integration Token** or **OAuth Access Token** (Sub-Account level)

## Installation

```bash
cd gohighlevel-mcp
pip install -e .
```

## Configuration

Set your GoHighLevel API token as an environment variable:

```bash
export GHL_API_KEY="your-gohighlevel-api-token"
```

### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "gohighlevel": {
      "command": "python3",
      "args": ["-m", "gohighlevel_mcp.server"],
      "env": {
        "GHL_API_KEY": "your-gohighlevel-api-token"
      }
    }
  }
}
```

### Claude Code (CLI)

```bash
claude mcp add gohighlevel -- python3 -m gohighlevel_mcp.server
```

Make sure `GHL_API_KEY` is set in your shell environment before running.

## API Scopes Required

The token you provide needs these GoHighLevel API scopes:

| Scope | Used By |
|---|---|
| `conversations.readonly` | Search & get conversations |
| `conversations.write` | Create conversations |
| `conversations/message.readonly` | Read messages |
| `conversations/message.write` | Send messages |
| `contacts.readonly` | List tasks |
| `contacts.write` | Create tasks |
| `calendars.readonly` | List calendars |
| `calendars/events.readonly` | Get calendar events |
| `calendars/events.write` | Create appointments |

## Example Usage

Once connected, you can ask your LLM things like:

- "Show me unread conversations in location `abc123`"
- "Get the last 10 messages from conversation `xyz789`"
- "Send an SMS to contact `def456` saying 'Your appointment is confirmed'"
- "Create a task for contact `ghi012` titled 'Follow up call' due tomorrow"
- "List all calendars in location `abc123`"
- "Book an appointment on calendar `cal001` for contact `def456` tomorrow at 2pm"