Ghl MCP Server vs Salesforce Metadata MCP
A side-by-side look at the Ghl MCP Server and Salesforce Metadata MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Ghl MCP Server for customer data platforms work as a local process; choose Salesforce Metadata MCP for customer data platforms as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Ghl MCP Server when
- You need dedicated capabilities in the Customer Data Platforms domain.
- You prefer a local stdio subprocess transport.
- You want tools like
ghl_search_contacts, ghl_get_contact, ghl_create_contact.
Choose Salesforce Metadata MCP when
- You need dedicated capabilities in the Customer Data Platforms domain.
- You prefer a local stdio subprocess transport.
- You have the keys it needs:
SF_INSTANCE_URL, SF_ACCESS_TOKEN. - You want tools like
sf_create_custom_object, sf_create_custom_field, sf_add_picklist_values.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Customer Data Platforms | Customer Data Platforms |
| Quality signal | 56/100 · Good | 63/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | SF_INSTANCE_URLSF_ACCESS_TOKEN |
| Verified owner | Community listing | Community listing |
| GitHub stars | 1 | 2 |
| Directory activity | 2 views 0 installs 0 upvotes | 3 views 0 installs 0 upvotes |
| Tools | 64 | 20 |
| Full listing | View Ghl MCP Server | View Salesforce Metadata MCP |
Tools & capabilities
Ghl MCP Server tools 64
ghl_search_contactsSearch contacts in GoHighLevel by query, tags, filters, or custom fields. Returns paginated results. Args: - query (string): Search term (name, email, phone) - locationId (string): Location ID (uses default if omitted) - limit (number): Results per page (1-100, default 20) - filters (object): Advanced filters like tags, date ranges, custom fields Returns: List of contacts with pagination metadata.ghl_get_contactGet a single contact by ID with all details including custom fields, tags, and activity.ghl_create_contactCreate a new contact in GoHighLevel. Args: - firstName, lastName, email, phone (strings): Basic contact info - tags (string[]): Tags to apply - source (string): Lead source - customFields (array): Custom field values as [{id, field_value}] - locationId (string): Location ID (uses default if omitted) Returns: Created contact object with ID.ghl_update_contactUpdate an existing contact. Only pass fields you want to change.ghl_delete_contactPermanently delete a contact. This cannot be undone.ghl_upsert_contactCreate or update a contact by email/phone. If a match is found, updates; otherwise creates new.ghl_add_contact_tagsAdd one or more tags to a contact.ghl_remove_contact_tagsRemove one or more tags from a contact.ghl_get_contact_notesGet all notes for a contact.ghl_create_contact_noteAdd a note to a contact.ghl_delete_contact_noteDelete a specific note from a contact.ghl_get_contact_tasksGet all tasks for a contact.- +52 more on the listing page
Salesforce Metadata MCP tools 20
sf_create_custom_objectCreates a new Salesforce Custom Object using the Metadata API. The object name must end with '__c'. Use this when a user asks to create a new object, entity, or table in Salesforce.sf_create_custom_fieldCreates a new custom field on an existing Salesforce object. The field API name must end with '__c'. Supports all field types: Text, Number, Picklist, Lookup, etc.sf_add_picklist_valuesAdds new picklist values to an existing Picklist or MultiselectPicklist field without removing existing values. Use when a user wants to add new options to a dropdown.sf_create_approval_processCreates or updates a Salesforce Approval Process via the Metadata API. Define who can submit, approval steps with approvers, entry criteria, and what happens on approval or rejection.sf_create_validation_ruleCreates or updates a Salesforce Validation Rule on any object via the Metadata API. The errorConditionFormula returns TRUE when data is INVALID. Use for data quality enforcement.sf_create_workflow_field_updateCreates a Workflow Field Update action that can be referenced by Approval Processes, Workflow Rules, or Flows. Sets a field to a literal value, formula result, or null.sf_create_formula_fieldCreates a formula field on any Salesforce object. Supports all return types (Text, Number, Currency, Date, DateTime, Checkbox, Percent) and the full Salesforce formula language: IF/AND/OR/NOT, BLANKVALUE, TEXT, VALUE, DATE, DATEVALUE, TODAY, NOW, date functions (MONTH/YEAR/DAY), math (FLOOR/CEILING/MOD), string functions (LEN/LEFT/RIGHT/MID/TRIM/UPPER/LOWER/CONTAINS/BEGINS), record type and picklist functions (ISPICKVAL, ISNULL, ISBLANK), cross-object field references (e.g. Account.Owner.Name), and VLOOKUP. Complex multi-line formulas are fully supported.sf_deploy_metadataDeploys a set of metadata components directly to the org using the Metadata API SOAP deploy operation. Builds a package.xml and deployment zip in memory. Supports validate-only (checkOnly:true) for pre-deployment validation without making changes. Specify runTests to execute test classes during deployment (required for production). Polls until complete or timeout.sf_check_deploy_statusChecks the status of an in-progress or recently completed metadata deployment by async job ID. Returns the status (Pending, InProgress, Succeeded, Failed, Canceled), component successes, failures, and test results. Use with the deploy ID returned from sf_deploy_metadata.sf_retrieve_metadataRetrieves metadata components from the org and returns their actual file contents. Use this to read existing configuration before making changes, to back up metadata, or to check what is really deployed rather than what you think is deployed. Waits for the async retrieve to finish and unpacks the resulting zip, returning each file's path and source. Large files are truncated. Accepts 'components' (array), or 'metadataType'+'componentName' as a single-item shortcut, or a raw 'packageXml' document — provide exactly one form.sf_delete_metadataPermanently deletes one or more metadata components of a given type via the Metadata API's deleteMetadata call — works for CustomObject, CustomField, Flow, GenAiFunction, GenAiPlugin, GenAiPlannerBundle, Bot, ApexClass, and most other metadata types. There was previously no way to remove anything created by this MCP server (sf_deploy_metadata only supports adding/updating components, not destructiveChanges) — diagnostic or abandoned metadata had nowhere to go. Deletes each fullName independently: check the response's deleted/errors lists rather than assuming all all-or-nothing. Some types have dependency order requirements (e.g. delete a Bot's GenAiFunction/GenAiPlugin/GenAiPlannerBundle before the Bot itself, delete CustomField before its parent CustomObject) — Salesforce will reject a delete that still has dependents, naming them in the error.sf_query_recordsExecutes a SOQL query against the org and returns matching records. Provide the full SOQL string in the query param. Use for reading data, checking existing records before creating, or verifying changes. Supports aggregate queries — GROUP BY with COUNT(), SUM(), AVG(), MAX(), MIN(), e.g.: 'SELECT StageName, COUNT(Id), SUM(Amount) FROM Opportunity GROUP BY StageName' Aggregate results come back as regular records with the aggregate expressions as field keys (e.g. "expr0"). Row cap: 'limit' defaults to 200 and is a ceiling, not a hint. If the SOQL carries its own LIMIT the smaller of the two applies, so a LIMIT in the query can tighten the cap but never raise it. When rows are cut off the response sets truncated: true and reports appliedLimit and limitSource, so a capped result is never mistaken for a complete one.- +8 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Ghl MCP Server
{
"mcpServers": {
"ghl-mcp-server": {
"command": "npx",
"args": [
"-y",
"@northrosetech/ghl-mcp-server"
]
}
}
}
Salesforce Metadata MCP
{
"mcpServers": {
"salesforce-metadata-mcp": {
"command": "npx",
"args": [
"-y",
"salesforce-metadata-mcp"
],
"env": {
"SF_INSTANCE_URL": "YOUR_SF_INSTANCE_URL_HERE",
"SF_ACCESS_TOKEN": "YOUR_SF_ACCESS_TOKEN_HERE"
}
}
}
}
Frequently asked questions
Ghl MCP Server is categorized under Customer Data Platforms and uses a local stdio subprocess. Salesforce Metadata MCP belongs to Customer Data Platforms and uses a local stdio subprocess. Pick Ghl MCP Server for customer data platforms work and Salesforce Metadata MCP for customer data platforms.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
Ghl MCP Server has no declared pricing — check the project's own site. Salesforce Metadata MCP has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add ghl-mcp-server and salesforce-metadata-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Ghl MCP Server has a quality signal of 56/100 (Good) with 2 views, 0 installs and 1 GitHub stars. Salesforce Metadata MCP has 63/100 (Good) with 3 views, 0 installs and 2 GitHub stars.