# HubSpot MCP

> Official HubSpot MCP server — CRM contacts, deals, and meeting scheduling from Claude or Cursor.

[Canonical HTML page](https://top-mcps.com/mcp/hubspot-mcp) · [server.json](https://top-mcps.com/mcp/hubspot-mcp.json) · [methodology](https://top-mcps.com/about/methodology)

## Install

### Claude Desktop — `claude_desktop_config.json`

Paste under mcpServers. Fully quit and reopen Claude after editing.

```json
{
  "mcpServers": {
    "hubspot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@hubspot/mcp-server"
      ],
      "env": {
        "HUBSPOT_PRIVATE_APP_TOKEN": "${HUBSPOT_PRIVATE_APP_TOKEN}"
      }
    }
  }
}
```

### Claude Code — `CLI or .mcp.json`

Run from your repo. Commit .mcp.json to share with your team.

```shell
# export HUBSPOT_PRIVATE_APP_TOKEN=pat-na1-xxxx
claude mcp add hubspot-mcp -- npx -y @hubspot/mcp-server
```

### Cursor — `.cursor/mcp.json`

Global path: ~/.cursor/mcp.json. Reload window after editing.

```json
{
  "mcpServers": {
    "hubspot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@hubspot/mcp-server"
      ],
      "env": {
        "HUBSPOT_PRIVATE_APP_TOKEN": "${HUBSPOT_PRIVATE_APP_TOKEN}"
      }
    }
  }
}
```

### VS Code — `.vscode/mcp.json`

VS Code uses the "servers" key (not "mcpServers").

```jsonc
{
  "servers": {
    "hubspot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@hubspot/mcp-server"
      ],
      "env": {
        "HUBSPOT_PRIVATE_APP_TOKEN": "${HUBSPOT_PRIVATE_APP_TOKEN}"
      }
    }
  }
}
```

### Windsurf — `~/.codeium/windsurf/mcp_config.json`

Open via Cascade → hammer icon → Configure.

```json
{
  "mcpServers": {
    "hubspot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@hubspot/mcp-server"
      ],
      "env": {
        "HUBSPOT_PRIVATE_APP_TOKEN": "${HUBSPOT_PRIVATE_APP_TOKEN}"
      }
    }
  }
}
```

### Cline — `cline_mcp_settings.json`

Open via the Cline sidebar → MCP Servers → Edit.

```json
{
  "mcpServers": {
    "hubspot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@hubspot/mcp-server"
      ],
      "env": {
        "HUBSPOT_PRIVATE_APP_TOKEN": "${HUBSPOT_PRIVATE_APP_TOKEN}"
      }
    }
  }
}
```

### Continue — `~/.continue/config.json`

Continue uses modelContextProtocolServers with a transport block.

```json
{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "npx",
          "args": [
            "-y",
            "@hubspot/mcp-server"
          ],
          "env": {
            "HUBSPOT_PRIVATE_APP_TOKEN": "${HUBSPOT_PRIVATE_APP_TOKEN}"
          }
        }
      }
    ]
  }
}
```

### Codex CLI — `~/.codex/config.toml`

Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.

```shell
# ~/.codex/config.toml
[mcp_servers.hubspot-mcp]
command = "npx"
args = [
  "-y",
  "@hubspot/mcp-server",
]
env = { HUBSPOT_PRIVATE_APP_TOKEN = "${HUBSPOT_PRIVATE_APP_TOKEN}" }
```

### Zed — `~/.config/zed/settings.json`

Zed calls them "context_servers". Settings live-reload on save.

```jsonc
{
  "context_servers": {
    "hubspot-mcp": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@hubspot/mcp-server"
        ]
      },
      "env": {
        "HUBSPOT_PRIVATE_APP_TOKEN": "${HUBSPOT_PRIVATE_APP_TOKEN}"
      }
    }
  }
}
```

### ChatGPT — `ChatGPT → Apps directory`

HubSpot MCP doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.

```none

```

## At a glance

- **Maintainer:** HubSpot
- **Transport:** stdio
- **Auth model:** API key
- **Required secrets:** HUBSPOT_PRIVATE_APP_TOKEN
- **Supported clients:** Claude, Cursor, Claude Code, Any MCP-compatible client
- **License:** Proprietary
- **Language:** TypeScript
- **Latest version:** 0.4.0
- **Last verified:** 2026-06-28
- **Score:** 54/100 (rubric 2026-04 — see https://top-mcps.com/about/methodology)
- **Homepage:** https://developers.hubspot.com/mcp

## Security & scope

- **Access scope:** read-write
- **Sandbox:** Private App token grants exactly the scopes selected at creation. Use the minimal set — read-only CRM scopes if you only need lookups. Do not add the admin or settings scopes unless required.
- **Gotchas:**
  - The Private App token is a long-lived credential — treat it like a password. Rotate it from the HubSpot settings page if leaked.
  - Write operations (create contact, update deal) are available on matching scopes; confirm before granting them if the agent should only read.
  - The MCP server is in public beta — tool surface and behavior may change before GA.

## Quick answer

**What it does.** Exposes HubSpot CRM tools: create and read contacts and companies, manage deals and tickets, search the CRM, and for the scheduling surface — retrieve meeting scheduling links, list booked meetings, and look up meetings associated with a contact or deal record.

**Best for:**
- B2B sales meeting scheduling tied to CRM context
- RevOps workflows that need CRM + meetings in one agent
- Looking up booked meetings on a contact or deal
- Generating HubSpot meeting scheduling links

**Not for:**
- Teams without a HubSpot account
- Pure calendar access (no CRM) — use Google Calendar or Outlook instead
- Salesforce-primary organizations

## Description

HubSpot's official MCP server (`@hubspot/mcp-server`) gives agents direct access to contacts, companies, deals, tickets, and the HubSpot Meetings product — booking links, meeting types, and booked-meeting records. For scheduling specifically: agents can retrieve a contact's booked meetings, generate a meeting scheduling link, list available meeting types, and look up past meetings tied to a CRM record. The server uses a Private App token (HubSpot's scoped API credential) so access is limited to exactly the CRM objects and features you grant. The package is in public beta.

## Why it matters

HubSpot Meetings is the most common scheduling tool inside B2B sales and RevOps workflows. Revenue teams use it daily for inbound booking. An MCP that bridges HubSpot CRM with an agent means an agent can pull up a contact, see their open deal stage, and surface the right meeting link for the next step — without a browser context switch.

## Key features

- Official HubSpot-authored MCP server
- Contact and company search
- Deal and ticket management
- Meeting scheduling link retrieval
- Booked-meeting lookup by CRM record
- Private App token scoping

## FAQ

### What is a HubSpot Private App token?

A Private App is HubSpot's recommended API credential. You create one in Settings → Integrations → Private Apps, select the CRM and Meetings scopes you need, and copy the token. It is not a public OAuth flow — the token belongs to your HubSpot account and grants access to your portal.

### Does this require a paid HubSpot plan?

Contact and company read access is available on the Free plan. Meeting scheduling links require Sales Hub Starter or above. Deal and ticket access requires a CRM Pro or above plan depending on the operation.

### How does this differ from the ChatGPT HubSpot App?

The ChatGPT HubSpot App is a one-click OAuth app for chatgpt.com only. The HubSpot MCP server is a proper MCP that works with Claude, Cursor, and any MCP-compatible client — and requires a Private App token rather than OAuth.

## Changelog

- **2026-06-28** — Refreshed install snippets and fact sheet; verified for 2026.
- **2025-05-01** — Initial directory listing.
