Skip to Content

Connect a HubSpot Remote MCP Server

HubSpot hosts a remote server at mcp.hubspot.com, exposing CRM records, activities, conversations, campaigns, and marketing email directly from a HubSpot portal. This guide covers the Arcade-side setup for connecting it as a remote MCP server, plus the HubSpot settings that most commonly trip people up.

This guide is about connecting to HubSpot’s own remote server, not the Arcade HubSpot toolkits. Arcade already covers most of this surface across two toolkit tiers: the HubSpot toolkit for core CRM objects, and starter toolkits like hubspotconversationsapi and hubspotmarketingapi for conversations, campaigns, and marketing email.

Reach for this remote server instead when you want:

  • One connection instead of wiring up the toolkit plus as many as eight starter toolkits
  • Access scoped to whatever the authorizing HubSpot can already do in the portal, not fixed toolkit scopes

The HubSpot-side steps below are sourced directly from HubSpot’s own documentation  for this server, which is unusually thorough. The Arcade-side field mapping has not yet been walked through end-to-end against a live HubSpot portal. Confirm before treating this as authoritative.

Outcomes

Connect a HubSpot Remote server to Arcade and use its in gateways and SDKs.

You will Learn

  • Which HubSpot Auth App settings matter for Arcade specifically, and why
  • Configure the remote server’s OAuth 2.0 settings in Arcade
  • Diagnose the most common setup mistakes from their error messages

Prerequisites

  • An Arcade
  • A HubSpot with access to the Developer Platform (available on every hub and tier, no separate license required)

Set up HubSpot

Follow HubSpot’s guide to create an MCP auth app : in your HubSpot , go to Development → Auth Apps → Create MCP auth app, and enter an app name, optional description, and a placeholder Redirect URL (you’ll update this once Arcade generates its own; see Add the redirect URI to your MCP auth app below). HubSpot supports multiple redirect URLs on one app, and the first one listed becomes the default, so adding Arcade’s later won’t disturb any existing entry.

A few things about this integration are structurally different from Salesforce, ServiceNow, or Dynamics 365, and worth knowing before you configure Arcade:

  • There’s no scope picker. Unlike the other providers in this section, you don’t explicitly select OAuth scopes when creating the auth app. Available scopes are determined automatically by whatever tools the currently exposes, and whatever the authorizing user grants during installation. If HubSpot adds to the MCP server later, previously authorized need to reinstall the app to pick up the new scopes. If a capability that should exist suddenly seems missing, a stale authorization is worth checking before assuming a bug.

  • Sensitive Data accounts lose activity and conversation access through specifically. If the HubSpot portal has Sensitive Data  protection turned on, calls, emails, meetings, notes, tasks, and conversation data are blocked from the , even though the same data remains available through HubSpot’s standard CRM API. This is MCP-specific behavior, not a permissions bug, and it can be mistaken for one if you’re used to those objects being reachable via the API.

  • PKCE is mandatory with no fallback. HubSpot’s server requires OAuth 2.1 with PKCE (RFC 7636, S256) for every connection. There’s no plain OAuth 2.0 or static-token path for production use.

Configure the remote server in Arcade

Register the server

Go to the MCP servers dashboard , click Add Server, choose Remote , and enter a server ID and the server URL:

PLAINTEXT
https://mcp.hubspot.com

Configure OAuth2 authorization

Open Advanced settings → OAuth2 authorization and enter:

  • Client ID / Client Secret: from your auth app’s details page in HubSpot.
  • Authorization URL / Token URL: leave these empty. Arcade discovers HubSpot’s OAuth endpoints automatically from the server’s own metadata, per the MCP authorization specification. Only set these manually if authorization still fails after confirming the redirect URI and PKCE configuration below.

HubSpot’s documented integration path is a manually created auth app. There’s no Dynamic Client Registration flow described for this server, so leaving Client ID and Secret blank isn’t expected to work here the way it does for some other .

Add the redirect URI to your MCP auth app

Copy the redirect URI Arcade generates and add it to your auth app’s Redirect URL field in HubSpot (you can have more than one; only the first is used as the default elsewhere, so appending Arcade’s is safe). The redirect URL your MCP client presents during the OAuth flow must match one of the values configured here exactly.

Authorize and confirm

Save the server to open the authorization prompt. During authorization you’ll select which HubSpot account to connect, then grant permissions. These are scoped to whatever the signing-in user is themselves permitted to see and do in HubSpot, since all server actions respect the authorizing ’s existing HubSpot permissions.

Troubleshooting

  • Authentication fails during the OAuth handshake, with no clear HubSpot-side error: confirm PKCE parameters are being sent correctly: code_challenge and code_challenge_method=S256 on the authorization request, and the matching code_verifier on the token exchange. HubSpot enforces PKCE with no fallback, so a client that skips it fails silently rather than falling back to a simpler flow.
  • redirect_uri mismatch, or authorization fails immediately after opening the consent screen: the redirect URI Arcade is presenting doesn’t exactly match one of the Redirect URLs configured on the auth app (trailing slashes and protocol mismatches count).
  • Connection stops working after a period of inactivity: the access token expired and the refresh token either wasn’t used or has itself expired or been invalidated. If refreshing doesn’t recover it, re-run the full authorization flow from scratch.
  • Activities (calls, emails, meetings, notes, tasks) or conversation data are missing from results, but the connection otherwise works: the HubSpot portal has Sensitive Data protection enabled. This is expected -specific behavior (see Set up HubSpot), not an authorization or scope problem.
  • A capability that used to work stops returning results after a HubSpot server update: the app’s granted scopes are tied to the set at the time of installation. Reinstall or reauthorize the app to pick up newly available scopes.
  • Custom objects don’t appear in search or record results: the remote server currently covers standard CRM objects and engagement history only. Custom objects aren’t supported through MCP yet; use HubSpot’s direct API for those.

Next steps

Last updated on