logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

cdata-hubspot-mcp-gateway

Provides LLMs with live, read-only analytical access to HubSpot data through a Model Context Protocol (MCP) interface, abstracting away the need for direct SQL interaction. This implementation leverages the CData JDBC Driver for HubSpot to establish the underlying data connection and expose resources via MCP.

Author

cdata-hubspot-mcp-gateway logo

CDataSoftware

MIT License

Quick Info

GitHub GitHub Stars 0
NPM Weekly Downloads 0
Tools 1
Last Updated 2026-02-19

Tags

hubspotcdatasoftwarejdbccdatasoftware hubspothubspot datahubspot information

CData HubSpot MCP Service Endpoint

:warning: Read-Only Restriction: This specific deployment offers strictly read-only data access capabilities. For a complete solution encompassing read, write, update, and delete operations, alongside streamlined setup, please investigate the complimentary CData MCP Server for HubSpot (Beta release).

Core Functionality

This read-only MCP Server was engineered to enable Large Language Models (LLMs), such as Claude Desktop, to query active data resident within HubSpot. This capability is powered by the CData JDBC Driver for HubSpot.

The CData JDBC Driver functions by presenting HubSpot entities in a familiar relational SQL structure. Our server encapsulates this driver, making HubSpot information accessible via a straightforward MCP layer. Consequently, LLMs can retrieve contemporary data by phrasing inquiries in natural language, completely obviating the requirement for writing SQL statements.

Implementation Prerequisites & Steps

  1. Acquire Source Code: bash git clone https://github.com/cdatasoftware/hubspot-mcp-server-by-cdata.git cd hubspot-mcp-server-by-cdata

  2. Compile the Server Application: bash mvn clean install

    This build process generates the executable JAR: CDataMCP-jar-with-dependencies.jar 3. Driver Acquisition: Secure the CData JDBC Driver package for HubSpot from: https://www.cdata.com/drivers/hubspot/download/jdbc 4. Driver Licensing: Finalize the licensing for the JDBC driver: * Locate the driver's installation directory (typically under lib): * (Windows) C:\Program Files\CData\CData JDBC Driver for HubSpot\ * (Mac/Linux) /Applications/CData JDBC Driver for HubSpot/ * Execute the licensing utility: bash java -jar cdata.jdbc.hubspot.jar --license

    • Input required details (Name, Email) and use "TRIAL" or your valid license key.
    • Connection String Definition: Configure the connection parameters using the driver utility:
    • Invoke the Connection String helper: bash java -jar cdata.jdbc.hubspot.jar

    • Define the connection parameters (e.g., OAuth flow for HubSpot) and validate connectivity via "Test Connection". Authentication may require a browser redirect for OAuth flows.

    • Once validated, save the resulting JDBC connection string.
    • Configuration File Creation (.prp): Generate a properties file (e.g., hubspot.prp) detailing the server mapping. Ensure DriverPath points to the actual JAR location.
    • Key Definitions: Prefix, ServerName, ServerVersion, DriverPath, DriverClass, JdbcUrl, Tables (optional, for subsetting). env Prefix=hubspot ServerName=CDataHubSpot ServerVersion=1.0 DriverPath=PATH\TO\cdata.jdbc.hubspot.jar DriverClass=cdata.jdbc.hubspot.HubSpotDriver JdbcUrl=jdbc:hubspot:InitiateOAuth=GETANDREFRESH; Tables=

Integrating with LLM Clients (e.g., Claude Desktop)

  1. Client Configuration File Update: Modify the client's configuration file (e.g., claude_desktop_config.json) to register the new MCP endpoint. Append the necessary entry to the mcpServers section.

    Windows Launch Configuration Example:

    { "mcpServers": { "{classname_dash}": { "command": "PATH\TO\java.exe", "args": [ "-jar", "PATH\TO\CDataMCP-jar-with-dependencies.jar", "PATH\TO\hubspot.prp" ] }, ... } }

    Linux/Mac Launch Configuration Example:

    { "mcpServers": { "{classname_dash}": { "command": "/PATH/TO/java", "args": [ "-jar", "/PATH/TO/CDataMCP-jar-with-dependencies.jar", "/PATH/TO/hubspot.prp" ] }, ... } }

    • Deployment: If the configuration file needs placement (e.g., into Claude's application directory): Windows Deployment: bash cp C:\PATH\TO\claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json

    Linux/Mac Deployment: bash cp /PATH/TO/claude_desktop_config.json /Users/{user}/Library/Application\ Support/Claude/claude_desktop_config.json

  2. Client Activation: Restart or refresh the LLM client application to recognize the newly defined MCP service.

Note: A complete application shutdown and restart is often required for the client environment to correctly load new MCP definitions.

Direct Server Execution

Execute the MCP service independently using the following command. Note that it utilizes standard I/O (stdio) for communication, necessitating that the calling client runs on the same host machine. bash java -jar /PATH/TO/CDataMCP-jar-with-dependencies.jar /PATH/TO/Salesforce.prp

Constraint: Due to stdio reliance, this mode is restricted to clients operating on the identical host as the server process.

Operational Usage

Upon successful integration, the AI client gains the ability to interact with the underlying data store via its exposed analytical tools. Explicit tool invocation is usually unnecessary; simply pose data-centric questions. Examples include: * "Determine the relationship metrics between successful sales deals and the client's primary industry segment." * "Enumerate the count of pending support cases within the designated 'SUPPORT' operational group." * "Summarize my scheduled calendar entries for the current day."

Available Tools & Function Signatures

Tool names below use {servername} as the identifier defined in the configuration file (e.g., {classname_dash}). * {servername}_get_tables: Fetches the inventory of accessible data structures. Follow up with {servername}_get_columns for schema details. Output is delivered in CSV format (header row included). * {servername}_get_columns: Retrieves the field definitions for a specified table. Cross-reference with {servername}_get_tables for discoverability. Output is delivered in CSV format (header row included). * {servername}_run_query: Executes an arbitrary SQL SELECT statement against the data source.

JSON-RPC Interaction Schemas

For scenarios involving direct scripting of server interaction rather than utilizing an integrated AI interface, utilize these JSON-RPC 2.0 payloads:

Querying Available Tables (hubspot_get_tables)

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "hubspot_get_tables", "arguments": {} } }

Inspecting Table Fields (hubspot_get_columns)

{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "hubspot_get_columns", "arguments": { "table": "Account" } } }

Executing Data Retrieval (hubspot_run_query)

{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "hubspot_run_query", "arguments": { "sql": "SELECT * FROM [Account] WHERE [IsDeleted] = true" } } }

Debugging Guidance

  1. Visibility Issue: If the CData MCP Server fails to appear in the client interface, ensure the client application has been completely terminated (check Task Manager/Activity Monitor).
  2. Data Retrieval Failure: Verify the connection parameters. Confirm the JDBC URL copied from the Connection String builder is accurately reflected in the .prp configuration file.
  3. Connectivity Errors: If linking to the underlying HubSpot system fails, engage the CData Support Team.
  4. General Feedback/MCP Issues: For service-level problems or enhancement suggestions, participate in the CData Community.

Licensing Terms

This MCP server package is distributed under the permissive MIT License. Users are granted rights to employ, modify, and disseminate the software, contingent upon adherence to the stipulations defined in the MIT License (refer to the ./LICENSE file in the repository).

Comprehensive Connector Support Index

(The extensive table listing all supported sources remains unchanged, demonstrating the breadth of data sources accessible via the CData ecosystem.)

AccessAct CRMAct-OnActive Directory
ActiveCampaignAcumaticaAdobe AnalyticsAdobe Commerce
ADPAirtableAlloyDBAmazon Athena
Amazon DynamoDBAmazon MarketplaceAmazon S3Asana
Authorize.NetAvalara AvaTaxAvroAzure Active Directory
Azure Analysis ServicesAzure Data CatalogAzure Data Lake StorageAzure DevOps
Azure SynapseAzure TableBasecampBigCommerce
BigQueryBing AdsBing SearchBitbucket
Blackbaud FE NXTBoxBullhorn CRMCassandra
CertiniaCloudantCockroachDBConfluence
Cosmos DBCouchbaseCouchDBCSV
CventDatabricksDB2DocuSign
DropboxDynamics 365Dynamics 365 Business CentralDynamics CRM
Dynamics GPDynamics NAVeBayeBay Analytics
ElasticsearchEmailEnterpriseDBEpicor Kinetic
Exact OnlineExcelExcel OnlineFacebook
Facebook AdsFHIRFreshdeskFTP
GitHubGmailGoogle Ad ManagerGoogle Ads
Google AnalyticsGoogle CalendarGoogle Campaign Manager 360Google Cloud Storage
Google ContactsGoogle Data CatalogGoogle DirectoryGoogle Drive
Google SearchGoogle SheetsGoogle SpannerGraphQL
GreenhouseGreenplumHarperDBHBase
HCL DominoHDFSHighriseHive
HubDBHubSpotIBM Cloud Data EngineIBM Cloud Object Storage
IBM InformixImpalaInstagramJDBC-ODBC Bridge
JiraJira AssetsJira Service ManagementJSON
KafkaKintoneLDAPLinkedIn
LinkedIn AdsMailChimpMariaDBMarketo
MarkLogicMicrosoft DataverseMicrosoft Entra IDMicrosoft Exchange
Microsoft OneDriveMicrosoft PlannerMicrosoft ProjectMicrosoft Teams
Monday.comMongoDBMYOB AccountRightMySQL
nCinoNeo4JNetSuiteOData
OdooOffice 365OktaOneNote
OracleOracle EloquaOracle Financials CloudOracle HCM Cloud
Oracle SalesOracle SCMOracle Service CloudOutreach.io
ParquetPaylocityPayPalPhoenix
PingOnePinterestPipedrivePostgreSQL
Power BI XMLAPrestoQuickbaseQuickBooks
QuickBooks OnlineQuickBooks TimeRaisers Edge NXTReckon
Reckon Accounts HostedRedisRedshiftREST
RSSSage 200Sage 300Sage 50 UK
Sage Cloud AccountingSage IntacctSalesforceSalesforce Data Cloud
Salesforce Financial Service CloudSalesforce MarketingSalesforce Marketing Cloud Account EngagementSalesforce Pardot
SalesloftSAPSAP Ariba ProcurementSAP Ariba Source
SAP Business OneSAP BusinessObjects BISAP ByDesignSAP Concur
SAP FieldglassSAP HANASAP HANA XS AdvancedSAP Hybris C4C
SAP Netweaver GatewaySAP SuccessFactorsSAS Data SetsSAS xpt
SendGridServiceNowSFTPSharePoint
SharePoint Excel ServicesShipStationShopifySingleStore
SlackSmartsheetSnapchat AdsSnowflake
SparkSplunkSQL Analysis ServicesSQL Server
SquareStripeSugar CRMSuiteCRM
SurveyMonkeySybaseSybase IQTableau CRM Analytics
TallyTaxJarTeradataTier1
TigerGraphTrelloTrinoTwilio
TwitterTwitter AdsVeeva CRMVeeva Vault
Wave FinancialWooCommerceWordPressWorkday
xBaseXeroXMLYouTube Analytics
ZendeskZoho BooksZoho CreatorZoho CRM
Zoho InventoryZoho ProjectsZuora... Dozens More

Reference Context: XMLHttpRequest (XHR)

XMLHttpRequest (XHR) constitutes an API implemented as a JavaScript object designed to facilitate HTTP requests between a web browser and a server. This object's functionalities allow browser-based applications to initiate server communications subsequent to the initial page load and receive subsequent data. XHR is a fundamental component of Ajax programming paradigms. Prior to its widespread adoption, server interaction relied primarily on standard hyperlink navigation and form submissions, often resulting in a complete page reload.

== Historical Development == The conceptual foundation for XMLHttpRequest emerged around 2000, conceived by developers at Microsoft Outlook. This concept was subsequently integrated into Internet Explorer 5 (released in 1999). However, the initial invocation syntax did not utilize the XMLHttpRequest identifier; instead, developers employed COM object instantiation: ActiveXObject("Msxml2.XMLHTTP") and ActiveXObject("Microsoft.XMLHTTP"). By the time Internet Explorer 7 (2006) was released, universal support for the standardized XMLHttpRequest identifier was achieved across major browsers, including Mozilla's Gecko engine (2002), Safari 1.2 (2004), and Opera 8.0 (2005).

Standardization Trajectory ===

The World Wide Web Consortium (W3C) published the initial Working Draft specification for the XMLHttpRequest object on April 5, 2006. A Level 2 specification followed on February 25, 2008, introducing features like progress monitoring, support for cross-site requests, and enhanced byte stream handling. By late 2011, the Level 2 enhancements were consolidated back into the primary specification. Development stewardship transitioned to the WHATWG at the close of 2012, which now maintains the living document utilizing Web IDL.

== Standard Request Workflow == Executing a server request via XMLHttpRequest typically involves a sequence of programming steps:

  1. Instantiation: Create an instance of the XMLHttpRequest object using its constructor.
  2. Initialization (open): Invoke the open method to configure the request method (GET, POST, etc.), specify the target URI, and designate the operation as synchronous or asynchronous.
  3. Asynchronous Listener Setup: For asynchronous operations, establish an event handler function to manage state transitions upon response reception.
  4. Transmission (send): Trigger the actual server request by calling the send method, optionally passing data payload to be uploaded.
  5. Response Processing: Monitor state changes within the event listener. Upon reaching state 4 ("done"), the retrieved data is typically accessible in the responseText property.

Beyond these core actions, XHR offers controls for request modification (e.g., adding custom headers) and response handling (e.g., parsing JSON immediately or processing data streams incrementally). The request can also be halted prematurely or subjected to a timeout constraint.

== Inter-Domain Communication ==

In the early architecture of the World Wide Web, constraints were placed that restricted scripts loaded from one domain from making direct requests to a different domain, a measure implemented for security reasons...

See Also

`