HubSpot CMS Website MCP
Provides comprehensive documentation and tools for HubSpot CMS development, including HubL templating, modules, templates, themes, sections, fields, and global content.
Provides documentation and guidance on setting up Tailwind CSS with HubSpot, including basic setup and Vite integration.
Provides documentation on integrating Vite with HubSpot for CSS tooling and build processes.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@HubSpot CMS Website MCPHow do I create a custom HubSpot module?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
HubSpot Website MCP
An MCP (Model Context Protocol) server providing comprehensive HubSpot CMS development documentation. Use it with Claude Desktop or any MCP-compatible client to get contextual information about building HubSpot websites.
Features
HubL Templating: Variables, loops, conditionals, filters, functions, macros, tags
Modules: Creation, configuration, fields, meta.json
Templates: Page, blog, email, partials, drag-and-drop areas
Themes: Structure, theme.json, fields.json, theme fields
Sections: Reusable drag-and-drop layouts
Fields: All field types, visibility, repeaters, groups
Global Content: Global modules and partials
Tailwind CSS: Basic setup and Vite integration
CLI: Installation, commands, workflows
Related MCP server: Aindreyway MCP Codex Keeper
Installation
Using npx (Recommended)
Add to your Claude Desktop config (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"hubspot-website": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:GustavoGomezPG//HS-CMS-Website-MCP"]
}
}
}Local Installation
git clone https://github.com/GustavoGomezPG/HS-CMS-Website-MCP.git
cd hubspot-website-mcp
npm install
npm startThen add to Claude Desktop config:
{
"mcpServers": {
"hubspot-website": {
"type": "stdio",
"command": "node",
"args": ["/path/to/hubspot-website-mcp/server.js"]
}
}
}Available Tools
Tool | Description |
| List all available topics |
| Get a specific document from a topic |
| Get all documents from a topic |
| Search across all documents |
| Get the main overview |
Topics
getting-started- CMS overview, file structurecli- Installation, commandshubl- Variables, conditionals, loops, filters, functions, macros, tagsmodules- Overview, configuration, hiding modulestemplates- Overview, drag-and-drop areasthemes- Theme developmentsections- Section templatesfields- Field types, configurationglobal-content- Global modules and partialstailwind- CSS setup, Vite integration
Example Usage
Once configured, ask Claude:
"How do I create a HubSpot module?"
"What are the available HubL filters?"
"How do I set up Tailwind CSS with HubSpot?"
"Explain drag-and-drop areas in HubSpot templates"
License
MIT
Available Tools
5 toolsget_documentB
Get a specific document from a topic
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | The topic name (folder name) | |
| document | Yes | The document name (without .md extension) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only states the read-like operation but fails to mention if it is read-only, any side effects, required permissions, or response format. The agent is left to assume safe behavior without confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence with no superfluous words. It efficiently conveys the core purpose without redundancy, making it easy for the agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple structure (2 params, no output schema), the description is minimally complete. However, it lacks information about return values (e.g., document content, metadata) which would be helpful for an agent. The schema covers parameters well, but the description could enhance completeness by indicating output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters (topic as folder name, document without .md extension). The description adds no additional meaning beyond the schema, so it earns the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and the resource (specific document from a topic). It distinguishes from sibling tools like get_topic (which gets a topic) and search (which returns results), making it easy for the agent to select this tool for retrieving a single document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not specify when to use this tool versus alternatives like get_topic or search, nor does it mention prerequisites or context. The agent receives no guidance on tool selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indexA
Get the main index/overview of all available information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, so description carries full burden. It describes the tool as returning a main index, but lacks details about the format, scope, or any behavioral constraints. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, concise sentence with no extraneous information. Efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description could be more complete by specifying what the index includes (e.g., list of topics, structure). Minimal but sufficient for a simple overview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters, so schema coverage is 100%. Description adds no parameter details, but baseline score of 4 is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get' and resource 'main index/overview'. It distinguishes from sibling tools like get_document or list_topics, which focus on specific items rather than an overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage when a broad overview is needed but does not explicitly state when to use this over alternatives. No when-not-to-use or comparison with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topicC
Get all documents from a specific topic
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | The topic name to retrieve all documents from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It does not mention pagination, rate limits, authorization needs, or what 'all documents' entails (e.g., return format, limits). Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no fluff. It efficiently conveys the core purpose, though it could benefit from additional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain return values. It does not mention whether it returns document IDs, full content, or metadata. Incomplete for a retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with a descriptive parameter name and schema description. The tool description adds no extra meaning beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'all documents from a specific topic', distinguishing it from siblings like get_document (single document) and list_topics (list names). However, it does not explicitly differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_document for a single document, search for filtered results). The description only states what it does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsA
List all available information topics and their documents
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it lists topics and their documents, but does not disclose behavioral traits like whether it is read-only, whether documents are returned as metadata or full content, or if there are pagination limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the key verb and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (0 params, no output schema), the description is somewhat complete but lacks details on what exactly is returned for 'their documents' and whether any implicit constraints apply (e.g., pagination, permissions). It could be improved by mentioning that it returns document references, not full content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the schema is effectively empty. The baseline is 4, and the description does not need to add parameter details. It correctly notes the action without redundant parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('list') and the resource ('all available information topics and their documents'), which differentiates it from sibling tools like 'get_topic' (single topic) and 'get_document' (single document).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is used to get a broad overview of topics, but it does not explicitly state when to use it versus siblings like 'search' or 'get_index', nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchB
Search across all documents for a query
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term to find in document titles and content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states a general search without explaining scope (all documents in what context), result limits, pagination, or whether it supports partial matches. This minimal information is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no extraneous information. It is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description could still be more complete. It does not indicate what the tool returns (e.g., list of documents) or any default behaviors, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the 'query' parameter. The description adds no further meaning beyond the schema, so it achieves the baseline score. It does not compensate for any missing schema detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Search across all documents for a query.' It uses a specific verb and resource, and distinguishes from sibling tools like get_document and get_topic, which are for individual retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It lacks information on appropriate contexts, prerequisites, or exclusions, leaving the agent without usage recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
get_document - First observed
get_index - First observed
get_topic - First observed
list_topics - First observed
search
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: getting a specific document, getting an overview, getting documents by topic, listing topics, and searching across all documents. No overlap.
All tools follow a consistent verb_noun snake_case pattern (get_document, get_index, get_topic, list_topics, search). Even 'search' fits as a verb-only name.
Five tools is well-scoped for a documentation/knowledge base server; each tool covers a necessary retrieval operation without being too few or too many.
The set covers all basic retrieval needs (single document, topic, index, listing, search). No create/update/delete operations, but that is appropriate for a read-only CMS documentation server.
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.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that serves documentation and enables AI-powered search, Q\&A, and document analysis for developer tools and guides.54MIT
- AlicenseAqualityDmaintenanceAn intelligent MCP server that serves as a guardian of development knowledge, providing AI assistants with curated access to latest documentation and best practices.4506MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that exposes Nuxt UI documentation and resources via a standardized API, enabling interaction through natural language.82MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context.11MIT