Skip to content

CDataSoftware/cdata-jdbc-mcp-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cdata-jdbc-mcp-server (read-only)

Our generic Model Context Protocol (MCP) Server for CData JDBC Drivers (read-only)

Note: This project builds a read-only MCP server. For full read, write, update, delete, and action capabilities across hundreds of sources — plus remote MCP access, semantic context, and enterprise governance (SSO, RBAC, audit trails) — check out CData Connect AI.

Purpose

We created this read-only MCP Server to allow LLMs (like Claude Desktop) to query live data from hundreds of sources (listed below) supported by CData JDBC Drivers.

CData JDBC Drivers connect to SaaS apps, NoSQL stores, and APIs by exposing them as relational SQL models.

This server wraps those drivers and makes their data available through a simple MCP interface, so LLMs can retrieve live information by asking natural language questions — no SQL required.

Setup Guide

In the guide below, {data source} refers to the back-end data source (e.g. Salesforce). For code snippets and commands, Salesforce is used as an example, but the patterns apply to any of our JDBC Drivers.

  1. Clone the repository:
    git clone https://github.com/cdatasoftware/cdata-jdbc-mcp-server.git
    cd cdata-jdbc-mcp-server
  2. Build the server:
    mvn clean install
    This creates the JAR file: CDataMCP-jar-with-dependencies.jar
  3. Download and install a CData JDBC Driver: https://www.cdata.com/jdbc
  4. License the CData JDBC Driver (Salesforce as an example):
    • Navigate to the lib folder in the installation directory, typically:
      • (Windows) C:\Program Files\CData\CData JDBC Driver for {data source}\
      • (Mac/Linux) /Applications/CData JDBC Driver for {data source}/
    • Run the command java -jar cdata.jdbc.salesforce.jar --license
    • Enter your name, email, and "TRIAL" (or your license key).
  5. Configure your connection to the data source (Salesforce as an example):
    • Run the command java -jar cdata.jdbc.salesforce.jar to open the Connection String utility.

    • Configure the connection string and click "Test Connection"

      Note: If the data source uses OAuth, you will need to authenticate in your browser.

    • Once successful, copy the connection string for use later.

  6. Create a .prp file for your JDBC connection (e.g. Salesforce.prp) using the following properties and format:
    • Prefix - a prefix to be used for the tools exposed
    • DriverPath - the full path to the JAR file for your JDBC driver
    • DriverClass - the name of the JDBC Driver Class (e.g. cdata.jdbc.salesforce.SalesforceDriver)
    • JdbcUrl - the JDBC connection string to use with the CData JDBC Driver to connect to your data (copied from above)
    • Tables - leave blank to access all data, otherwise you can explicitly declare the tables you wish to create access for
    • ServerName (optional) - a name for your server; defaults to the Prefix value if omitted
    • ServerVersion (optional) - a version for your server; defaults to 1.0 if omitted
      Prefix=salesforce
      DriverPath=PATH\TO\cdata.jdbc.salesforce.jar
      DriverClass=cdata.jdbc.salesforce.SalesforceDriver
      JdbcUrl=jdbc:salesforce:InitiateOAuth=GETANDREFRESH;
      Tables=

Using the Server with an MCP Client

Because the server runs locally over stdio, it works with any desktop MCP client that launches local servers — Claude Desktop, Cursor, Windsurf, Cline, VS Code, and others. In every case you point the client at your java executable and pass the assembled JAR and your .prp file as arguments.

1. Add the server to your client's config

Most clients use the same mcpServers schema. Add the entry below to your client's MCP config file (see config file locations for where each client keeps it). If the file already exists, add this entry alongside any existing servers.

Windows

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

Linux/Mac

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

VS Code uses a slightly different schema — a top-level servers object with an explicit "type": "stdio" — instead of mcpServers:

{
  "servers": {
    "salesforce": {
      "type": "stdio",
      "command": "/PATH/TO/java",
      "args": [
        "-jar",
        "/PATH/TO/CDataMCP-jar-with-dependencies.jar",
        "/PATH/TO/Salesforce.prp"
      ]
    }
  }
}

2. Config file locations

Client Config file Schema
Claude Desktop Windows: %APPDATA%\Claude\claude_desktop_config.json
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
mcpServers
Cursor Global: ~/.cursor/mcp.json
Project: .cursor/mcp.json
mcpServers
Windsurf ~/.codeium/windsurf/mcp_config.json mcpServers
Cline Open the Cline panel → MCP Servers icon → ConfigureConfigure MCP Servers (edits cline_mcp_settings.json) mcpServers
VS Code Workspace: .vscode/mcp.json
User: run the MCP: Open User Configuration command
servers (see note above)

3. Run or refresh your client

Start the client, or reload/refresh it if it was already running, so it picks up the new server.

Note: Some clients (e.g. Claude Desktop) must be fully quit and re-opened — not just closed to the tray — before the MCP server appears. On Windows use the Task Manager; on Mac use the Activity Monitor.

Running the Server

  1. Run the following command to run the MCP Server on its own:
    java -jar /PATH/TO/CDataMCP-jar-with-dependencies.jar /PATH/TO/Salesforce.prp

Note: The server uses stdio so can only be used with clients that run on the same machine as the server.

Usage Details

Once the MCP Server is configured, the AI client will be able to use the built-in tools to read the underlying data (this server is read-only). In general, you do not need to call the tools explicitly. Simply ask the client to answer questions about the underlying data system. For example:

  • "What is the correlation between my closed won opportunities and the account industry?"
  • "How many open tickets do I have in the SUPPORT project?"
  • "Can you tell me what calendar events I have today?"

The list of tools available and their descriptions follow:

Tools & Descriptions

In the definitions below, {servername} refers to the name of the MCP Server in the config file (e.g. salesforce above).

  • {servername}_get_tables - Retrieves a list of tables available in the data source. Use the {servername}_get_columns tool to list available columns on a table. The output of the tool will be returned in CSV format, with the first line containing column headers.
  • {servername}_get_columns - Retrieves a list of columns for a table. Use the {servername}_get_tables tool to get a list of available tables. The output of the tool will be returned in CSV format, with the first line containing column headers.
  • {servername}_run_query - Execute a SQL SELECT query

JSON-RPC Request Examples

If you are scripting out the requests sent to the MCP Server instead of using an AI Client (e.g. Claude), then you can refer to the JSON payload examples below – following the JSON-RPC 2.0 specification - when calling the available tools.

{servername}_get_tables

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

{servername}_get_columns

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

{servername}_run_query

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

Troubleshooting

  1. If you cannot see your CData MCP Server in your client, be sure that you have fully quit and re-opened it. Some clients (e.g. Claude Desktop) keep running in the background — on Windows use the Task Manager, on Mac use the Activity Monitor to confirm the process has exited.
  2. If your client is unable to retrieve data, be sure that you have configured your connection properly. Use the Connection String builder to create the connection string (see above) and copy the connection string into the property (.prp) file.
  3. If you are having trouble connecting to your data source, contact the CData Support Team.
  4. If you are having trouble using the MCP server, or have any other feedback, join the CData Community.

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

Supported Sources

AcceloAccessAct CRMAct-On
Active DirectoryActiveCampaignAcumaticaAdobe Analytics
Adobe CommerceAdobe Experience ManagerAdobe TargetADP
AdRollAfterShipAgileCRMAha!
AircallAirtableAlloyDBAmazon Athena
Amazon DynamoDBAmazon MarketplaceAmazon S3Amplitude
AnaplanApache DorisApifyApollo
AsanaAttioAuth0Authorize.Net
AutopilotAvalara AvaTaxAvazaAvro
AweberAzure Analysis ServicesAzure Data CatalogAzure Data Lake Storage
Azure DevOpsAzure SynapseAzure TableBambooHR
BannerbearBasecampBeeminderBenchmarkEmail
BigCommerceBigQueryBillsbyBitbucket
BitlyBlackbaud FE NXTBoxBrex
Bright DataBrowserlessBugsnagBullhorn CRM
CalendlyCampaignerCampaignMonitorCapsuleCRM
CassandraCertiniaChargebeeChargeOver
ChartMogulCircleCIClariClickTime
ClickUpClioClockifyClose
CloudantCloudConvertCloudflareCockroachDB
CodaCodatCohereCoinbase
ConfluenceConstantContactContentfulConvertAPI
ConvertKitCopperCosmos DBCouchbase
CouchDBCSVCustomer.ioCvent
DatabricksDatadogDB2Deel
DelightedDemioDiscordDiscourse
DocuSignDotmailerDriftDrip
DropboxDynamics 365Dynamics 365 Business CentralDynamics CRM
Dynamics NAVeBayeBay AnalyticsEgnyte
ElasticsearchElevenLabsElorusEmail
EmailOctopusEnterpriseDBEpicor KineticEventbrite
EverhourExaExact OnlineExcel
Excel OnlineFacebookFacebook AdsFactorial
FHIRFigshareFloatFlowlu
FormSiteFoursquareFreeAgentFreshBooks
FreshdeskFreshsalesFreshserviceFreshteam
FrontFTPGetResponseGitHub
GitLabGmailGongGoogle Ad Manager
Google AdsGoogle AnalyticsGoogle CalendarGoogle Campaign Manager 360
Google Cloud StorageGoogle ContactsGoogle DirectoryGoogle Drive
Google FormsGoogle SearchGoogle SheetsGoogle Spanner
Google TasksGoogle TranslateGorgiasGrafana
GraphQLGreenhouseGreenplumGumroad
GuruHacker NewsHarvestHBase
HCL DominoHDFSHelloSignHelpscout
HighriseHiveHubDBHubSpot
HubstaffHugging FaceHumanityIBM Cloud Object Storage
IBM InformixiContactImpalaInsightly
InstagramInstantlyIntercomInvoiced
JDBC-ODBC BridgeJiraJira AssetsJobNimbus
JodooJotFormJSONJumpseller
KafkaKeapKintoneKlaviyo
KlipfolioLakebaseLandbotLaunchDarkly
LDAPLeadDeskLightSpeedRetailLinkedIn
LinkedIn AdsLionDeskMailChimpMailerLite
MailerSendMailgunMailjetMariaDB
MarketoMarkLogicMessageBirdMicrosoft Ads
Microsoft DataverseMicrosoft Entra IDMicrosoft ExchangeMicrosoft OneDrive
Microsoft PlannerMicrosoft TeamsMiroMissive
Mistral AIMixpanelMoceanMode
Monday.comMongoDBMoosendMouseflow
MYOB AccountRightMySQLNASAnCino
Neo4JNethuntNetSuiteNotion
NucliaODataOdooOffice 365
OktaOmnisendOneNoteOnePageCrm
OnfleetOntraportOpenWeatherMapOpsgenie
OptimizelyOracleOracle EloquaOracle Eloqua Reporting
Oracle Financials CloudOracle HCM CloudOracle SalesOracle SCM
Oracle Service CloudOutlookOutreach.ioPabblySubscriptions
PaddlePagerDutyParallelParquet
PaylocityPaymoPayPalPDFMonkey
PerigonPerplexityPhantomBusterPhoenix
PineconePingdomPingOnePinterest
PipedrivePipeline CRMPipeliner CRMPivotalTracker
PlacidPlanioPolarTeamProPostgreSQL
PostmarkPower BI XMLAPrestoPrintful
PrintifyProcoreProductboardPushbullet
QuadernoQualarooQuickbaseQuickBooks
QuickBooks OnlineQuickBooks TimeRabbitMQRaisers Edge NXT
RebillyReckonReckon Accounts HostedRecurly
RedisRedshiftReply.ioREST
RetentlyRootlyRSSSage 200
Sage 300Sage Cloud AccountingSage IntacctSageHR
SalesforceSalesforce CRM AnalyticsSalesforce Data 360Salesforce Financial Service Cloud
Salesforce MarketingSalesforce Marketing Cloud Account EngagementSalesforce PardotSalesloft
SamanageSAPSAP Ariba ProcurementSAP Ariba Source
SAP Business OneSAP Business WarehouseSAP BusinessObjects BISAP ByDesign
SAP ConcurSAP FieldglassSAP HANASAP HANA XS Advanced
SAP Hybris C4CSAP Netweaver GatewaySAP SuccessFactorsSAP SuccessFactors LMS
SAS Data SetsSAS xptScrapflyScrapingBee
SendGridSendInBlueSendPulseSendwithus
SentryServiceDesk PlusServiceNowSFTP
SharePointSharePoint Excel ServicesShipEngineShippo
ShipStationShopifyShort.ioShortcut
SimplesatSingleStoreSlackSmartsheet
Snapchat AdsSnowflakeSpaceXSpark
SparkPostSplunkSpotifySQL Analysis Services
SQL ServerSquareStack ExchangeStrava
StripeSuadeoSugar CRMSuiteCRM
SupabaseSuperchatSurveyMonkeySybase
Sybase IQTallyTandaTavily
TaxJarTeamgateTeamworkTelegram
TemplatedTeradataTestmonitorTickspot
Tier1TigerGraphTimelyTodoist
TogglTrelloTrinoTwilio
Twitter AdsTypeformUnbounceVault CRM
Veeva CRMVercelVimeoVWO
Wave FinancialWebexWebflowWistia
WooCommerceWordPressWorkableWorkday
WrikexBaseXeroXML
YelpYouTube AnalyticsZarMoneyZendesk
ZendeskSellZeroBounceZoho BooksZoho Creator
Zoho CRMZoho InventoryZoho ProjectsZoho Recruit
ZohoDeskZohoExpenseZohoInvoiceZohoMarketingHub
ZohoPeopleZohoSubscriptionsZoomZuora
... Dozens More

About

This read-only MCP Server allows you to connect to external data from Claude Desktop through CData JDBC Drivers. Free (beta) read/write servers available at https://www.cdata.com/solutions/mcp

Resources

Stars

Watchers

Forks

Used by

Contributors

Languages