Local, read-only MCP server that connects Claude to MANY HubSpot portals at once, by name. Unofficial, not affiliated with HubSpot.
Server exposes 7 read-only HubSpot tools with consistent naming (verb_noun pattern: list_, search_, get_, describe_, find_). All tools have descriptions (avg ~120 chars, within baseline 34-392). Input schemas are present and typed (Zod). However, output schemas are NOT documented, responses are returned as unstructured text via `text()` helper, making it impossible for LLMs to parse results reliably. Parameter descriptions are adequate but lack examples of valid values or constraints. Error handling is minimal, no recovery guidance or categorization. No tool annotations (readOnlyHint present in descriptions but not in schema metadata). Composition is sound: tools chain logically (list_instances → list_objects → describe_object → search). Single-portal default is smart UX.
List the properties (fields) of a CRM object type in a portal, so you know what to search on and what to request. READ-ONLY.
Search a free-text query across ALL connected HubSpot portals at once, and report which portal(s) matched. READ-ONLY. Use this when the user does not know which portal a record lives in (e.g. "find [email protected] in any of my hubspots").
Fetch a single HubSpot record by id from a chosen portal. READ-ONLY.
List which HubSpot portals are connected (by the names you gave them) and their account ids. READ-ONLY. Call this first to see what portals are available.
List the CRM object types available in a portal — the four standard ones plus any CUSTOM objects defined in that portal. READ-ONLY. Use this before searching a non-standard object.
Output schemas not documented. All tools return text via `text()` helper wrapping JSON.stringify(). LLMs cannot parse structured results reliably, they must infer field names and types from unstructured text.
No error handling guidance. Errors are caught but return raw messages (e.g. 'Portal "X" is not configured'). No recovery hints, categorization (retryable vs fatal), or suggestions for next steps.
No tool annotations in schema. Descriptions state 'READ-ONLY' but schema lacks readOnlyHint metadata. Modern MCP clients expect structured annotations for UI hints and safety checks.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
List CRM owners (users) in a chosen portal, to resolve owner ids to people. READ-ONLY.
Search a HubSpot CRM object in a chosen portal. READ-ONLY. Use `query` for a free-text search (name, email, company/domain); omit it to list recent records.
Parameter constraints not formalized. 'limit' has min/max in schema (1-100, 1-50) but other params lack validation. 'object' accepts free-form string with fallback to 'contacts', no enum or pattern constraint.
No pagination support. hubspot_search and hubspot_find_across return raw results without offset/cursor or total count. Large result sets could exhaust context window.