The right MCP when the team is already on HubSpot. For greenfield Yalc setups, Notion is cheaper and more flexible. For HubSpot-native teams, this is essential.
claude mcp add hubspot --env HUBSPOT_PRIVATE_APP_TOKEN=pat-xxx -- npx -y @hubspot/mcp-server
Create a Private App in your HubSpot account (Settings → Integrations → Private Apps) with the scopes you need (crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.deals.read, etc.). Copy the access token (starts with `pat-`), replace the placeholder, run the command. HubSpot also documents an official MCP integration on their developer docs.
The HubSpot MCP exposes the HubSpot CRM API (contacts, companies, deals, engagements, tickets, lists, properties) as native Claude tool calls. Auth is a Private App token, which is simpler than OAuth for single-account use. HubSpot also documents an official MCP integration with broader endpoint coverage.
For Yalc operators on HubSpot, this MCP is the CRM layer. Where Notion's MCP works for teams that don't want HubSpot, this one is the right call when the team is already on HubSpot Sales Hub or Marketing Hub. Pipeline stages, deal probability, and engagement timeline are all queryable from natural language.
The HubSpot MCP sits at the **route** node when the team's CRM is HubSpot. Most Yalc workflows that touch the CRM (lead writeback, deal updates, engagement logging) flow through this MCP.
The MCP pairs with Notion (when used as content workspace) and Crustdata (lead source) to complete the GTM data flow: Crustdata sources, Yalc enriches, HubSpot stores, Notion documents.
The CRM and pipeline layer when HubSpot is the system of record. Yalc reads pipeline state, writes new contacts and deals, logs engagements, and triggers HubSpot workflows.
Copy paste prompts for Claude Code that invoke the HubSpot MCP.
Works in Claude Code (primary), Claude Desktop, and Cursor. HubSpot's API rate limits apply (per Private App: 100 req/10s typical, 250k req/day). For agency setups managing multiple HubSpot accounts, register the MCP server multiple times with different env tokens.
HubSpot's free CRM tier supports the API. Most reads and writes work on free. Some advanced operations (custom objects, advanced workflow triggers) require paid tiers.
HubSpot is generally easier to set up for small to mid teams. Salesforce has deeper customization and broader enterprise features. Pick based on which CRM you already use; don't switch CRMs to use a specific MCP.
It can update contacts and deals, which can trigger HubSpot workflows by enrollment. The MCP doesn't directly invoke workflow runs.
For typical Yalc workflows you need crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.companies.read, crm.objects.deals.read, crm.objects.deals.write, crm.lists.read, crm.lists.write. Add engagements.read and engagements.write for call/meeting logging.
HubSpot deduplicates by email automatically on create. For non-email primary keys, query first via the search API, then update or create accordingly. The MCP exposes both verbs.
Yes. Register the MCP server multiple times with different `--env HUBSPOT_PRIVATE_APP_TOKEN` values and different server names. Yalc workflows can route to the right portal by name.
Drop it into Claude Code and orchestrate from your next Yalc prompt.
claude mcp add hubspot --env HUBSPOT_PRIVATE_APP_TOKEN=pat-xxx -- npx -y @hubspot/mcp-server