# 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](https://www.cdata.com/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-sources)) supported by [CData JDBC Drivers](https://www.cdata.com/jdbc).
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:
```bash
git clone https://github.com/cdatasoftware/cdata-jdbc-mcp-server.git
cd cdata-jdbc-mcp-server
```
2. Build the server:
```bash
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](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
```env
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](#2-config-file-locations) for where each client keeps it). If the file already exists, add this entry alongside any existing servers.
**Windows**
```json
{
"mcpServers": {
"salesforce": {
"command": "PATH\\TO\\java.exe",
"args": [
"-jar",
"PATH\\TO\\CDataMCP-jar-with-dependencies.jar",
"PATH\\TO\\Salesforce.prp"
]
}
}
}
```
**Linux/Mac**
```json
{
"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`:
> ```json
> {
> "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 → **Configure** → **Configure 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:
```bash
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
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "salesforce_get_tables",
"arguments": {}
}
}
```
#### {servername}_get_columns
```json
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "salesforce_get_columns",
"arguments": {
"table": "Account"
}
}
}
```
#### {servername}_run_query
```json
{
"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](https://www.cdata.com/support/submit.aspx).
4. If you are having trouble using the MCP server, or have any other feedback, join the [CData Community](https://community.cdata.com).
## 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](./LICENSE) file in the project repository.
## Supported Sources
| Accelo | Access | Act CRM | Act-On |
| Active Directory | ActiveCampaign | Acumatica | Adobe Analytics |
| Adobe Commerce | Adobe Experience Manager | Adobe Target | ADP |
| AdRoll | AfterShip | AgileCRM | Aha! |
| Aircall | Airtable | AlloyDB | Amazon Athena |
| Amazon DynamoDB | Amazon Marketplace | Amazon S3 | Amplitude |
| Anaplan | Apache Doris | Apify | Apollo |
| Asana | Attio | Auth0 | Authorize.Net |
| Autopilot | Avalara AvaTax | Avaza | Avro |
| Aweber | Azure Analysis Services | Azure Data Catalog | Azure Data Lake Storage |
| Azure DevOps | Azure Synapse | Azure Table | BambooHR |
| Bannerbear | Basecamp | Beeminder | BenchmarkEmail |
| BigCommerce | BigQuery | Billsby | Bitbucket |
| Bitly | Blackbaud FE NXT | Box | Brex |
| Bright Data | Browserless | Bugsnag | Bullhorn CRM |
| Calendly | Campaigner | CampaignMonitor | CapsuleCRM |
| Cassandra | Certinia | Chargebee | ChargeOver |
| ChartMogul | CircleCI | Clari | ClickTime |
| ClickUp | Clio | Clockify | Close |
| Cloudant | CloudConvert | Cloudflare | CockroachDB |
| Coda | Codat | Cohere | Coinbase |
| Confluence | ConstantContact | Contentful | ConvertAPI |
| ConvertKit | Copper | Cosmos DB | Couchbase |
| CouchDB | CSV | Customer.io | Cvent |
| Databricks | Datadog | DB2 | Deel |
| Delighted | Demio | Discord | Discourse |
| DocuSign | Dotmailer | Drift | Drip |
| Dropbox | Dynamics 365 | Dynamics 365 Business Central | Dynamics CRM |
| Dynamics NAV | eBay | eBay Analytics | Egnyte |
| Elasticsearch | ElevenLabs | Elorus | |
| EmailOctopus | EnterpriseDB | Epicor Kinetic | Eventbrite |
| Everhour | Exa | Exact Online | Excel |
| Excel Online | Facebook Ads | Factorial | |
| FHIR | Figshare | Float | Flowlu |
| FormSite | Foursquare | FreeAgent | FreshBooks |
| Freshdesk | Freshsales | Freshservice | Freshteam |
| Front | FTP | GetResponse | GitHub |
| GitLab | Gmail | Gong | Google Ad Manager |
| Google Ads | Google Analytics | Google Calendar | Google Campaign Manager 360 |
| Google Cloud Storage | Google Contacts | Google Directory | Google Drive |
| Google Forms | Google Search | Google Sheets | Google Spanner |
| Google Tasks | Google Translate | Gorgias | Grafana |
| GraphQL | Greenhouse | Greenplum | Gumroad |
| Guru | Hacker News | Harvest | HBase |
| HCL Domino | HDFS | HelloSign | Helpscout |
| Highrise | Hive | HubDB | HubSpot |
| Hubstaff | Hugging Face | Humanity | IBM Cloud Object Storage |
| IBM Informix | iContact | Impala | Insightly |
| Instantly | Intercom | Invoiced | |
| JDBC-ODBC Bridge | Jira | Jira Assets | JobNimbus |
| Jodoo | JotForm | JSON | Jumpseller |
| Kafka | Keap | Kintone | Klaviyo |
| Klipfolio | Lakebase | Landbot | LaunchDarkly |
| LDAP | LeadDesk | LightSpeedRetail | |
| LinkedIn Ads | LionDesk | MailChimp | MailerLite |
| MailerSend | Mailgun | Mailjet | MariaDB |
| Marketo | MarkLogic | MessageBird | Microsoft Ads |
| Microsoft Dataverse | Microsoft Entra ID | Microsoft Exchange | Microsoft OneDrive |
| Microsoft Planner | Microsoft Teams | Miro | Missive |
| Mistral AI | Mixpanel | Mocean | Mode |
| Monday.com | MongoDB | Moosend | Mouseflow |
| MYOB AccountRight | MySQL | NASA | nCino |
| Neo4J | Nethunt | NetSuite | Notion |
| Nuclia | OData | Odoo | Office 365 |
| Okta | Omnisend | OneNote | OnePageCrm |
| Onfleet | Ontraport | OpenWeatherMap | Opsgenie |
| Optimizely | Oracle | Oracle Eloqua | Oracle Eloqua Reporting |
| Oracle Financials Cloud | Oracle HCM Cloud | Oracle Sales | Oracle SCM |
| Oracle Service Cloud | Outlook | Outreach.io | PabblySubscriptions |
| Paddle | PagerDuty | Parallel | Parquet |
| Paylocity | Paymo | PayPal | PDFMonkey |
| Perigon | Perplexity | PhantomBuster | Phoenix |
| Pinecone | Pingdom | PingOne | |
| Pipedrive | Pipeline CRM | Pipeliner CRM | PivotalTracker |
| Placid | Planio | PolarTeamPro | PostgreSQL |
| Postmark | Power BI XMLA | Presto | Printful |
| Printify | Procore | Productboard | Pushbullet |
| Quaderno | Qualaroo | Quickbase | QuickBooks |
| QuickBooks Online | QuickBooks Time | RabbitMQ | Raisers Edge NXT |
| Rebilly | Reckon | Reckon Accounts Hosted | Recurly |
| Redis | Redshift | Reply.io | REST |
| Retently | Rootly | RSS | Sage 200 |
| Sage 300 | Sage Cloud Accounting | Sage Intacct | SageHR |
| Salesforce | Salesforce CRM Analytics | Salesforce Data 360 | Salesforce Financial Service Cloud |
| Salesforce Marketing | Salesforce Marketing Cloud Account Engagement | Salesforce Pardot | Salesloft |
| Samanage | SAP | SAP Ariba Procurement | SAP Ariba Source |
| SAP Business One | SAP Business Warehouse | SAP BusinessObjects BI | SAP ByDesign |
| SAP Concur | SAP Fieldglass | SAP HANA | SAP HANA XS Advanced |
| SAP Hybris C4C | SAP Netweaver Gateway | SAP SuccessFactors | SAP SuccessFactors LMS |
| SAS Data Sets | SAS xpt | Scrapfly | ScrapingBee |
| SendGrid | SendInBlue | SendPulse | Sendwithus |
| Sentry | ServiceDesk Plus | ServiceNow | SFTP |
| SharePoint | SharePoint Excel Services | ShipEngine | Shippo |
| ShipStation | Shopify | Short.io | Shortcut |
| Simplesat | SingleStore | Slack | Smartsheet |
| Snapchat Ads | Snowflake | SpaceX | Spark |
| SparkPost | Splunk | Spotify | SQL Analysis Services |
| SQL Server | Square | Stack Exchange | Strava |
| Stripe | Suadeo | Sugar CRM | SuiteCRM |
| Supabase | Superchat | SurveyMonkey | Sybase |
| Sybase IQ | Tally | Tanda | Tavily |
| TaxJar | Teamgate | Teamwork | Telegram |
| Templated | Teradata | Testmonitor | Tickspot |
| Tier1 | TigerGraph | Timely | Todoist |
| Toggl | Trello | Trino | Twilio |
| Twitter Ads | Typeform | Unbounce | Vault CRM |
| Veeva CRM | Vercel | Vimeo | VWO |
| Wave Financial | Webex | Webflow | Wistia |
| WooCommerce | WordPress | Workable | Workday |
| Wrike | xBase | Xero | XML |
| Yelp | YouTube Analytics | ZarMoney | Zendesk |
| ZendeskSell | ZeroBounce | Zoho Books | Zoho Creator |
| Zoho CRM | Zoho Inventory | Zoho Projects | Zoho Recruit |
| ZohoDesk | ZohoExpense | ZohoInvoice | ZohoMarketingHub |
| ZohoPeople | ZohoSubscriptions | Zoom | Zuora |
| ... Dozens More |