- Home
- MCP servers
- GoHighLevel
GoHighLevel
- typescript
0
GitHub Stars
typescript
Language
3 months ago
First Indexed
3 weeks ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
You can use this MCP server to connect GoHighLevel sub-account APIs to AI assistants and Claude Desktop, enabling automated workflows, data access, and action execution across contacts, opportunities, calendars, invoices, and more. It provides a foundation to build AI-powered automations against GoHighLevel with safe, event-driven tooling through MCP (Model Context Protocol).
How to use
Connect an MCP client to the server via a remote HTTP endpoint or through a local stdio process. For web-based clients, you will interact with a streaming MCP endpoint that delivers events and accepts commands to perform actions in your GoHighLevel account. For Claude Desktop or other local clients, you run the MCP server as a local process and configure the client to point at the local stdio interface. Use the available tools to manage contacts, messages, calendars, opportunities, invoices, products, workflows, and more.
How to install
# Prerequisites: Node.js 18+; a GoHighLevel account with API access
# Clone the MCP server repository
git clone https://github.com/mastanley13/GoHighLevel-MCP.git
cd GoHighLevel-MCP
# Install dependencies
npm install
# Create environment file (copy from example and edit values)
cp .env.example .env
# Build the project
npm run build
# Start the server (production)
npm start
# For development with hot reload
npm run dev
Configuration & usage notes
The server relies on a private Integrations API key from GoHighLevel and a specific Location ID. Set environment variables accordingly and ensure you enable the required scopes in your Private Integration. Use these values when configuring your MCP client and Claude Desktop integration.
Claude Desktop integration
# Claude Desktop MCP configuration example
{
"mcpServers": {
"ghl_mcp": {
"command": "node",
"args": ["path/to/ghl-mcp-server/dist/server.js"],
"env": {
"GHL_API_KEY": "YOUR_PRIVATE_INTEGRATIONS_API_KEY",
"GHL_BASE_URL": "https://services.leadconnectorhq.com",
"GHL_LOCATION_ID": "YOUR_LOCATION_ID"
}
}
}
}
HTTP MCP endpoint for web apps
For web-based MCP clients, use the streaming endpoint provided by your deployment. Example endpoint path is the SSE URL exposed after deployment, which delivers MCP events for real-time interaction.
Deployment & runtime options
You can deploy the MCP server using several hosting environments. Choose Vercel for zero-config deployment, Railway for quick one-click setup, or Render for automatic deployments. Each option supports environment variable configuration to supply your API key, base URL, and location ID.
Testing & validation
curl http://localhost:8000/health
curl http://localhost:8000/tools
curl -H "Accept: text/event-stream" http://localhost:8000/sse
Security & best practices
Do not commit API keys to version control. Use environment variables for sensitive data. Enforce proper permissions, monitor API usage, and implement rate limiting and error handling. Ensure only trusted clients can reach your MCP endpoints.
Troubleshooting
If you encounter connectivity issues, verify that your Private Integrations API key is active and has the required scopes, confirm the Location ID matches your GHL account, and ensure environment variables are correctly configured. For memory or startup problems, increase Node.js memory limits and verify the build artifacts are present.
Notes on scalability
Plan for production use with proper monitoring, logging, and autoscaling. Use pagination for large data results, cache frequently requested data, and implement exponential backoff for API retries to stay within GoHighLevel rate limits.
Available tools
create_contact
Create a new contact with given details and assign attributes, tags, and related records as needed.
search_contacts
Query contacts by filters and return matching results with optional pagination.
get_contact
Retrieve a single contact by ID.
update_contact
Update contact fields, including tags and relationships.
delete_contact
Remove a contact from the system.
add_contact_tags
Attach one or more tags to a contact for categorization.
remove_contact_tags
Detach tags from a contact to refine grouping.
get_contact_tasks
List tasks associated with a contact.
create_contact_task
Create a new task for a contact.
update_contact_task
Modify an existing contact task.
delete_contact_task
Delete a contact task.
get_contact_notes
Fetch notes tied to a contact.
create_contact_note
Add a note to a contact's history.
update_contact_note
Update an existing contact note.
delete_contact_note
Remove a contact note.
upsert_contact
Smart create or update a contact in a single operation.
get_duplicate_contact
Check for potential duplicate contacts based on identifiers.
bulk_update_contact_tags
Apply tag updates to multiple contacts in a single operation.
add_contact_to_workflow
Add a contact to a workflow automation.
remove_contact_from_workflow
Remove a contact from a workflow automation.
add_contact_followers
Assign followers to a contact for collaboration.
remove_contact_followers
Remove followers from a contact.
send_sms
Send an SMS to a contact with optional formatting.
send_email
Send an email with HTML/plain text content.
search_conversations
Find conversations by criteria.
get_conversation
Retrieve a specific conversation.
create_conversation
Create a new conversation thread.
get_message
Fetch a message by ID.
get_email_message
Fetch an email message by ID.
upload_message_attachments
Attach files to messages.
update_message_status
Update the delivery/read status of a message.
cancel_scheduled_message
Cancel a scheduled message.
get_message_recording
Retrieve a recording for a message/call.
get_message_transcription
Fetch transcription for an audio message or call.
download_transcription
Download the transcription text.
add_inbound_message
Log an incoming message manually.
add_outbound_call
Log an outbound call in the system.
live_chat_typing
Indicate typing activity in live chat.
create_blog_post
Create a new blog post with content and SEO metadata.
update_blog_post
Edit an existing blog post.
get_blog_posts
List blog posts with optional filters.
get_blog_sites
Retrieve available blog sites.
get_blog_authors
Fetch blog authors.
get_blog_categories
Fetch blog categories for organization.
check_url_slug
Validate SEO-friendly URL slug availability.
search_opportunities
Advanced filtering to find opportunities by pipeline, stage, and contact.
get_pipelines
Retrieve sales pipelines.
create_opportunity
Create a new sales opportunity.
update_opportunity
Update an existing opportunity.
delete_opportunity
Remove an opportunity.
update_opportunity_status
Quickly set opportunity status to won/lost/in-progress.
upsert_opportunity
Smartly create or update an opportunity.
add_opportunity_followers
Assign team members to an opportunity.
remove_opportunity_followers
Detach followers from an opportunity.
get_calendar_groups
List calendar groups.
get_calendars
List calendars.
create_calendar
Create a new calendar.
update_calendar
Update a calendar.
delete_calendar
Delete a calendar.
get_calendar_events
Fetch events for a calendar.
get_free_slots
Check available time slots for scheduling.
create_appointment
Book a new appointment.
get_appointment
Retrieve an appointment by ID.
update_appointment
Update appointment details.
delete_appointment
Cancel an appointment.
create_block_slot
Block a time slot for scheduling constraints.
update_block_slot
Modify a block slot.
get_email_campaigns
List email campaigns.
create_email_template
Create a new email template.
get_email_templates
List email templates.
update_email_template
Update an existing email template.
delete_email_template
Delete an email template.
get_location_tags
List tags for locations.
create_location_tag
Create a new location tag.
update_location_tag
Update a location tag.
delete_location_tag
Delete a location tag.
get_location_custom_fields
Fetch custom fields for locations.
create_location_custom_field
Create a location custom field.
update_location_custom_field
Update a location custom field.
get_location_custom_values
Get values for a location custom field.
create_location_custom_value
Create a value for a location custom field.
update_location_custom_value
Update a location custom value.
get_location_templates
List location templates.
delete_location_template
Delete a location template.
get_timezones
Retrieve available time zones.
verify_email
Verify an email address for deliverability and risk assessment.
search_social_posts
Search social posts across connected platforms.
create_social_post
Publish a new social post.
get_social_post
Retrieve a social post.
update_social_post
Update a social post.
delete_social_post
Delete a social post.
bulk_delete_social_posts
Delete multiple social posts in one operation.
get_social_accounts
List connected social accounts.
delete_social_account
Remove a connected social account.
start_social_oauth
Initiate OAuth flow for a social platform.
upload_social_csv
Upload a CSV to batch-create social accounts.
get_csv_upload_status
Check status of CSV upload.
set_csv_accounts
Assign accounts from a CSV to campaigns or platforms.
get_social_categories
List social post categories.
get_social_tags
List tags for social content.
get_social_tags_by_ids
Fetch social tags by IDs.
ghl_get_all_associations
Retrieve all object associations.
ghl_create_association
Create a new object association.
ghl_get_association_by_id
Fetch an association by ID.
ghl_update_association
Update an existing association.
ghl_delete_association
Delete an association.
ghl_create_relation
Create a relation between records.
ghl_get_relations_by_record
Fetch relations for a given record.
ghl_delete_relation
Delete a relation.
ghl_get_workflows
Discover automation workflows available.
ghl_get_custom_field_by_id
Fetch a custom field by ID.
ghl_create_custom_field
Create a new custom field.
ghl_update_custom_field
Update a custom field.
ghl_delete_custom_field
Delete a custom field.
ghl_get_custom_fields_by_object_key
List custom fields for an object.
ghl_create_custom_field_folder
Create a folder for custom fields.
ghl_update_custom_field_folder
Update a custom field folder.
ghl_delete_custom_field_folder
Delete a custom field folder.
ghl_list_product_collections
List product collections.
ghl_create_product_collection
Create a product collection.
ghl_get_product
Get a product by ID.
ghl_update_product
Update product details.
ghl_delete_product
Delete a product.
ghl_create_product
Create a new product entry.
ghl_list_products
List all products.
ghl_create_price
Create a price for a product.
ghl_list_prices
List product prices.
ghl_list_inventory
Check product inventory.
ghl_create_shipping_zone
Create a shipping zone.
ghl_list_shipping_zones
List shipping zones.
ghl_get_shipping_zone
Get a shipping zone by ID.
ghl_update_shipping_zone
Update a shipping zone.
ghl_delete_shipping_zone
Delete a shipping zone.
ghl_get_available_shipping_rates
Get available shipping rates.
ghl_create_shipping_rate
Create a shipping rate.
ghl_list_shipping_rates
List shipping rates.
ghl_get_shipping_rate
Get a shipping rate by ID.
ghl_update_shipping_rate
Update a shipping rate.
ghl_delete_shipping_rate
Delete a shipping rate.
ghl_create_store_setting
Create store setting.
ghl_get_store_setting
Get a store setting.
ghl_verify_email
Verify email deliverability.
ghl_get_all_objects
List all custom object schemas.
ghl_create_object_schema
Create a new custom object schema.
ghl_get_object_schema
Get a custom object schema by key.
ghl_update_object_schema
Update a custom object schema.
ghl_get_object_record
Retrieve a record from a custom object.
ghl_create_object_record
Create a new record in a custom object.
ghl_update_object_record
Update a custom object record.
ghl_delete_object_record
Delete a custom object record.
ghl_search_object_records
Search custom object records with filters.
ghl_create_association
Create an association between two objects.
ghl_get_all_associations
Retrieve all object associations.