HubSpot API: 1,000+ endpoints as safety-categorized, hub- and plan-aware MCP tools, stdio or HTTP.
Connect Runs on your machine
claude mcp add hubspot-mcp -e MCP_TRANSPORT=<MCP_TRANSPORT> -e HUBSPOT_ACCESS_TOKEN=<HUBSPOT_ACCESS_TOKEN> -e HUBSPOT_BASE_URL=<HUBSPOT_BASE_URL> -e HUBSPOT_TOOL_MODE=<HUBSPOT_TOOL_MODE> -e HUBSPOT_READ_ONLY=<HUBSPOT_READ_ONLY> -e HUBSPOT_CAPABILITY_CHECK=<HUBSPOT_CAPABILITY_CHECK> -e MCP_AUTH_TOKEN=<MCP_AUTH_TOKEN> -- docker run -i --rm ghcr.io/ohneben/hubspot-mcp:2.0.1
{
"mcpServers": {
"hubspot-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ohneben/hubspot-mcp:2.0.1"
],
"env": {
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"HUBSPOT_ACCESS_TOKEN": "<HUBSPOT_ACCESS_TOKEN>",
"HUBSPOT_BASE_URL": "<HUBSPOT_BASE_URL>",
"HUBSPOT_TOOL_MODE": "<HUBSPOT_TOOL_MODE>",
"HUBSPOT_READ_ONLY": "<HUBSPOT_READ_ONLY>",
"HUBSPOT_CAPABILITY_CHECK": "<HUBSPOT_CAPABILITY_CHECK>",
"MCP_AUTH_TOKEN": "<MCP_AUTH_TOKEN>"
}
}
}
}
{
"mcpServers": {
"hubspot-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ohneben/hubspot-mcp:2.0.1"
],
"env": {
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"HUBSPOT_ACCESS_TOKEN": "<HUBSPOT_ACCESS_TOKEN>",
"HUBSPOT_BASE_URL": "<HUBSPOT_BASE_URL>",
"HUBSPOT_TOOL_MODE": "<HUBSPOT_TOOL_MODE>",
"HUBSPOT_READ_ONLY": "<HUBSPOT_READ_ONLY>",
"HUBSPOT_CAPABILITY_CHECK": "<HUBSPOT_CAPABILITY_CHECK>",
"MCP_AUTH_TOKEN": "<MCP_AUTH_TOKEN>"
}
}
}
}
{
"servers": {
"hubspot-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ohneben/hubspot-mcp:2.0.1"
],
"env": {
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"HUBSPOT_ACCESS_TOKEN": "<HUBSPOT_ACCESS_TOKEN>",
"HUBSPOT_BASE_URL": "<HUBSPOT_BASE_URL>",
"HUBSPOT_TOOL_MODE": "<HUBSPOT_TOOL_MODE>",
"HUBSPOT_READ_ONLY": "<HUBSPOT_READ_ONLY>",
"HUBSPOT_CAPABILITY_CHECK": "<HUBSPOT_CAPABILITY_CHECK>",
"MCP_AUTH_TOKEN": "<MCP_AUTH_TOKEN>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
MCP_TRANSPORTRequired | Server transport. Set to 'stdio' for local MCP clients; the image otherwise starts the Streamable HTTP transport. |
HUBSPOT_ACCESS_TOKENRequired, secret | HubSpot service key or legacy private app token (pat-...), from Settings -> Integrations. An OAuth access token also works. |
HUBSPOT_BASE_URLOptional | API host. Default https://api.hubapi.com; use https://api-eu1.hubapi.com for EU data residency portals. |
HUBSPOT_TOOL_MODEOptional | 'discovery' (default) exposes 3 meta-tools that search, inspect and call all 1,076 endpoints; 'all' exposes the ~690 endpoint tools directly. |
HUBSPOT_READ_ONLYOptional | Set to 'true' to expose only read-only tools. |
HUBSPOT_CAPABILITY_CHECKOptional | Read the token's scopes and probe paid-tier or beta API groups at startup (read-only, up to about 30 API calls). Set to 'false' to skip. |
MCP_AUTH_TOKENOptional, secret | Only for MCP_TRANSPORT=http: bearer token required on /mcp. Without it a non-loopback bind refuses to start. |
Details
| Package | ghcr.io/ohneben/hubspot-mcp:2.0.1 (OCI, stdio) |
| First published | 15 Sep 2026 |
| Last updated | 15 Sep 2026 |
| Registry name | io.github.ohneben/hubspot-mcp |
More marketing and seo servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
