Skip to main content
← All open source
MCP server

HubSpot over MCP: previews before writes, always.

hubspot-mcp exposes HubSpot CRM as a Model Context Protocol server, distributable as a Claude Code plugin. It covers contacts, companies, deals, tickets, tasks, owners, pipelines, properties, lists, engagements, and docs search. Every mutating call goes through a preview → approve gate; approved writes record an undo snapshot and an audit-log entry.

PythonMITClaude Codegithub.com/promptmetrics/hubspot-mcp
Ships as a Claude Code plugin; the standalone CLI runs the server in any MCP-capable host.
Install

Claude Code

First launch provisions a Python venv (~20-30s). Requires Python 3.12+ and a HubSpot private app (client ID + secret + redirect URI).

claude
> /plugin marketplace add promptmetrics/hubspot-mcp
> /plugin install hubspot-mcp@promptmetrics-hubspot-mcp
# sign in to your portal, opens a browser for OAuth
> /hubspot-mcp:auth
✓ OAuth login succeeded. 76 domain + 5 safety tools live (81 total).

Any MCP host (CLI)

The package also installs a hubspot-mcp console script for use outside Claude Code.

bash
$ hubspot-mcp auth login --portal <id>
$ hubspot-mcp run --transport stdio
What you get
  • 76 domain tools: CRUD + search across every core CRM object, plus docs search.
  • 5 safety tools: approve, reject, list pending writes, list recent audit, undo. No write touches HubSpot until approved.
  • Bring-your-own-app OAuth: you supply your own HubSpot private app credentials; tokens refresh automatically. PAT fallback via the CLI.
  • US or EU portals: set hubspot_region to eu for EU-hosted HubSpot accounts.
  • Standalone CLI: hubspot-mcp run --transport stdio works outside the plugin, in any MCP host.
  • Keychain-stored secrets: the client secret lives in your OS keychain; credentials file is chmod 600.
How it works

A preview → approve gate sits between the model and your portal.

  1. 01

    Call

    Claude calls a domain tool (create, update, delete, search) like any MCP tool.

  2. 02

    Preview

    Mutating calls return a preview of the affected records instead of executing.

  3. 03

    Approve or reject

    hubspot_approve_write executes; hubspot_reject_write discards. Pending writes are listable.

  4. 04

    Undo

    Approved writes record an undo snapshot and audit entry under ~/.claude/hubspot/.

Try it
hubspot_search_objectsSearch any CRM object with filters (dates as epoch-milliseconds).
hubspot_approve_writeExecute a previewed mutation.
hubspot_undo_writeRoll back an approved write from its snapshot.
hubspot_list_recent_auditReview what changed, when, and by whom.

Questions or issues? Open one on GitHub, or browse the rest of the catalog.

All open source