hubspot-conversations-mcp

hubspot-conversations-mcp

MCP server providing 1:1 tool parity with Arcade.dev's HubSpot Conversations API toolkit, enabling reading and sending conversation messages, managing threads, inboxes, channels, and custom channels from any MCP client.

Category
访问服务器

README

hubspot-conversations-mcp

CI

MCP server for the HubSpot Conversations API with 1:1 tool parity with the Arcade.dev HubSpot Conversations API toolkit (24 tools). Read conversation threads and messages, send replies, manage threads and channel accounts, and integrate custom channels — from any MCP client (Claude Code, Claude Desktop, etc.).

Covers two HubSpot API surfaces:

  • Conversations API (/conversations/conversations/2026-09-beta) — threads, messages, inboxes, channels, actors
  • Custom Channels API (/conversations/custom-channels/2026-03) — channel accounts, staging tokens, publishing external messages, delivery status

Install

Once published to npm, no clone or build is needed — MCP clients run the server straight off the registry with npx.

Interactive setup (recommended)

npx -y hubspot-conversations-mcp setup

The wizard walks you through everything:

  1. Token guide — step-by-step instructions for creating a HubSpot private app (Settings → Integrations → Private Apps) with the right scopes: conversations.read, conversations.write, and optionally conversations.custom_channels.read/.write for the custom-channel tools.
  2. Token prompt — paste the pat-... token (input is masked; OAuth2 access tokens also work), plus an optional default sender actor ID for replies.
  3. Agent selection — choose which AI agents to configure: Claude Desktop, Claude Code, and/or Hermes (Nous Research hermes-agent).
  4. Automatic install — each selected agent is configured immediately.

The wizard also works scripted: pipe the answers via stdin (printf 'pat-...\n\n1,3\n' | npx -y hubspot-conversations-mcp setup).

Non-interactive install

npx -y hubspot-conversations-mcp install --client all --token pat-eu1-... --sender-actor-id A-12345

--client takes claude-desktop, claude-code, hermes, both (the two Claude clients), all, or a comma-separated combination:

  • claude-desktop — merges the server into claude_desktop_config.json (existing servers and settings are preserved; a timestamped backup is written first). Restart Claude Desktop afterwards.
  • claude-code — runs claude mcp add … -- npx -y hubspot-conversations-mcp for you (prints the command if the claude CLI is unavailable). Add --scope user to register it across all your projects (the setup wizard defaults to this).
  • hermes — merges the server into ~/.hermes/config.yaml under mcp_servers with enabled: true (backup written first; note that YAML comments are not preserved). Verify with hermes mcp test hubspot-conversations.

Use --dry-run to preview changes without writing anything, --config-path for a non-standard Claude Desktop config location, and --hermes-config-path (or HERMES_CONFIG_PATH) for a non-standard Hermes config location.

Note on tokens: HubSpot private app tokens can only be created in the HubSpot UI — there is no public API to generate them, so the CLI guides you through it instead of doing it for you.

Manual: Claude Code

claude mcp add hubspot-conversations --env HUBSPOT_ACCESS_TOKEN=pat-eu1-... --env HUBSPOT_DEFAULT_SENDER_ACTOR_ID=A-12345 -- npx -y hubspot-conversations-mcp

Manual: Claude Desktop

claude_desktop_config.json:

{
  "mcpServers": {
    "hubspot-conversations": {
      "command": "npx",
      "args": ["-y", "hubspot-conversations-mcp"],
      "env": {
        "HUBSPOT_ACCESS_TOKEN": "pat-eu1-...",
        "HUBSPOT_DEFAULT_SENDER_ACTOR_ID": "A-12345"
      }
    }
  }
}

Prerequisite reminder: HubSpot scopes

The token must belong to a private app (or OAuth2 app) with conversations.read + conversations.write, and conversations.custom_channels.read/.write if you use the custom-channel tools.

One-click bundle for Claude Desktop (MCPB)

The repo ships a manifest.json following Anthropic's MCP Bundle format:

npm run bundle

This produces a .mcpb file. Open it with Claude Desktop (or drag it into Settings → Extensions) for a one-click install — the token is collected in the UI and stored in the OS keychain instead of a config file.

Publishing to npm

npm publish

prepublishOnly builds and runs the full test suite first. The published package contains only dist/, manifest.json, README and LICENSE. Bump version in both package.json and manifest.json (and SERVER_VERSION in server.ts) per release.

Configuration

Environment variable Required Description
HUBSPOT_ACCESS_TOKEN Private app token (pat-...) or OAuth2 access token
HUBSPOT_DEFAULT_SENDER_ACTOR_ID Default sender for SendConversationMessage, e.g. A-12345 (agent actor = A-<hubspot user id>)
HUBSPOT_BASE_URL Default https://api.hubapi.com
HUBSPOT_CONVERSATIONS_API_VERSION Default 2026-09-beta — update here when the API graduates from beta
HUBSPOT_CUSTOM_CHANNELS_API_VERSION Default 2026-03
HUBSPOT_AUTH_MODE private-app or bearer; auto-detected from the token prefix when unset

Tools (Arcade parity)

Threads

Tool Description
RetrieveConversationThreads List/search threads — filter by inbox, OPEN/CLOSED, contact, ticket, time window; paginated
RetrieveThreadById Get a single thread (status, inbox, channel, assignee, contact)
UpdateConversationThread Set OPEN/CLOSED, archive or restore a thread
ArchiveConversationThread Soft-delete a thread (permanently deleted after 30 days)

Messages

Tool Description
GetMessageHistoryForThread Message history of a thread (messages, comments, system events); paginated
RetrieveThreadMessage Get a single message
RetrieveFullMessageContent Original (untruncated) text/richText of a message
SendConversationMessage Send a message to the customer — or an internal comment with message_type=COMMENT

Inboxes, channels & actors

Tool Description
ListConversationInboxes / GetInboxDetails Conversation inboxes / help desks
ListConversationChannels / RetrieveChannelDetails Channel types (email, chat, …)
RetrieveChannelAccounts / GetChannelAccountDetails Connected accounts (specific email addresses / numbers)
RetrieveActorDetails / ResolveConversationActors Resolve actor IDs (A- agent, V- visitor, B- bot, E- email, S- system, I- integrator)

Custom channels (requires the conversations.custom_channels.* scopes)

Tool Description
CreateChannelAccount Create an account on a custom channel
GetCustomChannelAccounts List accounts on a custom channel
RetrieveChannelAccountDetails Get one custom-channel account
UpdateChannelAccountInfo Rename or (de)authorize a channel account
UpdateChannelAccountStaging Finalize a staging-token connection (public apps)
PublishCustomChannelMessage Publish an external message into HubSpot
GetCustomChannelMessageDetails Get a custom-channel message
UpdateMessageStatus Report delivery status: SENT / FAILED / READ

Sending replies

SendConversationMessage only requires thread_id and text. Everything else is derived:

  • channel_id / channel_account_id — taken from the thread's originalChannelId / originalChannelAccountId
  • recipients — the senders of the latest incoming message (i.e. a normal reply)
  • sender_actor_id — falls back to HUBSPOT_DEFAULT_SENDER_ACTOR_ID

Pass any of them explicitly to override. Arcade-style calls are also supported: pass a stringified JSON request_body (typed fields win on conflict), and call with mode="get_request_schema" to inspect the raw body schema. The same pattern applies to PublishCustomChannelMessage.

Development

npm test           # vitest — unit + in-memory MCP integration tests
npm run typecheck  # tsc --noEmit
npm run build      # compile to dist/
npm run bundle     # build a .mcpb one-click bundle for Claude Desktop

The integration tests run the full MCP server against a stubbed fetch, so no HubSpot account is needed to develop.

Notes

  • Tool names and parameters mirror Arcade's HubspotConversationsApi toolkit 1:1; list tools additionally accept optional filter/pagination parameters (supersets of Arcade's schemas).
  • The client retries once on 429/502/503, honoring Retry-After (capped at 10s).
  • Thread assignee endpoints (PUT/DELETE /threads/{id}/assignee) exist in the HubSpot API but are not part of Arcade's toolkit, so they are not exposed as tools. Re-add them in src/tools/threads.ts if needed.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选