Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the HubSpot in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Let your AI work in HubSpot CRM: search and update contacts, companies, deals and tickets, see who is linked to what, check pipelines and owners, and log notes and tasks. One account, through a service key you create yourself.
Try asking
Example prompts for HubSpot
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → HubSpot, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
HubSpot + Microsoft Copilot
Let your AI work in HubSpot CRM: search and update contacts, companies, deals and tickets, see who is linked to what, check pipelines and owners, and log notes and tasks. One account, through a service key you create yourself.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
HUBSPOT_ACCESS_TOKEN
Step 1 — Get credentials
- In HubSpot, open Development in the left sidebar, then Keys → Service keys, and click Create service key. You need to be a super admin or a user with Developer tools access.
- Name the key (for example "AnythingMCP"), click Add new scope, tick the scopes listed below, then click Update and Create.
- Open the key, click Show, then Copy. Service keys start with
pat-(for examplepat-eu1-...). - Paste the key into
HUBSPOT_ACCESS_TOKEN, without the word Bearer, then install the connector. - Start with
hubspot_get_account: it shows which HubSpot account (Hub ID) the key belongs to, its time zone and its currency.
Legacy private apps: older accounts may still have a private app (Development → Legacy apps, previously Settings → Integrations → Private Apps). Its access token works the same way: paste it into HUBSPOT_ACCESS_TOKEN.
Scopes:
- Read:
crm.objects.contacts.read(also covers notes and tasks),crm.objects.companies.read,crm.objects.deals.read,crm.objects.tickets.read,crm.objects.owners.read. - Write:
crm.objects.contacts.write(also needed for notes and tasks),crm.objects.companies.write,crm.objects.deals.write,crm.objects.tickets.write.
Read-only setup: give the key only the read scopes and disable hubspot_create_object, hubspot_update_object, hubspot_associate_records, hubspot_create_note and hubspot_create_task.
Switched off at install: hubspot_archive_object. Turn it on only if the AI should delete records. Archived records go to HubSpot's recycling bin and can be restored there for 90 days.
Data privacy settings: if data privacy (GDPR) is turned on in your HubSpot account, HubSpot requires a legal basis for processing, the property hs_legal_basis, on every new contact. Tell the AI which legal basis to use when it creates contacts; without it HubSpot answers "The following required properties were missing".
Limits: HubSpot allows 100 requests per 10 seconds per key on Free and Starter (more on Professional and Enterprise), 250,000 requests a day per account and 5 searches per second. Over a limit HubSpot answers 429: wait a few seconds and try again.
Common errors: 401 means the key is wrong, expired or was rotated: copy it again. 403 names the missing scope: add it to the key under Edit. 404 means a wrong id or object type. 400 VALIDATION_ERROR names the property or filter that is wrong, for example an unknown property name or a dropdown value that is not one of its options.
The connector does not handle marketing emails, forms, lists, workflows, files, quotes and line item pricing, merges or batch writes.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
HubSpottools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
hubspot_list_owners | List the HubSpot users who can own records (owners): owner id, user id, email, first and last name, teams and whether archived |
hubspot_get_account | Get the HubSpot account the token belongs to: portal id (Hub ID), account type, time zone and UTC offset, company currency and additional… |
hubspot_search_objects | Search CRM records of one object type (contacts, companies, deals, tickets, notes, tasks, ...) by free text and/or property filters, with… |
hubspot_list_objects | List CRM records of one object type page by page, oldest id first, with the chosen properties and optionally the ids of associated records |
hubspot_get_object | Get one CRM record by id (or by a unique property such as a contact's email with id_property), with the chosen properties, optional… |
hubspot_create_object | Create a CRM record (contact, company, deal, ticket, ...) with property values, optionally associated with existing records |
hubspot_update_object | Change property values of one CRM record; only the given properties change, and an empty string clears a value |
hubspot_archive_object | Archive (delete) one CRM record: it moves to the recycling bin, where it can be restored for 90 days |
hubspot_get_associations | List the records of one type associated with a record, with their association types and labels, e.g. all deals of a company or all contacts… |
hubspot_associate_records | Link two existing records with HubSpot's default (unlabeled) association, e.g. a contact to a company or a deal to a contact |
hubspot_list_pipelines | List the pipelines of deals or tickets with their stages: pipeline id and label, and per stage its id, label, display order and metadata… |
hubspot_list_properties | List the properties of an object type, default and custom: internal name, label, type, field type, group, description, whether read-only… |
hubspot_create_note | Add a note to the CRM timeline, associated with contacts, companies, deals or tickets |
hubspot_create_task | Create a task (to-do, call or email reminder) with a due date, optionally assigned to an owner and associated with records |
Example prompts
- "Which deals in the sales pipeline are expected to close this month, and who owns them?"
- "Find the contact [email protected] and show me her company and her open deals."
- "Move the Acme Corp deal to the next stage and add a note with a summary of today's call."
- "Create a follow-up task for me on the Globex deal, due next Friday."
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?