hubspot-multi-mcp
Provides read-only access to multiple HubSpot portals, allowing users to list portals, list and describe CRM objects (standard and custom), search contacts, companies, deals, tickets, and custom objects, fetch records by ID, list owners, and search across all connected portals at once.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hubspot-multi-mcp Search all my hubspot portals for acme.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
hubspot-multi-mcp
Talk to all your HubSpot portals from Claude — at once, by name.
A small, local, read-only MCP server that connects the Claude Desktop app to as many HubSpot portals as you want (Sales, Marketing, an acquired brand, an EU account, each of your clients…). You name each portal; then just say "in the sales hubspot, find…" and Claude uses the right one. It runs on your own computer with your own read-only keys — nothing is hosted and no credentials are shared.
Unofficial. Not affiliated with, or endorsed by, HubSpot, Inc. "HubSpot" is a trademark of its owner and is used here only to describe what this tool connects to.
Why this exists
HubSpot's own connector is one account per connection — there's no supported way to point a single Claude connection at two portals, and Claude won't let you add the same connector twice to get around it. If your company runs more than one HubSpot portal, you're stuck.
This is the practical way around it: a tiny server that runs on your machine, talks to all your portals with your own read-only keys, and shows up as a HubSpot tool inside Claude. It can even search every portal at once and tell you which one a record lives in — something a one-account connector simply can't do.
Related MCP server: BackCrew HubSpot MCP Server
What you get
Read-only tools, each targeting a portal by the name you gave it:
Tool | What it does |
| Show which portals are connected + their account ids |
| List object types in a portal — standard and custom objects |
| List the fields/properties of an object type |
| Search a CRM object (contacts / companies / deals / tickets / custom) |
| Fetch a single record by id |
| List CRM owners (users) |
| Search every connected portal at once and report which matched |
Read-only by design — the server only ever issues read calls, so it cannot create, edit, or delete anything, even if a key had write permission.
Quick start (about 5 minutes)
You need: a Mac or Windows PC, the Claude Desktop app, Node.js 18+
(check with node --version; if it's missing, install the LTS from https://nodejs.org), and a
read-only HubSpot token for each portal (how to get one is below).
Open a terminal (macOS: Terminal app; Windows: PowerShell).
Run setup — this one command does everything (no download, no
npm install):npx hubspot-multi-mcp setupFor a permanent install that always loads, run
npm install -g hubspot-multi-mcpfirst, thenhubspot-multi-mcp setup.Name each portal and paste its token when asked (the token is hidden as you paste — that's expected). Repeat for as many portals as you have; press Enter on the name to finish. Setup checks each token and saves them privately on your computer.
Fully quit Claude Desktop (macOS: Cmd+Q, not just the window; Windows: right-click the tray icon → Quit) and reopen it.
Try it — ask Claude:
"List my hubspot portals." then "In the sales hubspot, find the contact for jane@example.com." or, when you're not sure which portal has it: "Find acme.com across all my hubspots."
Check it's working any time: npx hubspot-multi-mcp verify (prints the portals it can reach; no
secrets shown).
Add or change a portal: run npx hubspot-multi-mcp setup again.
How to get a read-only HubSpot token (one per portal)
Do this in each HubSpot portal you want to connect. You need to be an admin of that portal (or ask one to do it for you).
In HubSpot, go to Settings → Integrations → Private Apps → Create a private app.
Name it something like
claude-readonly.On the Scopes tab, grant read-only scopes only (no
.write):crm.objects.contacts.read,crm.objects.companies.read,crm.objects.deals.readcrm.objects.owners.read(to see record owners), andticketsread if you use ticketscrm.schemas.contacts.read/.companies.read/.deals.read(so field discovery works)(optional) the account-info read scope — only needed to display the portal id
Create the app and copy its access token (starts with
pat-…). That's what you paste into setup. Keep it safe — treat it like a password.
Granting only read scopes means the token physically cannot change anything, which pairs with this server being read-only by design.
How your keys are handled (security)
Read-only by construction — there is no create/update/delete code path in this tool.
Your tokens are stored at
~/.config/hubspot-multi-mcp/portals.json(file mode600, readable only by you), outside the package — never committed, never uploaded, never printed back.Tokens are redacted from every error message, so a key can't leak into a Claude transcript.
Nothing is hosted. The only network calls are read requests from your machine to HubSpot.
Using more than one portal
Every request picks a portal by name. If you only set up one portal, you don't have to name it —
it's the default. With several, just say which one ("in the marketing hubspot…"), or let Claude
search them all with hubspot_find_across. Custom objects work too: ask Claude to
"list the objects in the sales hubspot" and it'll show your custom object types, which you can then
search like any other.
Troubleshooting
The tool doesn't appear in Claude → make sure you fully quit and reopened Claude Desktop (Cmd+Q on macOS). A running app only loads MCP servers at startup.
Server won't start / "spawn ENOENT" → the Node.js used at setup was moved or uninstalled (common if you later switch Node versions with nvm/volta/fnm). Re-run
npx hubspot-multi-mcp setupto re-pin it.A token "did not work" → wrong portal, or missing read scopes. Re-issue the private-app token with the read scopes above and run setup again.
For teams (operator guide)
This uses per-user read-only tokens: an admin mints them, each person runs setup themselves. No keys are ever shared in chat.
In each portal, create a read-only private app per person (scopes above); copy the
pat-…token.Send each person their tokens securely — e.g. a 1Password share restricted to their email, with an expiration. Never paste a token into Slack or email.
Have them follow Quick start above.
To off-board someone: delete their private app in HubSpot. Tokens are independent, so revoking one person affects no one else.
Run from source (optional, for developers)
git clone https://github.com/devender/hubspot-multi-mcp
cd hubspot-multi-mcp
npm install
npm run setup # same interactive setup; registers a local-path launcherLicense
MIT — see LICENSE.
Available Tools
7 toolshubspot_describe_objectA
List the properties (fields) of a CRM object type in a portal, so you know what to search on and what to request. READ-ONLY.
Inputs: instance (required), object.
hubspot_find_acrossA
Search a free-text query across ALL connected HubSpot portals at once, and report which portal(s) matched. READ-ONLY. Use this when the user does not know which portal a record lives in (e.g. "find jane@example.com in any of my hubspots").
Inputs: query (required), limit, object.
hubspot_getA
Fetch a single HubSpot record by id from a chosen portal. READ-ONLY.
Inputs: id (required), instance (required), object, properties.
hubspot_list_instancesA
List which HubSpot portals are connected (by the names you gave them) and their account ids. READ-ONLY. Call this first to see what portals are available.
Inputs: no named parameters.
hubspot_list_objectsA
List the CRM object types available in a portal — the four standard ones plus any CUSTOM objects defined in that portal. READ-ONLY. Use this before searching a non-standard object.
Inputs: instance (required).
hubspot_list_ownersA
List CRM owners (users) in a chosen portal, to resolve owner ids to people. READ-ONLY.
Inputs: instance (required).
hubspot_searchA
Search a HubSpot CRM object in a chosen portal. READ-ONLY. Use query for a free-text search (name, email, company/domain); omit it to list recent records.
Inputs: instance (required), limit, query, object, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool has a clear and distinct role: listing portals, listing object types, describing properties, searching, fetching by ID, listing owners, and cross-portal search. Even the similar-looking search and get tools are cleanly separated by query-based lookup vs. ID-based retrieval.
All tools share the hubspot_ prefix and use lowercase underscore-separated names, which is consistent. There is minor inconsistency because some names include an object (list_instances, describe_object) while others are generic verbs (search, get), and find_across doesn't follow the same verb_noun shape as the rest.
Seven tools is an appropriate size for a HubSpot multi-portal exploration server. Each tool covers a necessary part of the discovery and retrieval workflow without redundancy or bloat.
The tool set is well-rounded for read-only HubSpot CRM exploration: it covers discovery, schema inspection, searching, fetching, owner resolution, and cross-portal lookup. The only notable gap is that there is no direct way to search all object types within a single portal at once, though list_objects plus search covers that workflow.
Maintenance
Related MCP Connectors
The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.
Multiple Google accounts (Gmail, Calendar, Drive, Contacts, Tasks) in one Claude connector.
Multiple Google accounts (Gmail, Calendar, Drive, Contacts, Tasks) in one Claude connector.
Create contacts, move deals, send proposals and invoices, read your inbox, from Claude or ChatGPT.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables Claude to interact with HubSpot CRM for sales analysis and insights, providing tools for managing contacts, deals, companies, and retrieving sales analytics data.179 npm11MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with a HubSpot CRM account via natural language, starting with read-only lookups and optionally enabling write operations like creating contacts, deals, and notes.11MIT
- AlicenseAqualityCmaintenanceEnables Claude to search, create, and update contacts, deals, and support tickets in HubSpot, and to generate cross-object account summaries.10MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with HubSpot CRM data, including creating and searching contacts and companies, retrieving activity and conversations, and using vector storage for semantic search across prior interactions.-