HubSpot CRM MCP server
Provides read-only access to HubSpot CRM data, including contacts, companies, deals, tickets, products, line items, quotes, leads, custom objects, logged activities, associations, pipelines, owners, and property definitions. Enables AI agents to list, retrieve, search, and page through CRM records and related metadata without modifying HubSpot data.
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.
HubSpot CRM MCP server
A free, read-only Python MCP server (stdio) that lets AI agents read your whole HubSpot CRM:
Records: contacts, companies, deals, tickets, products, line items, quotes, leads and custom objects
Logged activities: calls, emails, meetings, notes and tasks
Context: associations, pipelines, owners and property definitions
It works with Claude Code, Claude Desktop, Cursor, VS Code / GitHub Copilot, Codex and any other MCP client.
Read-only and local:
It never creates, changes or deletes CRM records.
It runs on your machine.
The only host it contacts is
api.hubapi.com, using your own HubSpot token.
Licensed under the MIT License. Not affiliated with or endorsed by HubSpot, Inc.
Tools
Generic tools. These work with any object type: contacts, companies, deals, tickets, products, line_items, quotes, calls, emails, meetings, notes, tasks, leads, or a custom object ID such as 2-1234567.
Tool | What it does |
| Lists standard and custom object types, with the default properties returned for each |
| Lists an object type's fields. With |
| Lists deal or ticket pipelines and their stages, with probability and closed flag |
| Lists the users who can own records. Use it to map |
| Lists records of a type, with optional |
| Gets one record by ID. With |
| Searches with free text, |
| Lists the IDs of linked records of one type, e.g. a company's contacts or a deal's notes, with association labels |
Shortcuts for the most common calls: list_contacts, list_companies, list_deals, get_contact and search_contacts.
Arguments and results
limitis 1-100 and defaults to 10 (100 for owners and associations).List and search results include
next_after. Pass it asafterto get the next page.Records come back flat:
{id, ...properties}.
Search filters take this form: {"property": "amount", "operator": "GTE", "value": "5000"}. The operators are:
EQ,NEQ,LT,LTE,GT,GTEBETWEEN: needsvalueandhigh_valueIN,NOT_IN: needvaluesHAS_PROPERTY,NOT_HAS_PROPERTYCONTAINS_TOKEN,NOT_CONTAINS_TOKEN
Related MCP server: hubspot-mcp
1. Install
Requires Python 3.10 or later.
git clone https://github.com/dpittaluga76/hubspot-crm-mcp
cd hubspot-crm-mcp
python -m venv .venv
# Windows: .venv\Scripts\python -m pip install -r requirements.txt
# macOS/Linux: .venv/bin/python -m pip install -r requirements.txt2. Try the demo (no HubSpot account needed)
Run these from the cloned folder (examples use Windows paths):
.\.venv\Scripts\python.exe client.py --demo
.\.venv\Scripts\python.exe client.py --demo --tool list_pipelines
.\run_hubspot.bat --demo --tool get_object --args '{\"object_type\": \"companies\", \"object_id\": \"101\", \"associations\": [\"contacts\", \"deals\"]}'The client starts the server, prints the available tools, then calls the one you chose (list_contacts by default). Demo mode serves linked fictional records for every tool. The demo data is in demo_data.py.
3. Connect to HubSpot
Create a private app (Settings → Integrations → Private Apps) or a service key (Settings → Integrations → Service Keys). Tick only the read scopes for the data you want:
Data
Scope
Contacts, plus calls, meetings, notes and tasks
crm.objects.contacts.readCompanies
crm.objects.companies.readDeals, deal pipelines
crm.objects.deals.readTickets, ticket pipelines
crm.objects.tickets.read(older accounts:tickets)Leads
crm.objects.leads.readProducts
crm.objects.products.readLine items
crm.objects.line_items.readQuotes
crm.objects.quotes.readLogged emails
crm.objects.emails.readOwner names
crm.objects.owners.readCustom objects
crm.schemas.custom.read,crm.objects.custom.readLeave every write, import, export and sensitive-data scope unticked: the server never needs them. Some scopes need a paid HubSpot plan. If a scope is missing, the tool's error message (HTTP 403) names the scope HubSpot expects.
Copy
.env.exampleto.envand paste the token into it. The server looks for a credential in this order:HUBSPOT_ACCESS_TOKENenvironment variableHUBSPOT_ACCESS_TOKENin.envHUBSPOT_ACCESS_TOKEN_BASE64in.env
Base64 only keeps the token from being readable at a glance. It is not encryption. The server reads
.envfrom its own folder and never copies it into the process environment.Run
client.pywithout--demoto check the connection.
Results contain real CRM data, including personal information, so use a test account if you can.
4. Register it with your agent
In the configs below:
<python>is the absolute path of thepythonexecutable in.venv<server>is the absolute path ofserver.py
Add --demo after <server> for fictional data. Your token stays in .env, so it never goes into agent config.
Claude Code
claude mcp add -s user hubspot -- <python> <server>Cursor: ~/.cursor/mcp.json. Claude Desktop: claude_desktop_config.json. Both use the same block (see also .mcp.json.example):
{"mcpServers": {"hubspot": {"command": "<python>", "args": ["<server>"]}}}VS Code / GitHub Copilot (agent mode): .vscode/mcp.json
{"servers": {"hubspot": {"type": "stdio", "command": "<python>", "args": ["<server>"]}}}Codex CLI
codex mcp add hubspot -- <python> <server>Restart the agent and ask, for example, "Which deals close this month?" or "Summarize everything we have on Example Corp".
Tests
python -m unittest -vThe 32 tests make no network calls. They cover:
demo data for every tool
the exact HubSpot requests sent: paths, query parameters, search bodies, associations and paging
credential lookup order
error messages, including which scope a 403 is missing
input validation, e.g. object types and IDs can't change the request path
full client-to-server runs over stdio
Files
server.py: the MCP server. It uses HubSpot's date-versioned API (/crm/objects/2026-03/..., plus/crm/v3/schemasfor custom objects).demo_data.py: the fictional records served by--demo.client.py: a minimal stdio MCP client (--demo,--tool,--limit,--args).run_hubspot.bat: Windows launcher for the client. It passes its arguments through.test_server.py: the offline test suite..env.example,.mcp.json.example: templates. The real.envand.mcp.jsonare git-ignored.
This server cannot be deployed
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.
MCP server for the HubSpot Integrations Center HubDB: search and retrieve integration data.
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis read-only MCP Server allows you to connect to HubSpot data from Claude Desktop through CData JDBC Drivers. For full CRUD support, check out the first managed MCP platform: CData Connect AI (https://www.cdata.com/ai/).MIT
- AlicenseAqualityDmaintenanceA read-only MCP server that exposes HubSpot CRM data (contacts, deals, companies, quotes) to AI agents, enabling natural language queries.9MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that provides AI assistants with full access to HubSpot CRM. Manage contacts, companies, deals, pipelines, and associations directly from Claude, Cursor, or any MCP-compatible client.7 npmMIT
- AlicenseNot gradedqualityBmaintenanceHubSpot MCP server that enables browsing and searching contacts, companies, and deals in your HubSpot workspace.479 npmMIT