Connect Claude Code to HubSpot via MCP
Connect Claude Code to HubSpot's official remote MCP server for natural-language CRM reads and writes. Covers OAuth setup, scope selection, verification, and when to use MCP versus this repo's API scripts.
Run this skill in Claude Code:
/plugin marketplace add tomgranot/hubspot-admin-skills
/plugin install hubspot-admin@hubspot-admin-skills
/connect-hubspot-mcpConnect Claude Code to HubSpot via MCP
Set up HubSpot’s official remote MCP server so Claude can read and write CRM records conversationally — look up a contact, inspect a company’s deals, spot-check the results of a cleanup — without writing a script for every question.
What the MCP Server Is (and Isn’t)
HubSpot’s remote MCP server (generally available since April 2026) is an OAuth-secured gateway at mcp.hubspot.com that exposes CRM operations as tools to MCP clients like Claude Code:
- Read/write CRM objects: contacts, companies, deals, tickets, line items, products, engagements
- Read content: campaigns, landing pages, website pages, blog posts, and content analytics
- Create content: landing pages (added June 2026)
It is the right tool for interactive, judgment-heavy work: spot-checks, triage, one-off lookups, small targeted edits. It is the wrong tool for bulk operations: batch-archiving thousands of contacts, paginated sweeps, or anything that needs a CSV audit trail and an abort threshold. That is what this repo’s scripts are for. The two share the same portal — use both.
| Task shape | Use |
|---|---|
| ”Show me 5 contacts the cleanup touched” | MCP |
| ”Why is this company in Tier 2?” | MCP |
| ”Review this week’s bounce-flagged contacts” | MCP |
| ”Delete 4,000 no-email contacts with an audit trail” | Scripts (/delete-no-email-contacts) |
| “Create 10 segmentation lists” | Scripts (/build-smart-lists) |
| “Export every workflow to JSON” | Scripts (/workflows-as-code) |
Prerequisites
- A HubSpot account and a user with permission to create user-level apps (or approval via your portal’s MCP Auth Apps governance, if enabled)
- Claude Code (or another MCP client)
- This is separate from the private app token the scripts use — MCP connects via OAuth as you, with your HubSpot permissions
Execution Pattern
Stage 1: Plan
- Decide the scopes to grant. Start read-only (CRM object read scopes); add write scopes only if you want Claude making edits through MCP.
- Check with your admin whether the portal restricts app installs (App Install Governance) — MCP connections may need approval.
Stage 2: Execute — Connect
Option A: HubSpot Connector for Claude (no terminal). In Claude’s connector settings, add the HubSpot connector and complete the OAuth flow in the browser. HubSpot’s guide: knowledge.hubspot.com > “Set up and use the HubSpot connector for Claude”.
Option B: MCP client configuration. Add the remote server to Claude Code:
claude mcp add --transport http hubspot https://mcp.hubspot.comThen authenticate when prompted — the OAuth flow creates a user-level app with the scopes you approve.
Option C: HubSpot CLI. With HubSpot CLI v8.2.0+, hs mcp setup walks through connecting an MCP client, and also offers HubSpot’s local developer MCP server (aimed at app development rather than CRM administration).
Stage 3: After — Verify
Ask Claude to perform a harmless read and confirm it round-trips:
“Using the HubSpot MCP tools, fetch one contact and tell me its email and lifecycle stage.”
If the call fails: check that the OAuth flow completed, the scopes include contact read, and your portal hasn’t blocked the connection via app governance.
Rollback
- Disconnect the MCP server from your client settings (
claude mcp remove hubspotin Claude Code). - Revoke the connection in HubSpot: Settings > Integrations > Connected Apps — removing the user-level app invalidates its tokens.
Technical Gotchas
- MCP access is user-scoped. Claude can do exactly what your HubSpot user can do — no more, no less. Bulk-risky operations are naturally bounded by the scopes you grant; grant write scopes deliberately.
- Two credentials, two purposes.
HUBSPOT_ACCESS_TOKEN(private app) powers the scripts; the MCP OAuth connection powers conversational access. Rotating one does not affect the other. - Rate limits still apply. MCP calls consume the same API capacity as any integration. Don’t use MCP for high-volume sweeps — that’s script territory.
- Headless environments. MCP servers that require interactive OAuth may be unavailable in scheduled/CI runs. Scripts with a private app token work everywhere; treat MCP as the interactive layer.
Related skills in Audit & Planning
/audit-api-usageInventory the integrations, private apps, and internal tooling that call HubSpot APIs, and flag anything on legacy v1-v4 endpoints ahead of HubSpot's March 30, 2027 end of support. Produces a migration checklist to date-based API versions.
/hubspot-auditRun a comprehensive HubSpot CRM database audit. Analyzes contacts, companies, deals, engagement, data quality, and deliverability. Use when starting a CRM cleanup, onboarding a new client, or performing quarterly health checks.
/hubspot-implementation-planGenerate a phased implementation plan from a HubSpot audit report. Creates prioritized, sequenced cleanup processes with effort estimates, dependencies, and automation feasibility. Use after running /hubspot-audit.
/sandbox-self-testVerify the entire toolkit against a disposable HubSpot developer test account or sandbox that you bring: seed synthetic fixtures, run every scripted skill's read path, exercise end-to-end and API round-trip cases, produce a graded report, and tear everything down. Hard-refuses to run against production.