תדריך צנרת מכירות ליום שני
Every Monday at 8:00, list the open deals in my HubSpot pipeline that are due to close this month, note which ones have had no activity in the last ten days, and save the list as pipeline-monday.md in my Notes folder.
שרת MCP מאומת: HubSpot
רשימת הכלים למטה היא לכידה חיה מהשרת הרץ; קריאת כלי מאומתת עדיין ממתינה להרשאות.
התשובה הקצרה
אומת לאחרונה 2026-08-03
שרת ה-MCP של HubSpot מחבר עוזר AI ל-CRM שלכם: להציג ולחפש אנשי קשר, חברות, עסקאות וכרטיסי תמיכה, ליצור ולעדכן רשומות באצוות, לקרוא ולכתוב מאפיינים, לתעד שיחות, מיילים, הערות ומשימות ולעיין בתהליכי עבודה. החבילה שבעמוד הזה, @hubspot/mcp-server, מפורסמת על ידי HubSpot עצמה, והיא זו שמקבלת טוקן גישה של Private App ורצה על ה-Mac שלכם. שתי אזהרות לפני ההתקנה. ראשית, HubSpot מפיצה היום שלושה דברים שונים תחת השם שרת MCP של HubSpot, ורק זה כאן משתמש בטוקן של Private App. שנית, החבילה הזו מראה סימני זקנה: גרסה 0.4.0 יצאה ביוני 2025 ומאז לא עודכנה, מאגר ה-GitHub הציבורי שלה מכיל מעקב תקלות ואפס קוד מקור, ו-HubSpot מסמנת את כל המוצר כגרסת beta במסגרת תוכנית ה-Early Adopter שלה. הרצנו אותו בכל זאת, ספרנו את כל 21 הכלים שהוא חושף ושמרנו את הפלט הגולמי, כולל השגיאות המדויקות שהוא מחזיר כשהטוקן חסר או שגוי. [1][5][6][8]
אימות
השיטה
הרצנו את השרת עם npx על גבי stdio, השלמנו את לחיצת היד של MCP, קראנו ל-tools/list וביצענו קריאת כלי אמיתית אחת. טבלת הכלים למטה היא התשובה הזו, מילה במילה, וגרסת הפרוטוקול למעלה נקראת ישירות מתוך תשובת ה-initialize הגולמית. החבילה מסרבת לעלות אם PRIVATE_APP_ACCESS_TOKEN אינו מכיל ערך, ולכן הצבנו בו ערך מדומה גלוי לעין במקום טוקן אמיתי של Private App: מספיק כדי להפעיל את השרת ולספור מה הוא מציע, לא מספיק כדי להגיע ל-HubSpot. קריאת הכלי היחידה שביצענו, שליפת אנשי קשר לקריאה בלבד, חזרה עם שגיאת 401 של HubSpot עצמה, המודפסת למטה. קריאה מאומתת ממתינה לאישורי גישה.
הודעת הפתיחה של השרת
Starting HubSpot MCP Server... Server connected. Waiting for requests...
קריאת כלי אמיתית אחת
tools/call hubspot-list-objects {"objectType": "contacts", "limit": 3}Error listing HubSpot contacts: HubSpot API Error: 401 Unauthorized - {"status":"error","message":"Authentication credentials not found. This API supports OAuth 2.0 authentication and you can find more details at https://developers.hubspot.com/docs/methods/auth/oauth-overview","correlationId":"019fc5ff-81c7-760d-b707-6c0883655ba4","category":"INVALID_AUTHENTICATION"}שורות אמיתיות מהתוצאה שנלכדה: מספיק כדי להוכיח שהקריאה נענתה.
כלים
השרת ענה ל-tools/list עם 21 כלים בתאריך 2026-08-03. השמות, התיאורים והפרמטרים למטה הם המילים שלו עצמו, מועתקים מהתשובה הזו וללא עריכה.
| כלי | מה הוא עושה |
|---|---|
| hubspot-get-user-details | 🎯 Purpose 1. Authenticates and analyzes the current HubSpot access token, providing context about the user's permissions and account details. 🧭 Usage Guidance: 1. This tool must be used before performing any operations with Hubspot tools to determine the identity of the user, and permissions they have on their Hubspot account. 📦 Returns: 1. User ID, Hub ID, App ID, token type, a comprehensive list of authorized API scopes, and detailed owner information, and account information. 2. The uiDomain and hubId can be used to construct URLs to the HubSpot UI for the user. 3. If the user is an owner, the ownerId will help identify objects that are owned by the user. |
| hubspot-list-objectsobjectType*limitafterpropertiesassociationsarchived | 🎯 Purpose: 1. Retrieves a paginated list of objects of a specified type from HubSpot. 📦 Returns: 1. Collection of objects with their properties and metadata, plus pagination information. 🧭 Usage Guidance: 1. Use for initial data exploration to understand the data structure of a HubSpot object type. 2. Helps list objects when the search criteria or filter criteria is not clear. 3. Use hubspot-search-objects for targeted queries when the data structure is known. 4. Use hubspot-batch-read-objects to retrieve specific objects by their IDs. 5. Use hubspot-list-associations to list associations between objects. |
| hubspot-search-objectsobjectType*querylimitafterpropertiessortsfilterGroups | 🎯 Purpose: 1. Performs advanced filtered searches across HubSpot object types using complex criteria. 📋 Prerequisites: 1. Use the hubspot-list-objects tool to sample existing objects for the object type. 2. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool. 📦 Returns: 1. Filtered collection matching specific criteria with pagination information. 🧭 Usage Guidance: 1. Preferred for targeted data retrieval when exact filtering criteria are known. Supports complex boolean logic through filter groups. 2. Use hubspot-list-objects when filter criteria is not specified or clear or when a search fails. 3. Use hubspot-batch-read-objects to retrieve specific objects by their IDs. 4. Use hubspot-list-associations to get the associations between objects. 🔍 Filtering Capabilities: 1. Think of "filterGroups" as separate search conditions that you want to combine with OR logic (meaning ANY of them can match). 2. If you want to find things that match ALL of several conditions (AND logic), put those conditions together in the same filters list. 3. If you want to find things that match AT LEAST ONE of several conditions (OR logic), put each condition in a separate filterGroup. 4. You can include a maximum of five filterGroups with up to 6 filters in each group, with a maximum of 18 filters in total. |
| hubspot-batch-create-associationsfromObjectType*toObjectType*types*inputs* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Establishes relationships between HubSpot objects, linking records across different object types, by creating associations between objects in batch. 2. Uses a single set of association types for all associations in the batch. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already. 2. Use the hubspot-get-association-definitions tool to identify valid association types before creating associations. |
| hubspot-get-association-definitionsfromObjectType*toObjectType* | 🎯 Purpose: 1. Retrieves valid association types between specific HubSpot object types. 📦 Returns: 1. Array of valid association definitions with type IDs, labels, and categories. 🧭 Usage Guidance: 1. Always use before creating associations to ensure valid relationship types or to help troubleshoot association creation errors. |
| hubspot-list-associationsobjectType*objectId*toObjectType*after | 🎯 Purpose: 1. Retrieves existing relationships between a specific object and other objects of a particular type. 2. For example, you can find all companies that a contact is associated with, all deals related to a company, or discover which customers have an open ticket. 📦 Returns: 1. Collection of associated object IDs and relationship metadata. 2. Use hubspot-batch-read-objects to get more information about the associated objects. 🧭 Usage Guidance: 1. Use this tool when mapping relationships between different HubSpot objects to understand your data's connections. 2. This tool is ideal when you already know a specific record's ID and need to discover its relationships with other object types. 3. Prefer this over hubspot-search-objects tool when exploring established connections rather than filtering by properties or criteria. |
| hubspot-batch-create-objectsobjectType*inputs* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Creates multiple HubSpot objects of the same objectType in a single API call, optimizing for bulk operations. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already. 2. Use the hubspot-list-objects tool to sample existing objects for the object type. 3. Use the hubspot-get-association-definitions tool to identify valid association types before creating associations. |
| hubspot-batch-update-objectsobjectType*inputs* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Updates multiple existing HubSpot objects of the same objectType in a single API call. 2. Use this tool when the user wants to update one or more existing CRM objects. 3. If you are unsure about the property type to update, identify existing properties of the object and ask the user. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already. 2. Use the hubspot-list-objects tool to sample existing objects for the object type. 3. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool. |
| hubspot-batch-read-objectsobjectType*inputs*propertiespropertiesWithHistory | 🎯 Purpose: 1. Retrieves multiple HubSpot objects of the same object type by their IDs in a single batch operation. 🧭 Usage Guidance: 1. Use this tool to retrieve objects when the object IDs are known. |
| hubspot-list-propertiesobjectType*archivedincludeHidden | 🎯 Purpose: 1. This tool retrieves a complete catalog of properties for any HubSpot object type. 🧭 Usage Guidance: 1. This API has a large response that can consume a lot of tokens. Use the hubspot-list-objects tool to sample existing objects for the object type first. 2. Try to use the hubspot-get-property tool to get a specific property. 3. Use at the beginning of workflows to understand available data structures. |
| hubspot-get-propertyobjectType*propertyName* | 🎯 Purpose: 1. This tool retrieves detailed information about a specific property for a HubSpot object type. 2. You can use this to get all metadata related to a property, including its type, options, and other configuration details. |
| hubspot-create-propertyobjectType*name*label*descriptiongroupName*typefieldTypeoptionsformFieldhiddendisplayOrderhasUniqueValuecalculationFormulaexternalOptions | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Creates new custom properties for HubSpot object types, enabling data structure customization. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already. 2. Use the hubspot-list-objects tool to sample existing objects for the object type. 3. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool. 🧭 Usage Guidance: 1. Use this tool when you need to create a new custom property for a HubSpot object type. 2. Makes sure that the user is looking to create a new property, and not create an object of a specific object type. 3. Use list-properties to get a list of all properties for a given object type to be sure that the property does not already exist. 4. Use list-properties to to understand the data structure of object properties first. |
| hubspot-update-propertyobjectType*propertyName*labeldescriptiongroupNametypefieldTypeoptionsformFieldhiddendisplayOrdercalculationFormula | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Updates existing custom properties for HubSpot object types, enabling data structure customization. 🧭 Usage Guidance: 1. Use hubspot-list-objects tool to sample existing objects for the object type. 2. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool. |
| hubspot-create-engagementtype*ownerId*timestampassociations*metadata* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Creates a HubSpot engagement (Note or Task) associated with contacts, companies, deals, or tickets. 2. This endpoint is useful for keeping your CRM records up-to-date on any interactions that take place outside of HubSpot. 3. Activity reporting in the CRM also feeds off of this data. 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId. 🧭 Usage Guidance: 1. Use NOTE type for adding notes to records 2. Use TASK type for creating tasks with subject, status, and assignment 3. Both require relevant associations to connect them to CRM records 4. Other types of engagements (EMAIL, CALL, MEETING) are NOT supported yet. 5. HubSpot notes and task descriptions support HTML formatting. However headings (<h1>, <h2>, etc.) look ugly in the CRM. So use them sparingly. |
| hubspot-get-engagementengagementId* | 🎯 Purpose: 1. Retrieves a HubSpot engagement by ID. |
| hubspot-update-engagementengagementId*ownerIdtimestampmetadata*associations* | 🛡️ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. 🎯 Purpose: 1. Updates an existing HubSpot engagement (Note or Task). 2. Allows modification of engagement attributes, content, and metadata. 📋 Prerequisites: 1. You need the engagement ID to update an existing engagement. 2. Use the hubspot-get-engagement tool to get the current engagement details if needed. 3. Use the hubspot-get-user-details tool to get the owner ID. 🧭 Usage Guidance: 1. Use for updating NOTE content or TASK details (subject, description, status). 2. Only include the fields you want to update - other fields will remain unchanged. 3. HubSpot notes and task descriptions support HTML formatting. However headings (<h1>, <h2>, etc.) look ugly in the CRM. So use them sparingly. |
| hubspot-generate-feedback-link | 🎯 Purpose: 1. Use this tool when the user wants to submit feedback about HubSpot MCP tool. 2. Use this tool proactively when the other HubSpot MCP tools are unable to solve the user's tasks effectively. 3. Use this tool when you sense dissatisfaction from the user using HubSpot MCP tools. 4. Feedback will help us improve the HubSpot MCP tools in future iterations. |
| hubspot-get-schemas | 🎯 Purpose: 1. Retrieves all custom object schemas defined in the HubSpot account. 🧭 Usage Guidance: 1. Before working with custom objects to understand available object types, their properties, and associations. 📦 Returns: 1. Provides the objectTypeId and objectType for each schema. 2. These attributes should be used for this object type instead of "custom" in subsequent requests. |
| hubspot-get-linkportalId*uiDomain*pageRequests* | 🎯 Purpose: 1. Generates HubSpot UI links for different pages based on object types and IDs. 2. Supports both index pages (lists of objects) and record pages (specific object details). 📋 Prerequisites: 1. Use the hubspot-get-user-details tool to get the PortalId and UiDomain. 🧭 Usage Guidance: 1. Use to generate links to HubSpot UI pages when users need to reference specific HubSpot records. 2. Validates that object type IDs exist in the HubSpot system. |
| hubspot-list-workflowslimitafter | 🎯 Purpose: 1. This tool retrieves a paginated list of workflows from the HubSpot account. 🧭 Usage Guidance: 1. Use the "limit" parameter to control the number of results returned per page. 2. For pagination, use the "after" parameter with the value from the previous response's paging.next.after. 3. This endpoint returns essential workflow information including ID, name, type, and status. |
| hubspot-get-workflowflowId* | 🎯 Purpose: 1. This tool retrieves detailed information about a specific workflow from the HubSpot account. 🧭 Usage Guidance: 1. Use the "flowId" parameter to specify which workflow to retrieve. 2. This endpoint returns complete workflow information including actions, enrollment criteria, and scheduling. 3. Use the hubspot-list-workflows tool first to identify the workflow ID you need. |
פרמטרים המסומנים ב-* הם חובה.
התקנה
העתיקו את הבלוק של האפליקציה שלכם. כל אחד מהם הוא ההגדרה המדויקת שאיתה אימתנו את השרת.
פתחו את הקובץ ~/Library/Application Support/Claude/claude_desktop_config.json (בתוך Claude Desktop: Settings, אחר כך Developer, אחר כך Edit Config) והוסיפו:
{
"mcpServers": {
"hubspot": {
"command": "npx",
"args": [
"-y",
"@hubspot/mcp-server"
],
"env": {
"PRIVATE_APP_ACCESS_TOKEN": "your-private-app-access-token"
}
}
}
}הדביקו את טוקן הגישה של ה-Private App שלכם, ואז סגרו ופתחו מחדש את Claude Desktop. אם השרת לא מופיע, הטוקן הוא הדבר הראשון לבדוק: עם ערך ריק או חסר החבילה הזו יוצאת עוד לפני שהיא מדפיסה משהו שהלקוח יכול להציג לכם. [1][4]
פקודה אחת בטרמינל:
claude mcp add --env PRIVATE_APP_ACCESS_TOKEN=your-private-app-access-token --transport stdio hubspot -- npx -y @hubspot/mcp-server
כל מה שאחרי המקף הכפול הוא הפקודה המדויקת ש-Claude Code יריץ. ה-README של HubSpot מכסה רק את Claude Desktop ואת Cursor, ולכן השורה הזו נגזרת מהתחביר הרשמי של Anthropic לשרת stdio מקומי. הדגל --transport יושב בין זוג ה---env האחרון לבין שם השרת בכוונה: שם שמוצב מיד אחרי --env נקרא כזוג KEY=value נוסף. [9][1]
הוסיפו ל-~/.cursor/mcp.json עבור כל הפרויקטים, או ל-.cursor/mcp.json בתוך פרויקט אחד:
{
"mcpServers": {
"hubspot": {
"command": "npx",
"args": [
"-y",
"@hubspot/mcp-server"
],
"env": {
"PRIVATE_APP_ACCESS_TOKEN": "your-private-app-access-token"
}
}
}
}Cursor קורא את הקובץ מחדש אחרי הפעלה מחדש. התייחסו לקובץ הזה כמו לכל קובץ שיש בו טוקן: זהו טקסט גלוי על הדיסק, לכן שמרו אותו מחוץ למאגר קוד שאתם דוחפים. [10][1]
בלי קובץ JSON ובלי טרמינל. ב-Routines: Settings, אחר כך Assistant, אחר כך Connections, אחר כך Add MCP Server. העבירו את הטופס ל-Command (stdio) והזינו:
Name HubSpot Command npx Arguments -y @hubspot/mcp-server Environment Variables PRIVATE_APP_ACCESS_TOKEN your-private-app-access-token
הערך בשדה ה-Arguments מתפצל לפי רווחים, לכן השאירו אותו בדיוק בשלוש המילים האלה. הטוקן נכנס ל-Environment Variables, לעולם לא ל-Arguments. לחצו קודם על Test Connection: שרת תקין עונה עם מספר הכלים שלו, עשרים ואחד עבור השרת הזה. [11][1]
בלי טרמינל
אם מעולם לא פתחתם את הטרמינל ואין לכם כוונה להתחיל, זה המסלול שלכם. Routines היא אפליקציית Mac שמריצה שרתי MCP בשבילכם: ממלאים כמה שדות פעם אחת, והכלים של השרת זמינים ל-AI שלכם בצ׳אט ובשגרות מתוזמנות. החלק המסורבל היחיד הוא הטוקן של HubSpot, וזו עקיפה של חמש דקות בתוך ההגדרות של HubSpot.
01
הורידו את האפליקציה מ-getroutines.ai/download, גררו אותה ל-Applications והתחברו.
02
ב-HubSpot היכנסו ל-Settings, אחר כך Integrations, אחר כך Private Apps, ולחצו על Create a private app. תנו לה שם, פתחו את לשונית Scopes וסמנו את הרשאות הקריאה לרשומות שתרצו שה-AI יראה, למשל crm.objects.contacts.read, crm.objects.companies.read ו-crm.objects.deals.read. הוסיפו את הרשאות הכתיבה המקבילות רק אם תרצו שהוא ישנה רשומות. צרו את האפליקציה ואז העתיקו את טוקן הגישה שיוצג לכם. סימון הרשאה שלא התכוונתם אליה הוא ההבדל בין עוזר שקורא את הצנרת שלכם לבין עוזר שיכול לשכתב אותה.
03
חזרה ב-Routines, לחצו על החשבון שלכם בתחתית סרגל הצד ובחרו Settings. פתחו את הקטע Assistant, אחר כך את הלשונית Connections, גללו אל MCP Servers ולחצו על Add MCP Server.
04
הטופס נפתח במצב URL (SSE/HTTP). העבירו אותו ל-Command (stdio): השרת הזה הוא פקודה, לא כתובת אינטרנט. Name: HubSpot. Command: npx. Arguments: -y @hubspot/mcp-server, בדיוק שלוש המילים האלה.
05
ב-Environment Variables הוסיפו שורה אחת: PRIVATE_APP_ACCESS_TOKEN מימין לשם, וטוקן הגישה של ה-Private App כערך. לחצו Test Connection: Routines מפעילה את השרת בלי לשמור אותו ומדווחת כמה כלים היא מצאה, עשרים ואחד עבור השרת הזה. אחר כך לחצו Add Server.
06
הכלים עובדים בצ׳אט מיד. כדי לתת לשגרה מתוזמנת להשתמש בהם, פתחו את השגרה, מצאו את הכרטיס Tools & connections וסמנו את השרת תחת Apps.
רעיונות לשגרות
אחרי שהשרת מחובר, שגרה מתוזמנת יכולה להשתמש בכלים שלו גם כשאתם לא מול המסך. העתיקו פרומפט, הדביקו אותו ב-Routines ובחרו שעה. הפרומפטים כתובים באנגלית בכוונה, מדביקים אותם בדיוק כפי שהם.
Every Monday at 8:00, list the open deals in my HubSpot pipeline that are due to close this month, note which ones have had no activity in the last ten days, and save the list as pipeline-monday.md in my Notes folder.
Every Friday at 15:00, search HubSpot for contacts whose last activity date is more than 45 days ago and who are still marked as an open lead, and write them to stale-contacts.md with the owner name and the last thing that happened.
Every weekday at 18:00, list the HubSpot contacts and companies created today, summarise where each one came from in one line, and append the summary to new-business.md so I have a running log.
פתרון תקלות
שגיאות אמיתיות שנלכדו בריצת האימות, מודפסות בדיוק כפי שהשרת החזיר אותן.
מה רואים
Error: HubSpot access token is required. Set PRIVATE_APP_ACCESS_TOKEN in your environment variables and retry.
הפתרון
המשתנה PRIVATE_APP_ACCESS_TOKEN חסר או ריק. גרמנו לכך פעמיים בכוונה, פעם בלי המשתנה כלל ופעם עם מחרוזת ריקה, ובשני המקרים Node הדפיס את השורה הזו בתוך חריגה לא מטופלת עם עקבות מחסנית ויצא עם קוד 1. זו קריסה ולא הודעת הפעלה מסודרת מפני שכל אובייקטי הכלים נבנים ברגע טעינת הקובץ, והראשון שבהם דורש טוקן. לקוחות MCP רבים יגידו לכם רק שהשרת נכשל בהפעלה, ולכן אם אתם רואים רק נקודה אדומה, בדקו קודם את הטוקן. ב-Claude Desktop וב-Cursor מקומו בבלוק ה-env; ב-Routines מקומו ב-Environment Variables, לא ב-Arguments.
מה רואים
Error listing HubSpot contacts: HubSpot API Error: 401 Unauthorized - {"status":"error","message":"Authentication credentials not found. This API supports OAuth 2.0 authentication and you can find more details at https://developers.hubspot.com/docs/methods/auth/oauth-overview","correlationId":"019fc5ff-81c7-760d-b707-6c0883655ba4","category":"INVALID_AUTHENTICATION"}הפתרון
זו התשובה של HubSpot, לא של השרת: השרת העביר את הטוקן שלכם ו-HubSpot דחתה אותו. זה בדיוק מה שהריצה שלנו הפיקה, מפני שהפעלנו את השרת עם טוקן מדומה בכוונה. בדקו שהעתקתם את טוקן הגישה של ה-Private App ולא את ה-client secret, שה-Private App עדיין פעילה, ושהטוקן לא הוחלף. אותה שגיאת 401 מופיעה גם כשהטוקן אמיתי אבל ל-Private App חסרה ההרשאה לסוג הרשומה שביקשתם.
מה רואים
Error retrieving token, owner, and account information. HubSpot API Error: 404 Not Found - {}
הפתרון
הכלי hubspot-get-user-details הוא זה שהשרת רוצה שיקראו לו ראשון, והוא מאתר את הטוקן שלכם לפי ערכו. לטוקן שאינו קיים אין רשומה למצוא, ולכן HubSpot מחזירה 404 עם גוף ריק במקום 401. קראו את זה כטוקן שגוי, לא כחשבון חסר. לכדנו את השגיאה הזו עם הטוקן המדומה לפני שהחלפנו את קריאת הדוגמה לשליפת רשומות, שמפיקה את שגיאת ה-401 הברורה יותר שלמעלה.
מה רואים
Unknown tool: hubspot-list-contacts
הפתרון
אין כאן כלי נפרד לכל סוג רשומה. הכל עובר דרך הצמד הכללי, hubspot-list-objects ו-hubspot-search-objects, עם ארגומנט objectType כמו contacts, companies, deals או tickets. אם העוזר שלכם ממשיך לנחש, הדביקו פעם אחת את טבלת הכלים מהעמוד הזה לתוך השיחה.
מה רואים
Error: [
{
"code": "invalid_type",
"expected": "string",
"received": "undefined",
"path": [
"objectType"
],
"message": "Required"
}
]הפתרון
השרת בודק את הארגומנטים מקומית לפני שהוא פונה ל-HubSpot, ובלוק ה-JSON הזה הוא דוח הבדיקה שלו: השדה path מציין את הארגומנט, והשדה message אומר מה היה שגוי. כאן הושמט objectType מהקריאה ל-hubspot-list-objects. שום דבר לא נשלח ל-HubSpot, ולכן שום דבר לא השתנה.
הפתרון
הפקודה npx שייכת ל-Node.js. אם Node לא מותקן על ה-Mac, כל לקוח בעמוד הזה ייכשל בשלב ההפעלה עוד לפני שהשרת מספיק לומר משהו. התקינו Node מ-nodejs.org, הפעילו מחדש את לקוח ה-MCP ונסו שוב.
שאלות נפוצות
זו תוכנה קטנה שיושבת בין עוזר AI לבין חשבון ה-HubSpot שלכם ומדברת ב-Model Context Protocol. אחרי החיבור, עוזר כמו Claude יכול להציג ולחפש רשומות CRM, ליצור ולעדכן אותן באצוות, לקרוא ולערוך מאפיינים, לקשר רשומות זו לזו, לתעד שיחות, מיילים, הערות ומשימות ולקרוא את תהליכי העבודה שלכם. החבילה שבעמוד הזה רצה כתהליך מקומי על ה-Mac שלכם ומדברת עם אפליקציית ה-AI על גבי stdio. [1][4]
שלושה דברים שונים נושאים את השם הזה, ובחירה שגויה מבזבזת אחר צהריים שלם. חבילת ה-npm שבעמוד הזה, @hubspot/mcp-server, היא זו שמקבלת טוקן גישה של Private App ורצה מקומית; לזה מתכוונים כמעט כל המדריכים. ל-HubSpot יש גם שרת מתארח בכתובת mcp.hubspot.com שמתחבר דרך OAuth ומכסה גם אובייקטים שיווקיים כמו קמפיינים, דפי נחיתה ופוסטים בבלוג, לא רק את ה-CRM. וכלי ה-CLI של HubSpot מתקין שרת שלישי בפקודה hs mcp setup, שנועד לפיתוח אפליקציות ל-HubSpot ולא לקריאת ה-CRM שלכם. עמוד התיעוד הרשמי של HubSpot מתאר היום רק את שני האחרונים, ולכן הקישור מתוך ה-README של החבילה נראה כאילו הוא מפנה למוצר הלא נכון. הוא אכן מפנה. ויש גם את החקיינים: ב-npm יש לפחות שמונה חבילות MCP לא רשמיות ל-HubSpot עם שמות כמעט זהים, והגדולה שבהן מושכת כ-490 הורדות בשבוע מול 16,188 של הרשמית. אם שם החבילה אינו בדיוק @hubspot/mcp-server, היא לא מ-HubSpot. [8][1][3]
השרת הרץ חושף 21 כלים: רשומות (hubspot-list-objects, hubspot-search-objects, hubspot-batch-read-objects, hubspot-batch-create-objects, hubspot-batch-update-objects), מאפיינים וסכמות (hubspot-list-properties, hubspot-get-property, hubspot-create-property, hubspot-update-property, hubspot-get-schemas), קישורים בין רשומות (hubspot-list-associations, hubspot-get-association-definitions, hubspot-batch-create-associations), פעילות (hubspot-create-engagement, hubspot-get-engagement, hubspot-update-engagement), תהליכי עבודה (hubspot-list-workflows, hubspot-get-workflow) ותשתית חשבון (hubspot-get-user-details, hubspot-get-link, hubspot-generate-feedback-link). הטבלה למעלה היא פלט ה-tools/list החי, מילה במילה.
כן לשניהם. אתם צריכים חשבון HubSpot ובתוכו Private App, שנוצרת תחת Settings, אחר כך Integrations, אחר כך Private Apps. ה-Private App מנפיקה לכם טוקן גישה, וזה אישור הגישה היחיד שהשרת מקבל, במשתנה סביבה בשם PRIVATE_APP_ACCESS_TOKEN. הקוד שנשלח בחבילה מקבל גם HUBSPOT_ACCESS_TOKEN כחלופה לא מתועדת, ששמורה לתאימות לאחור. יצירת Private App עשויה לדרוש הרשאת מנהל בחשבון ה-HubSpot שלכם. [1][4]
לתשובה הכנה יש שני חצאים. מצד האמון: החבילה מפורסמת על ידי HubSpot עצמה, על ידי מתחזקים עם כתובות hubspot.com, והיא ברישיון MIT. מצד התחזוקה: המאגר הציבורי בכתובת github.com/HubSpot/mcp-server אינו מכיל קבצים כלל, כך שאיש מחוץ ל-HubSpot לא יכול לקרוא את הקוד בלי לפרוס את חבילת ה-npm, גרסה 0.4.0 עומדת במקום מאז יוני 2025, תשע תקלות ממשתמשים חיצוניים פתוחות, ו-HubSpot מגדירה את כל המוצר כ-beta במסגרת תוכנית ה-Early Adopter שלה. הסיכון המעשי הוא בכל זאת היקף ההרשאות: חמישה מתוך 21 הכלים כותבים ל-CRM שלכם, לכן תנו ל-Private App הרשאות קריאה תחילה והוסיפו הרשאות כתיבה רק כשמשימה באמת דורשת זאת. [5][6][7][1][4]
מפני שספירת כלים לא נוגעת ב-HubSpot כלל. השרת רק בודק שמשתנה הטוקן אינו ריק, עולה, ועונה ל-tools/list מתוך הקוד שלו עצמו, כך שערך מדומה מספיק כדי לגרום לו לתאר את עצמו בכנות. ברגע שכלי באמת רץ, הבקשה יוצאת ל-HubSpot והערך המדומה נחשף, וזו שגיאת ה-401 בקריאת הדוגמה למעלה. לכן העמוד הזה נושא את התג הכתום: טבלת הכלים היא לכידה אמיתית, וקריאה מאומתת עדיין ממתינה לאישורי גישה.
כל לקוח MCP שמסוגל להפעיל שרת stdio מקומי ולהעביר לו משתנה סביבה: Claude Desktop, Claude Code, Cursor ו-Routines כולם יכולים, וההגדרה המדויקת לכל אחד נמצאת למעלה. השרת עצמו זהה בכל לקוח; רק המקום שבו מדביקים את ההגדרה משתנה. בחבילה הזו אין תעבורת HTTP או מרוחקת, ולכן כתובת מתארחת אינה אפשרות כאן. [4][9][10][11]
מקורות
כל מה שבעמוד הזה שלא ראינו בעצמנו בריצה מקושר כאן, עם התאריך שבו קראנו אותו. לגבי השאר, הריצה עצמה היא הקבלה.
[1]
Latest version 0.4.0, published 2025-06-18 and unchanged since. Publisher jedeen-hs, with 30 further maintainer accounts on hubspot.com addresses. The embedded README carries the Claude Desktop and Cursor configs, the PRIVATE_APP_ACCESS_TOKEN variable and the Early Adopter Program beta notice.
[2]
[3]
The official package at 16,188 weekly downloads against @mindstone/mcp-server-hubspot at 490, the largest of eight unofficial lookalikes.
[4]
Read, not executed: confirms the stdio transport, the PRIVATE_APP_ACCESS_TOKEN check with HUBSPOT_ACCESS_TOKEN as a backwards-compatible fallback, the 401 wrapping, and the MIT LICENSE file.
[5]
5 stars, size 0, not archived, and a last push timestamp identical to the creation timestamp of 2025-04-25. The API reports no license for the repository.
[6]
Answers "This repository is empty": there is no public source to browse.
[7]
9 open issues from outside users filed 2026-05-22 to 2026-05-26, including a prepare script that wipes the shipped dist folder and prompts/list returning empty.
[8]
The page the npm README links to. It documents the hosted server at mcp.hubspot.com over OAuth and the CLI-installed developer server, and does not mention this npm package or private app tokens.
[9]
The claude mcp add syntax for local stdio servers with environment variables, used to derive the command above because HubSpot documents no Claude Code setup.
[10]
The mcp.json shape, including the env block, and the project and global file locations. The README's own Cursor link now redirects away from the docs.
[11]
How Routines runs one-click OAuth connectors and any MCP server.
העמוד הזה מתאר את HubSpot כפי שהתנהג בריצה מתוארכת אחת על Mac אחד. גרסאות משתנות: אם משהו כאן כבר לא תואם למה שאתם רואים, תאריך הלכידה בראש העמוד אומר בן כמה הצילום.
מאחורי המדריך הזה
Routines, האפליקציה שמאחורי המדריך הזה, מריצה שרתי MCP כמו זה בלי טרמינל: כך עובדים המחברים. התדריכים שהיא כותבת נשארים קובצי markdown על ה-Mac שלכם, ואין חשבון ענן לשלם. להורדת Routines