A Monday pipeline briefing
Every Monday at 8:00, list the open deals in my HubSpot pipeline that are due to close this month, note which ones have had no activity in the last ten days, and save the list as pipeline-monday.md in my Notes folder.
Verified MCP server: HubSpot
The tool list below is a live capture from the running server; an authenticated tool call is still pending credentials.
The short answer
Last verified 2026-08-03
The HubSpot MCP server connects an AI assistant to your HubSpot CRM: list and search contacts, companies, deals and tickets, create and update records in batches, read and write properties, log calls, emails, notes and tasks, and look at workflows. The package on this page, @hubspot/mcp-server, is published by HubSpot itself, and it is the one that takes a private app access token and runs on your own Mac. Two warnings before you install it. First, HubSpot now ships three different things under the name HubSpot MCP server, and only this one uses a private app token. Second, this one is showing its age: version 0.4.0 went out in June 2025 and has not been bumped since, its public GitHub repository holds an issue tracker and no source code at all, and HubSpot labels the whole thing a beta under its Early Adopter Program. We ran it anyway, enumerated all 21 tools it exposes, and kept the raw output, including the exact errors it returns when the token is missing or wrong. [1][5][6][8]
Verification
Method
We spawned the server with npx over stdio, completed the MCP initialize handshake, called tools/list, and made one real tool call. The tool table below is that response, word for word, and the protocol version above is read straight off the raw initialize reply. The package refuses to start unless PRIVATE_APP_ACCESS_TOKEN holds a non-empty value, so we set it to an obvious placeholder instead of a real private app token: enough to boot the server and enumerate what it offers, not enough to reach HubSpot. The one tool call we made, a read-only listing of contacts, came back with HubSpot's own 401, printed below. An authenticated call is pending credentials.
Startup banner
Starting HubSpot MCP Server... Server connected. Waiting for requests...
One real tool call
tools/call hubspot-list-objects {"objectType": "contacts", "limit": 3}Error listing HubSpot contacts: HubSpot API Error: 401 Unauthorized - {"status":"error","message":"Authentication credentials not found. This API supports OAuth 2.0 authentication and you can find more details at https://developers.hubspot.com/docs/methods/auth/oauth-overview","correlationId":"019fc5ff-81c7-760d-b707-6c0883655ba4","category":"INVALID_AUTHENTICATION"}Real lines from the captured result: enough to prove the call answered.
Tools
The server answered tools/list with 21 tools on 2026-08-03. The names, descriptions and parameters below are its own words, copied from that response and never edited.
| Tool | What it does |
|---|---|
| hubspot-get-user-details | 🎯 Purpose 1. Authenticates and analyzes the current HubSpot access token, providing context about the user's permissions and account details. 🧭 Usage Guidance: 1. This tool must be used before performing any operations with Hubspot tools to determine the identity of the user, and permissions they have on their Hubspot account. 📦 Returns: 1. User ID, Hub ID, App ID, token type, a comprehensive list of authorized API scopes, and detailed owner information, and account information. 2. The uiDomain and hubId can be used to construct URLs to the HubSpot UI for the user. 3. If the user is an owner, the ownerId will help identify objects that are owned by the user. |
| hubspot-list-objectsobjectType*limitafterpropertiesassociationsarchived | 🎯 Purpose: 1. Retrieves a paginated list of objects of a specified type from HubSpot. 📦 Returns: 1. Collection of objects with their properties and metadata, plus pagination information. 🧭 Usage Guidance: 1. Use for initial data exploration to understand the data structure of a HubSpot object type. 2. Helps list objects when the search criteria or filter criteria is not clear. 3. Use hubspot-search-objects for targeted queries when the data structure is known. 4. Use hubspot-batch-read-objects to retrieve specific objects by their IDs. 5. Use hubspot-list-associations to list associations between objects. |
| hubspot-search-objectsobjectType*querylimitafterpropertiessortsfilterGroups | 🎯 Purpose: 1. Performs advanced filtered searches across HubSpot object types using complex criteria. 📋 Prerequisites: 1. Use the hubspot-list-objects tool to sample existing objects for the object type. 2. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool. 📦 Returns: 1. Filtered collection matching specific criteria with pagination information. 🧭 Usage Guidance: 1. Preferred for targeted data retrieval when exact filtering criteria are known. Supports complex boolean logic through filter groups. 2. Use hubspot-list-objects when filter criteria is not specified or clear or when a search fails. 3. Use hubspot-batch-read-objects to retrieve specific objects by their IDs. 4. Use hubspot-list-associations to get the associations between objects. 🔍 Filtering Capabilities: 1. Think of "filterGroups" as separate search conditions that you want to combine with OR logic (meaning ANY of them can match). 2. If you want to find things that match ALL of several conditions (AND logic), put those conditions together in the same filters list. 3. If you want to find things that match AT LEAST ONE of several conditions (OR logic), put each condition in a separate filterGroup. 4. You can include a maximum of five filterGroups with up to 6 filters in each group, with a maximum of 18 filters in total. |
| hubspot-batch-create-associationsfromObjectType*toObjectType*types*inputs* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Establishes relationships between HubSpot objects, linking records across different object types, by creating associations between objects in batch. 2. Uses a single set of association types for all associations in the batch. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already. 2. Use the hubspot-get-association-definitions tool to identify valid association types before creating associations. |
| hubspot-get-association-definitionsfromObjectType*toObjectType* | 🎯 Purpose: 1. Retrieves valid association types between specific HubSpot object types. 📦 Returns: 1. Array of valid association definitions with type IDs, labels, and categories. 🧭 Usage Guidance: 1. Always use before creating associations to ensure valid relationship types or to help troubleshoot association creation errors. |
| hubspot-list-associationsobjectType*objectId*toObjectType*after | 🎯 Purpose: 1. Retrieves existing relationships between a specific object and other objects of a particular type. 2. For example, you can find all companies that a contact is associated with, all deals related to a company, or discover which customers have an open ticket. 📦 Returns: 1. Collection of associated object IDs and relationship metadata. 2. Use hubspot-batch-read-objects to get more information about the associated objects. 🧭 Usage Guidance: 1. Use this tool when mapping relationships between different HubSpot objects to understand your data's connections. 2. This tool is ideal when you already know a specific record's ID and need to discover its relationships with other object types. 3. Prefer this over hubspot-search-objects tool when exploring established connections rather than filtering by properties or criteria. |
| hubspot-batch-create-objectsobjectType*inputs* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Creates multiple HubSpot objects of the same objectType in a single API call, optimizing for bulk operations. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already. 2. Use the hubspot-list-objects tool to sample existing objects for the object type. 3. Use the hubspot-get-association-definitions tool to identify valid association types before creating associations. |
| hubspot-batch-update-objectsobjectType*inputs* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Updates multiple existing HubSpot objects of the same objectType in a single API call. 2. Use this tool when the user wants to update one or more existing CRM objects. 3. If you are unsure about the property type to update, identify existing properties of the object and ask the user. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already. 2. Use the hubspot-list-objects tool to sample existing objects for the object type. 3. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool. |
| hubspot-batch-read-objectsobjectType*inputs*propertiespropertiesWithHistory | 🎯 Purpose: 1. Retrieves multiple HubSpot objects of the same object type by their IDs in a single batch operation. 🧭 Usage Guidance: 1. Use this tool to retrieve objects when the object IDs are known. |
| hubspot-list-propertiesobjectType*archivedincludeHidden | 🎯 Purpose: 1. This tool retrieves a complete catalog of properties for any HubSpot object type. 🧭 Usage Guidance: 1. This API has a large response that can consume a lot of tokens. Use the hubspot-list-objects tool to sample existing objects for the object type first. 2. Try to use the hubspot-get-property tool to get a specific property. 3. Use at the beginning of workflows to understand available data structures. |
| hubspot-get-propertyobjectType*propertyName* | 🎯 Purpose: 1. This tool retrieves detailed information about a specific property for a HubSpot object type. 2. You can use this to get all metadata related to a property, including its type, options, and other configuration details. |
| hubspot-create-propertyobjectType*name*label*descriptiongroupName*typefieldTypeoptionsformFieldhiddendisplayOrderhasUniqueValuecalculationFormulaexternalOptions | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Creates new custom properties for HubSpot object types, enabling data structure customization. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already. 2. Use the hubspot-list-objects tool to sample existing objects for the object type. 3. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool. 🧭 Usage Guidance: 1. Use this tool when you need to create a new custom property for a HubSpot object type. 2. Makes sure that the user is looking to create a new property, and not create an object of a specific object type. 3. Use list-properties to get a list of all properties for a given object type to be sure that the property does not already exist. 4. Use list-properties to to understand the data structure of object properties first. |
| hubspot-update-propertyobjectType*propertyName*labeldescriptiongroupNametypefieldTypeoptionsformFieldhiddendisplayOrdercalculationFormula | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Updates existing custom properties for HubSpot object types, enabling data structure customization. 🧭 Usage Guidance: 1. Use hubspot-list-objects tool to sample existing objects for the object type. 2. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool. |
| hubspot-create-engagementtype*ownerId*timestampassociations*metadata* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Creates a HubSpot engagement (Note or Task) associated with contacts, companies, deals, or tickets. 2. This endpoint is useful for keeping your CRM records up-to-date on any interactions that take place outside of HubSpot. 3. Activity reporting in the CRM also feeds off of this data. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId. 🧭 Usage Guidance: 1. Use NOTE type for adding notes to records 2. Use TASK type for creating tasks with subject, status, and assignment 3. Both require relevant associations to connect them to CRM records 4. Other types of engagements (EMAIL, CALL, MEETING) are NOT supported yet. 5. HubSpot notes and task descriptions support HTML formatting. However headings (<h1>, <h2>, etc.) look ugly in the CRM. So use them sparingly. |
| hubspot-get-engagementengagementId* | 🎯 Purpose: 1. Retrieves a HubSpot engagement by ID. |
| hubspot-update-engagementengagementId*ownerIdtimestampmetadata*associations* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Updates an existing HubSpot engagement (Note or Task). 2. Allows modification of engagement attributes, content, and metadata. 📋 Prerequisites: 1. You need the engagement ID to update an existing engagement. 2. Use the hubspot-get-engagement tool to get the current engagement details if needed. 3. Use the hubspot-get-user-details tool to get the owner ID. 🧭 Usage Guidance: 1. Use for updating NOTE content or TASK details (subject, description, status). 2. Only include the fields you want to update - other fields will remain unchanged. 3. HubSpot notes and task descriptions support HTML formatting. However headings (<h1>, <h2>, etc.) look ugly in the CRM. So use them sparingly. |
| hubspot-generate-feedback-link | 🎯 Purpose: 1. Use this tool when the user wants to submit feedback about HubSpot MCP tool. 2. Use this tool proactively when the other HubSpot MCP tools are unable to solve the user's tasks effectively. 3. Use this tool when you sense dissatisfaction from the user using HubSpot MCP tools. 4. Feedback will help us improve the HubSpot MCP tools in future iterations. |
| hubspot-get-schemas | 🎯 Purpose: 1. Retrieves all custom object schemas defined in the HubSpot account. 🧭 Usage Guidance: 1. Before working with custom objects to understand available object types, their properties, and associations. 📦 Returns: 1. Provides the objectTypeId and objectType for each schema. 2. These attributes should be used for this object type instead of "custom" in subsequent requests. |
| hubspot-get-linkportalId*uiDomain*pageRequests* | 🎯 Purpose: 1. Generates HubSpot UI links for different pages based on object types and IDs. 2. Supports both index pages (lists of objects) and record pages (specific object details). 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the PortalId and UiDomain. 🧭 Usage Guidance: 1. Use to generate links to HubSpot UI pages when users need to reference specific HubSpot records. 2. Validates that object type IDs exist in the HubSpot system. |
| hubspot-list-workflowslimitafter | 🎯 Purpose: 1. This tool retrieves a paginated list of workflows from the HubSpot account. 🧭 Usage Guidance: 1. Use the "limit" parameter to control the number of results returned per page. 2. For pagination, use the "after" parameter with the value from the previous response's paging.next.after. 3. This endpoint returns essential workflow information including ID, name, type, and status. |
| hubspot-get-workflowflowId* | 🎯 Purpose: 1. This tool retrieves detailed information about a specific workflow from the HubSpot account. 🧭 Usage Guidance: 1. Use the "flowId" parameter to specify which workflow to retrieve. 2. This endpoint returns complete workflow information including actions, enrollment criteria, and scheduling. 3. Use the hubspot-list-workflows tool first to identify the workflow ID you need. |
Parameters marked with * are required.
Setup
Copy the block for the app you use. Each one is the configuration this server was verified with.
Open the file ~/Library/Application Support/Claude/claude_desktop_config.json (in Claude Desktop: Settings, then Developer, then Edit Config) and add:
{
"mcpServers": {
"hubspot": {
"command": "npx",
"args": [
"-y",
"@hubspot/mcp-server"
],
"env": {
"PRIVATE_APP_ACCESS_TOKEN": "your-private-app-access-token"
}
}
}
}Paste your own private app access token, then quit and reopen Claude Desktop. If the server does not appear, the token is the first thing to check: with an empty or missing value this package exits before it prints anything a client can show you. [1][4]
One command in your terminal:
claude mcp add --env PRIVATE_APP_ACCESS_TOKEN=your-private-app-access-token --transport stdio hubspot -- npx -y @hubspot/mcp-server
Everything after the double dash is the exact command Claude Code will run. HubSpot's own README covers only Claude Desktop and Cursor, so this line follows Anthropic's documented pattern for a local stdio server. The --transport flag sits between the last --env pair and the server name on purpose: a name placed straight after --env is read as another KEY=value pair. [9][1]
Add to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json inside one project:
{
"mcpServers": {
"hubspot": {
"command": "npx",
"args": [
"-y",
"@hubspot/mcp-server"
],
"env": {
"PRIVATE_APP_ACCESS_TOKEN": "your-private-app-access-token"
}
}
}
}Cursor picks the file up on restart. Treat that file the way you treat any file with a token in it: it is plain text on disk, so keep it out of a repository you push. [10][1]
No JSON file and no terminal. In Routines: Settings, then Assistant, then Connections, then Add MCP Server. Switch the form to Command (stdio) and enter:
Name HubSpot Command npx Arguments -y @hubspot/mcp-server Environment Variables PRIVATE_APP_ACCESS_TOKEN your-private-app-access-token
The Arguments field splits on spaces, so keep it to exactly those three words. The token goes in Environment Variables, never in Arguments. Click Test Connection first: a working server answers with its tool count, twenty-one for this one. [11][1]
No terminal needed
If you have never opened Terminal and never want to, this is your path. Routines is a Mac app that runs MCP servers for you: fill in a few fields once, and this server's tools are available to your AI in chat and in scheduled routines. The only fiddly part is the HubSpot token, and it is a five-minute detour inside your HubSpot settings.
01
Download the app from getroutines.ai/download, drag it to Applications, and sign in.
02
In HubSpot go to Settings, then Integrations, then Private Apps, and click Create a private app. Give it a name, open the Scopes tab, and tick the read scopes for the records you want the AI to see, such as crm.objects.contacts.read, crm.objects.companies.read and crm.objects.deals.read. Add the matching write scopes only if you want it to change records. Create the app, then copy the access token it shows you. Ticking a scope you did not intend is the difference between an assistant that reads your pipeline and one that can rewrite it.
03
Back in Routines, click your account at the bottom of the sidebar and choose Settings. Open the Assistant section, then the Connections tab, scroll to MCP Servers, and click Add MCP Server.
04
The form opens in URL (SSE/HTTP) mode. Switch it to Command (stdio): this server is a command, not a web address. Name: HubSpot. Command: npx. Arguments: -y @hubspot/mcp-server, exactly those three words.
05
In Environment Variables add one row: PRIVATE_APP_ACCESS_TOKEN on the left, your private app access token on the right. Click Test Connection: Routines starts the server without saving it and reports how many tools it found, twenty-one for this one. Then click Add Server.
06
The tools work in chat right away. To let a scheduled routine use them, open the routine, find the Tools & connections card, and tick the server under Apps.
Routine ideas
Once the server is connected, a scheduled routine can use its tools while you are away. Copy a prompt, paste it into Routines, and pick a time.
Every Monday at 8:00, list the open deals in my HubSpot pipeline that are due to close this month, note which ones have had no activity in the last ten days, and save the list as pipeline-monday.md in my Notes folder.
Every Friday at 15:00, search HubSpot for contacts whose last activity date is more than 45 days ago and who are still marked as an open lead, and write them to stale-contacts.md with the owner name and the last thing that happened.
Every weekday at 18:00, list the HubSpot contacts and companies created today, summarise where each one came from in one line, and append the summary to new-business.md so I have a running log.
Troubleshooting
Real errors captured during the verification run, printed exactly as the server returned them.
What you see
Error: HubSpot access token is required. Set PRIVATE_APP_ACCESS_TOKEN in your environment variables and retry.
The fix
PRIVATE_APP_ACCESS_TOKEN is missing or empty. We triggered this twice on purpose, once with the variable unset and once set to an empty string, and both times Node printed that line inside an uncaught exception with a stack trace and quit with exit code 1. It arrives as a crash rather than a tidy startup message because every tool object is built the moment the file loads and the very first one demands a token. Many MCP clients will only tell you the server failed to start, so if you see nothing but a red dot, check the token first. In Claude Desktop and Cursor it belongs in the env block; in Routines it belongs in Environment Variables, not in Arguments.
What you see
Error listing HubSpot contacts: HubSpot API Error: 401 Unauthorized - {"status":"error","message":"Authentication credentials not found. This API supports OAuth 2.0 authentication and you can find more details at https://developers.hubspot.com/docs/methods/auth/oauth-overview","correlationId":"019fc5ff-81c7-760d-b707-6c0883655ba4","category":"INVALID_AUTHENTICATION"}The fix
This is HubSpot's answer, not the server's: the server passed your token through and HubSpot rejected it. This is exactly what our run produced, because we booted the server with a placeholder token on purpose. Check that you copied the access token from the private app and not the client secret, that the private app is still active, and that the token has not been rotated. The same 401 also appears if the token is real but the private app is missing the scope for the object you asked about.
What you see
Error retrieving token, owner, and account information. HubSpot API Error: 404 Not Found - {}
The fix
hubspot-get-user-details is the tool the server wants called first, and it looks your token up by value. A token that does not exist has no record to find, so HubSpot returns a 404 with an empty body rather than a 401. Read it as a bad token, not a missing account. We captured this one with the placeholder token before switching the sample call to a listing, which produces the clearer 401 above.
What you see
Unknown tool: hubspot-list-contacts
The fix
There is no per-object tool here. Everything goes through the generic pair, hubspot-list-objects and hubspot-search-objects, with an objectType argument such as contacts, companies, deals or tickets. If your assistant keeps guessing, paste the tool table from this page into the conversation once.
What you see
Error: [
{
"code": "invalid_type",
"expected": "string",
"received": "undefined",
"path": [
"objectType"
],
"message": "Required"
}
]The fix
The server validates arguments locally before it calls HubSpot, and that JSON block is its validation report: path names the argument, message says what was wrong. Here objectType was left out of hubspot-list-objects. Nothing was sent to HubSpot, so nothing was changed.
The fix
The npx command belongs to Node.js. If Node is not installed on your Mac, every client on this page fails at the spawn step before the server can say anything. Install Node from nodejs.org, restart your MCP client, and try again.
FAQ
It is a small program that sits between an AI assistant and your HubSpot account and speaks the Model Context Protocol. Once connected, an assistant such as Claude can list and search CRM records, create and update them in batches, read and edit properties, link records to each other, log calls, emails, notes and tasks, and read your workflows. The package on this page runs as a local process on your Mac and talks to your AI app over stdio. [1][4]
Three different things carry that name, and picking the wrong one wastes an afternoon. The npm package on this page, @hubspot/mcp-server, is the one that takes a private app access token and runs locally; it is what almost every guide means. HubSpot also runs a hosted server at mcp.hubspot.com that connects over OAuth and covers marketing objects such as campaigns, landing pages and blog posts as well as the CRM. And the HubSpot CLI installs a third one with hs mcp setup, which is for building HubSpot apps, not for reading your CRM. HubSpot's own documentation page now describes only the last two, which is why the README link from the npm package looks like it points at the wrong product. It does. Then there are the lookalikes: npm carries at least eight unofficial HubSpot MCP packages with near-identical names, and the largest of them draws about 490 downloads a week against 16,188 for the official one. If the package name is not exactly @hubspot/mcp-server, it is not from HubSpot. [8][1][3]
The running server exposes 21 tools: records (hubspot-list-objects, hubspot-search-objects, hubspot-batch-read-objects, hubspot-batch-create-objects, hubspot-batch-update-objects), properties and schemas (hubspot-list-properties, hubspot-get-property, hubspot-create-property, hubspot-update-property, hubspot-get-schemas), associations (hubspot-list-associations, hubspot-get-association-definitions, hubspot-batch-create-associations), activity (hubspot-create-engagement, hubspot-get-engagement, hubspot-update-engagement), workflows (hubspot-list-workflows, hubspot-get-workflow), and account plumbing (hubspot-get-user-details, hubspot-get-link, hubspot-generate-feedback-link). The table above is the live tools/list output, word for word.
Yes to both. You need a HubSpot account and a private app inside it, created under Settings, then Integrations, then Private Apps. The private app hands you an access token, and that token is the only credential the server takes, in an environment variable named PRIVATE_APP_ACCESS_TOKEN. The shipped code also accepts HUBSPOT_ACCESS_TOKEN as an undocumented fallback, kept for backwards compatibility. Creating a private app may require an admin on your HubSpot account. [1][4]
The honest answer has two halves. On trust: the package is published by HubSpot itself, by maintainers on hubspot.com addresses, and it is MIT licensed. On upkeep: the public repository at github.com/HubSpot/mcp-server contains no files at all, so nobody outside HubSpot can read the source without unpacking the npm tarball, version 0.4.0 has stood still since June 2025, nine issues from outside users sit open, and HubSpot calls the whole thing a beta under its Early Adopter Program. The practical risk, though, is scope: five of the 21 tools write to your CRM, so give the private app read scopes first and add write scopes only when a task truly needs them. [5][6][7][1][4]
Because listing tools never touches HubSpot. The server only checks that the token variable is not empty, boots, and answers tools/list from its own code, so a placeholder is enough to make it describe itself honestly. The moment a tool actually runs, the request goes to HubSpot and the placeholder is exposed, which is the 401 in the sample call above. That is why this page carries the amber badge: the tool table is a real capture, and an authenticated call is still pending credentials.
Any MCP client that can launch a local stdio server and pass it an environment variable: Claude Desktop, Claude Code, Cursor, and Routines all can, and the exact config for each is above. The server itself is the same in every client; only the place you paste the config differs. There is no HTTP or remote transport in this package, so a hosted URL is not an option here. [4][9][10][11]
Sources
Anything on this page we did not observe in the run is linked here, with the date we read it. The run itself is the receipt for the rest.
[1]
Latest version 0.4.0, published 2025-06-18 and unchanged since. Publisher jedeen-hs, with 30 further maintainer accounts on hubspot.com addresses. The embedded README carries the Claude Desktop and Cursor configs, the PRIVATE_APP_ACCESS_TOKEN variable and the Early Adopter Program beta notice.
[2]
[3]
The official package at 16,188 weekly downloads against @mindstone/mcp-server-hubspot at 490, the largest of eight unofficial lookalikes.
[4]
Read, not executed: confirms the stdio transport, the PRIVATE_APP_ACCESS_TOKEN check with HUBSPOT_ACCESS_TOKEN as a backwards-compatible fallback, the 401 wrapping, and the MIT LICENSE file.
[5]
5 stars, size 0, not archived, and a last push timestamp identical to the creation timestamp of 2025-04-25. The API reports no license for the repository.
[6]
Answers "This repository is empty": there is no public source to browse.
[7]
9 open issues from outside users filed 2026-05-22 to 2026-05-26, including a prepare script that wipes the shipped dist folder and prompts/list returning empty.
[8]
The page the npm README links to. It documents the hosted server at mcp.hubspot.com over OAuth and the CLI-installed developer server, and does not mention this npm package or private app tokens.
[9]
The claude mcp add syntax for local stdio servers with environment variables, used to derive the command above because HubSpot documents no Claude Code setup.
[10]
The mcp.json shape, including the env block, and the project and global file locations. The README's own Cursor link now redirects away from the docs.
[11]
How Routines runs one-click OAuth connectors and any MCP server.
This page describes HubSpot as it behaved in one dated run on one Mac. Versions move: if something here no longer matches what you see, the capture date at the top says how old the reading is.
Behind this directory
Routines, the app behind this directory, runs MCP servers like this one without a terminal: see how connectors work. The briefings it writes stay markdown files on your Mac, and there is no cloud bill. Download Routines