Installation
Choose your preferred installation method and IDE below.
Get Your HubSpot Access Token
Before configuring any IDE, you need a HubSpot private app access token:
- Go to HubSpot > Settings > Integrations > Private Apps
- Click Create a private app
- Under Scopes, grant at minimum:
crm.objects.contacts.readcrm.objects.companies.readcrm.objects.deals.read
- Click Create app and copy the access token
Never commit your HubSpot access token to version control. Always use environment variables or IDE-specific secret management.
Option A: Via npx (Recommended)
No installation needed. Your IDE will run the server on demand:
npx -y @vineethnkrishnan/hubspot-mcp
This is the simplest method — just reference it in your IDE config below.
Option B: Global Install
npm install -g @vineethnkrishnan/hubspot-mcp
Then use hubspot-mcp as the command in your IDE config (instead of npx).
Option C: From Source
git clone https://github.com/vineethkrishnan/mcp-pool.git
cd mcp-pool
npm install
npm run build
Then use node /absolute/path/to/mcp-pool/packages/hubspot/build/index.js as the command.
IDE Configuration
Claude Desktop
Config file location:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Quick access: Settings > Developer > Edit Config
Using npx:
{
"mcpServers": {
"hubspot": {
"command": "npx",
"args": ["-y", "@vineethnkrishnan/hubspot-mcp"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "your-hubspot-access-token"
}
}
}
}
Using global install:
{
"mcpServers": {
"hubspot": {
"command": "hubspot-mcp",
"env": {
"HUBSPOT_ACCESS_TOKEN": "your-hubspot-access-token"
}
}
}
}
From source:
{
"mcpServers": {
"hubspot": {
"command": "node",
"args": ["/absolute/path/to/mcp-pool/packages/hubspot/build/index.js"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "your-hubspot-access-token"
}
}
}
}
Restart Claude Desktop completely after editing the config. Changes are not picked up automatically.
VS Code (GitHub Copilot)
Config file location:
| Scope | Path |
|---|---|
| Workspace | .vscode/mcp.json (in your project root) |
| User (macOS) | ~/Library/Application Support/Code/User/mcp.json |
| User (Windows) | %APPDATA%\Code\User\mcp.json |
| User (Linux) | ~/.config/Code/User/mcp.json |
Quick access: Command Palette (Cmd+Shift+P) > MCP: Open User Configuration
VS Code uses "servers" as the root key, not "mcpServers".
Workspace config (.vscode/mcp.json):
{
"servers": {
"hubspot": {
"command": "npx",
"args": ["-y", "@vineethnkrishnan/hubspot-mcp"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "${input:hubspot-token}"
}
}
},
"inputs": [
{
"id": "hubspot-token",
"description": "HubSpot Access Token",
"type": "password"
}
]
}
The inputs feature prompts you for the token securely — it never gets stored in the file.
User config (without inputs):
{
"servers": {
"hubspot": {
"command": "npx",
"args": ["-y", "@vineethnkrishnan/hubspot-mcp"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "your-hubspot-access-token"
}
}
}
}
Cursor
Config file location:
| Scope | Path |
|---|---|
| Global | ~/.cursor/mcp.json |
| Project | .cursor/mcp.json (in your project root) |
Quick access: Settings > Cursor Settings > MCP
{
"mcpServers": {
"hubspot": {
"command": "npx",
"args": ["-y", "@vineethnkrishnan/hubspot-mcp"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "your-hubspot-access-token"
}
}
}
}
Project-level config (.cursor/mcp.json) takes precedence over global config.
Windsurf (Codeium)
Config file location:
| OS | Path |
|---|---|
| macOS / Linux | ~/.codeium/windsurf/mcp_config.json |
| Windows | %USERPROFILE%\.codeium\windsurf\mcp_config.json |
Quick access: Settings > Advanced Settings > Cascade section
{
"mcpServers": {
"hubspot": {
"command": "npx",
"args": ["-y", "@vineethnkrishnan/hubspot-mcp"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "your-hubspot-access-token"
}
}
}
}
Make sure MCP is enabled in Windsurf: Settings > Advanced > Cascade > Enable MCP.
JetBrains IDEs (IntelliJ, WebStorm, PyCharm, etc.)
JetBrains IDEs (2025.2+) support MCP servers through the settings UI.
Setup:
- Open Settings/Preferences > Tools > AI Assistant > MCP Servers
- Click + Add to add a new server
- Configure:
- Name:
hubspot - Command:
npx - Arguments:
-y @vineethnkrishnan/hubspot-mcp - Environment Variables:
HUBSPOT_ACCESS_TOKEN=your-hubspot-access-token
- Name:
- Click OK and restart the AI Assistant
Alternative — manual config file:
Create or edit ~/.config/JetBrains/mcp.json:
{
"mcpServers": {
"hubspot": {
"command": "npx",
"args": ["-y", "@vineethnkrishnan/hubspot-mcp"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "your-hubspot-access-token"
}
}
}
}
Claude Code (CLI)
Option 1 — CLI command (recommended):
claude mcp add hubspot \
--scope user \
-e HUBSPOT_ACCESS_TOKEN=your-hubspot-access-token \
-- npx -y @vineethnkrishnan/hubspot-mcp
Scope options:
--scope user— available in all your projects--scope local— current project only (default)--scope project— shared with team via.mcp.json
Option 2 — manual config:
Edit ~/.claude.json (user scope) or .mcp.json (project scope):
{
"mcpServers": {
"hubspot": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@vineethnkrishnan/hubspot-mcp"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "your-hubspot-access-token"
}
}
}
}
Verify it's working:
claude mcp list
Environment Variables
| Variable | Required | Description |
|---|---|---|
HUBSPOT_ACCESS_TOKEN | Yes | HubSpot private app access token with CRM read scopes |
Verify Installation
After configuring your IDE, test the connection by asking your AI assistant:
"List my HubSpot contacts."
If the server is working, you'll get a response with your contacts. If not, check:
- Token is valid — test with
curl -H "Authorization: Bearer your-token" https://api.hubapi.com/crm/v3/objects/contacts?limit=1 - Node.js >= 20 — run
node --version - Scopes are granted — ensure
crm.objects.contacts.read,crm.objects.deals.read, andcrm.objects.companies.readare enabled on your private app - Config file syntax — validate your JSON (no trailing commas)
- Restart your IDE — most IDEs require a full restart after config changes