mcpship-hubspot
Provides tools for interacting with HubSpot CRM data: searching contacts and deals, reading recent notes associated with contacts and deals, and optionally creating notes attached to deals. The write capability is disabled by default and gated behind an environment flag, with every call audit-logged.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
mcpship-hubspot
A production-shaped HubSpot MCP connector: three read actions plus one guarded write, with an audit log on every call.
This is the same skeleton you hand to a client. Swap the object types in src/hubspot.ts and it becomes the Zendesk or Intercom build.
What's inside
Tool | Type | What it does |
| read | Search contacts by name, email, company; falls back to most-recently-modified |
| read | Search deals by name; no query returns recent deals |
| read | Read notes logged against contacts and deals |
| write, gated | Writes a note, optionally attached to a deal. Off unless |
The write tool is off by default. That is deliberate: it is the first thing a security reviewer will ask about, and "it ships disabled, you enable it explicitly" is a much better answer than "it's on".
Related MCP server: HubSpot MCP Server
1. Get a token
Do not test this against a real portal. Create a developer test account first — it is free, blank, and disposable:
Sign in at developers.hubspot.com and create a developer account (free).
In that account: Development → Testing → Test Accounts → Create developer test account.
Then get a token. Which screen you land on depends on the account's age and tier:
Service keys — newer and free-tier accounts. HubSpot retired legacy private apps for these. Go to Development → Keys → Service Keys → Create service key, name it, and select these scopes:
Private apps — older accounts only. Settings → Integrations → Private Apps → Create private app, same four scopes:
crm.objects.contacts.read
crm.objects.deals.read
crm.objects.notes.read
crm.objects.notes.writeCopy the token (pat-...). It is shown once and cannot be recovered.
If the notes scopes are not in your account's scope catalogue,
recent_notesandcreate_notewill return 403.npm run smoketells you in ten seconds, which is ten seconds better than finding out mid-demo.
2. Build
cd mcp-hubspot
npm install
npm run buildYou should end up with dist/index.js.
Fill the test account with something to read
An empty portal makes the tool look broken. This seeds seven companies, nine contacts, seven deals and twelve notes — a plausible B2B SaaS pipeline with one deal blocked on a compliance letter, one won, one lost:
export HUBSPOT_ACCESS_TOKEN=pat-na1-...
npm run seedFictional data, but internally consistent. Only run it against a test account; there is no wipe flag on purpose.
Verify against the real API
initialize succeeding proves the server started, not that the calls work. This exercises every tool and prints what came back:
export HUBSPOT_ACCESS_TOKEN=pat-na1-...
npm run smoke
# include the write tool
HUBSPOT_ALLOW_WRITE=true npm run smokeRun it before you demo, not after.
3. Wire it into Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"hubspot": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/mcp-hubspot/dist/index.js"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "pat-na1-your-token-here",
"HUBSPOT_ALLOW_WRITE": "true"
}
}
}
}args must be an absolute path. Then fully quit and reopen Claude Desktop — reloading the window is not enough.
4. Verify it actually works
Ask Claude:
What deals did we touch this week?
It should call search_deals and return real records. If you get "I don't have access to your data", the server did not load — go to the troubleshooting below.
Check the audit trail:
tail -f ~/.mcpship/logs/audit.logEvery call appends one JSON line: tool, args, ok, duration.
Troubleshooting
Server doesn't appear in Claude at all
Check the MCP log: ~/Library/Logs/Claude/mcp-server-hubspot.log. A bad absolute path is the usual cause.
HUBSPOT_ACCESS_TOKEN is not set
The env block is not being read. In Claude Desktop, env vars go inside the server entry — shell exports do not reach it.
401 / 403 401 means the token is wrong or revoked. 403 means the token is valid but missing a scope — add it in the Private App settings and copy the new token.
Server loads, then disconnects immediately
Something is writing to stdout. Under stdio transport, stdout is the JSON-RPC channel; a single console.log corrupts the stream. All logging in this project goes to stderr on purpose. Keep it that way.
Adapting this for a client delivery
Change
CONTACT_PROPERTIES/DEAL_PROPERTIESinsrc/hubspot.tsto the fields they actually care about.Rename the tools to match their vocabulary (
search_tickets, notsearch_deals).Set
MCP_AUDIT_DIRto a path inside their infrastructure.Hand over the repo plus the token scoping instructions. No vendor dependency, no subscription.
Five days is enough for this because the second build only changes the middle layer.
This server cannot be deployed
Maintenance
Related MCP Connectors
Create contacts, move deals, send proposals and invoices, read your inbox, from Claude or ChatGPT.
Notes, tasks, habits, journal and 6 more tools Claude can read and change, with undo. Free.
Personal CRM for Claude. Contacts live as plain-text files in your own Google Drive.
Free cold-calling CRM and power dialer. Build lists, log calls and plan follow-ups from Claude.
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
- AlicenseAqualityCmaintenanceExposes HubSpot CRM data and actions as tools for AI agents, enabling contact lookup, company search, contact creation, and activity logging via natural language.4506 npmMIT
- 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
- AlicenseNot gradedqualityDmaintenanceExposes CRM tools from HubSpot to Claude and other agents, enabling pipeline analysis, deal risk detection, and automated follow-up drafting.632 npmMIT