CData Salesforce MCP Server
About
This read-only MCP Server allows you to connect to Salesforce data from Claude Desktop through CData JDBC Drivers. Free (beta) read/write servers available at
Details
- Author
- CDataSoftware
- Downloads
- 336
- Categories
- Database, Other, Search
Jump to
- Read-only querying of live Salesforce data via MCP
- Supports natural language questions—no SQL required
- Uses CData JDBC Driver for Salesforce as backend
- Provides tools: get_tables, get_columns, run_query (SQL SELECT)
- MIT licensed open-source project
Alternative Using Environment Variables
Instead of using a.prpfile, you can configure the server using environment variables. This is useful for containerized deployments or when you want to bundle the CData JAR inside the compiled JAR.
- CDATA_JDBC_URL-Required- The JDBC connection string
- CDATA_PREFIX- (Optional) The prefix for exposed tools (defaults to "salesforce")
- CDATA_DRIVER_CLASS- (Optional) The JDBC driver class name (defaults to "cdata.jdbc.salesforce.SalesforceDriver" when using bundled JAR)
- CDATA_DRIVER_PATH- (Optional) Path to the CData JAR file (if not specified, uses bundled classes)
- CDATA_TABLES- (Optional) Comma-separated list of tables to expose
- CDATA_LOG_FILE- (Optional) Path to log file
To include the CData JAR in your compiled JAR:
- Create alibdirectory in your project root
- Copy the CData JDBC driver JAR (e.g.,cdata.jdbc.salesforce.jar) into thelibdirectory
- Build the project withmvn clean install
- The CData JDBC driver classes will be unpacked and included directly inCDataMCP-jar-with-dependencies.jar
Note: The maven-shade-plugin will automatically extract and include all classes from the CData JAR during the build process.
# Minimal configuration - only JDBC URL is required export CDATA_JDBC_URL="jdbc:salesforce:InitiateOAuth=GETANDREFRESH;" java -jar CDataMCP-jar-with-dependencies.jar # Or with custom configuration export CDATA_PREFIX="myprefix" export CDATA_DRIVER_PATH="/path/to/cdata.jdbc.salesforce.jar" # Only needed if not using bundled JAR export CDATA_DRIVER_CLASS="cdata.jdbc.salesforce.SalesforceDriver" # Only needed if not using bundled JAR export CDATA_JDBC_URL="jdbc:salesforce:InitiateOAuth=GETANDREFRESH;" java -jar CDataMCP-jar-with-dependencies.jar
-
Create the config file for Claude Desktop ( claude_desktop_config.json) to add the new MCP server, using the format below. If the file already exists, add the entry to themcpServersin the config file.
{ "mcpServers": { "{classname_dash}": { "command": "PATH\\TO\\java.exe", "args": ](https://www.cdata.com/drivers/salesforce/jdbc/)[ "-jar", "PATH\\TO\\CDataMCP-jar-with-dependencies.jar", "PATH\\TO\\salesforce.prp" ] }, ... } }
{ "mcpServers": { "{classname_dash}": { "command": "/PATH/TO/java", "args": [ "-jar", "/PATH/TO/CDataMCP-jar-with-dependencies.jar", "/PATH/TO/salesforce.prp" ] }, ... } }
{ "mcpServers": { "salesforce": { "command": "PATH\\TO\\java.exe", "args": [ "-jar", "PATH\\TO\\CDataMCP-jar-with-dependencies.jar" ], "env": { "CDATA_JDBC_URL": "jdbc:salesforce:InitiateOAuth=GETANDREFRESH;" } } } }
{ "mcpServers": { "salesforce": { "command": "/PATH/TO/java", "args": [ "-jar", "/PATH/TO/CDataMCP-jar-with-dependencies.jar" ], "env": { "CDATA_JDBC_URL": "jdbc:salesforce:InitiateOAuth=GETANDREFRESH;" } } } }
If needed, copy the config file to the appropriate directory (Claude Desktop as the example).Windows
cp C:\PATH\TO\claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json
cp /PATH/TO/claude_desktop_config.json /Users/{user}/Library/Application\ Support/Claude/claude_desktop_config.json'
Run or refresh your client (Claude Desktop).
Note:You may need to fully exit or quit your Claude Desktop client and re-open it for the MCP Servers to appear.
- Run the follow the 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 usesstdioso can only be used with clients that run on the same machine as the server.
Once the MCP Server is configured, the AI client will be able to use the built-in tools to read, write, update, and delete the underlying data. 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:
In the definitions below,{servername}refers to the name of the MCP Server in the config file (e.g.{classname_dash}above).
- {servername}_get_tables- Retrieves a list of tables available in the data source. Use the{servername}_get_columnstool 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_tablestool 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
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.
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "salesforce_get_tables", "arguments": {} } }
{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "salesforce_get_columns", "arguments": { "table": "Account" } } }
{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "salesforce_run_query", "arguments": { "sql": "SELECT * FROM [Account] WHERE [IsDeleted] = true" } } }
- If you cannot see your CData MCP Server in Claude Desktop, be sure that you have fully quit Claude Desktop (Windows: use the Task Manager, Mac: use the Activity Monitor)
- If Claude Desktop 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.
- If you are having trouble connecting to your data source, contact theCData Support Team.
- If you are having trouble using the MCP server, or have any other feedback, join theCData Community.
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 theLICENSEfile in the project repository.
Official MCP server for dbt (data build tool) providing integration with dbt Core/Cloud CLI, project metadata discovery, model information, and semantic layer querying capabilities.
Query and analyze data with MotherDuck and local DuckDB
A collection of tools for managing the platform, addressing data quality and reading and writing to Teradata Database.
Apify-hosted MCP server for Airtable with 15 tools. Full CRUD for records, tables, fields, search, and schema inspection. No local setup needed.
A read-only MCP server for Avro data sources, powered by the CData JDBC Driver.
Run SQL queries on data in Amazon S3 using AWS Athena.
Interact with Bauplan data tables and run queries.
Production-grade MCP server for Databricks: SQL Warehouses, Jobs API, multi-workspace support.
Visual no-code generator that turns any database into multiple scoped MCP servers — one per access group, with PII masking and fail-closed query scoping built in.
A read-only MCP server by CData that enables LLMs to query live data from EnterpriseDB databases.
salesforce-mcp-server-by-cdata
CData's Model Context Protocol (MCP) Server for Salesforce:heavy_exclamation_mark: This project builds a read-only MCP server. For full read, write, update, delete, and action capabilities and a simplified setup, check out our free CData MCP Server for Salesforce (beta).
Purpose
We created this read-only MCP Server to allow LLMs (like Claude Desktop) to query live data Salesforce supported by the CData JDBC Driver for Salesforce.
CData JDBC Driver connects to Salesforce by exposing them as relational SQL models.
This server wraps that driver and makes Salesforce data available through a simple MCP interface, so LLMs can retrieve live information by asking natural language questions — no SQL required.
Setup Guide
1. Clone the repository: git clone https://github.com/cdatasoftware/salesforce-mcp-server-by-cdata.git
cd salesforce-mcp-server-by-cdata
2. Build the server:
mvn clean install
This creates the JAR file: CDataMCP-jar-with-dependencies.jar
2. Download and install the CData JDBC Driver for {source}: https://www.cdata.com/drivers/salesforce/download/jdbc
3. License the CData JDBC Driver:
Navigate to the lib folder in the installation directory, typically:
(Windows) C:\Program Files\CData\CData JDBC Driver for Salesforce\
(Mac/Linux) /Applications/CData JDBC Driver for Salesforce/
Run the command java -jar cdata.jdbc.salesforce.jar --license
Enter your name, email, and "TRIAL" (or your license key).
4. 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.
.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
ServerName - a name for your server
ServerVersion - a version for your server
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
Prefix=salesforce
ServerName=CDataSalesforce
ServerVersion=1.0
DriverPath=PATH\TO\cdata.jdbc.salesforce.jar
DriverClass=cdata.jdbc.salesforce.SalesforceDriver
JdbcUrl=jdbc:salesforce:InitiateOAuth=GETANDREFRESH;
Tables=
Using the Server with Claude Desktop
1. Create the config file for Claude Desktop ( claude_desktop_config.json) to add the new MCP server, using the format below. If the file already exists, add the entry to themcpServers in the config file.
Windows
{
"mcpServers": {
"{classname_dash}": {
"command": "PATH\\TO\\java.exe",
"args": [
"-jar",
"PATH\\TO\\CDataMCP-jar-with-dependencies.jar",
"PATH\\TO\\salesforce.prp"
]
},
...
}
}
Linux/Mac
{
"mcpServers": {
"{classname_dash}": {
"command": "/PATH/TO/java",
"args": [
"-jar",
"/PATH/TO/CDataMCP-jar-with-dependencies.jar",
"/PATH/TO/salesforce.prp"
]
},
...
}
}
If needed, copy the config file to the appropriate directory (Claude Desktop as the example).
Windows
cp C:\PATH\TO\claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json
Linux/Mac
cp /PATH/TO/claude_desktop_config.json /Users/{user}/Library/Application\ Support/Claude/claude_desktop_config.json'
2. Run or refresh your client (Claude Desktop).
> Note: You may need to fully exit or quit your Claude Desktop client and re-open it for the MCP Servers to appear.
Running the Server
1. Run the follow the 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, write, update, and delete the underlying data. 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. {classname_dash} 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 queryTroubleshooting
1. If you cannot see your CData MCP Server in Claude Desktop, be sure that you have fully quit Claude Desktop (Windows: use the Task Manager, Mac: use the Activity Monitor)
2. If Claude Desktop 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.All Supported Sources
<table> <tr><td>Access</td><td>Act CRM</td><td>Act-On</td><td>Active Directory</td></tr> <tr><td>ActiveCampaign</td><td>Acumatica</td><td>Adobe Analytics</td><td>Adobe Commerce</td></tr> <tr><td>ADP</td><td>Airtable</td><td>AlloyDB</td><td>Amazon Athena</td></tr> <tr><td>Amazon DynamoDB</td><td>Amazon Marketplace</td><td>Amazon S3</td><td>Asana</td></tr> <tr><td>Authorize.Net</td><td>Avalara AvaTax</td><td>Avro</td><td>Azure Active Directory</td></tr> <tr><td>Azure Analysis Services</td><td>Azure Data Catalog</td><td>Azure Data Lake Storage</td><td>Azure DevOps</td></tr> <tr><td>Azure Synapse</td><td>Azure Table</td><td>Basecamp</td><td>BigCommerce</td></tr> <tr><td>BigQuery</td><td>Bing Ads</td><td>Bing Search</td><td>Bitbucket</td></tr> <tr><td>Blackbaud FE NXT</td><td>Box</td><td>Bullhorn CRM</td><td>Cassandra</td></tr> <tr><td>Certinia</td><td>Cloudant</td><td>CockroachDB</td><td>Confluence</td></tr> <tr><td>Cosmos DB</td><td>Couchbase</td><td>CouchDB</td><td>CSV</td></tr> <tr><td>Cvent</td><td>Databricks</td><td>DB2</td><td>DocuSign</td></tr> <tr><td>Dropbox</td><td>Dynamics 365</td><td>Dynamics 365 Business Central</td><td>Dynamics CRM</td></tr> <tr><td>Dynamics GP</td><td>Dynamics NAV</td><td>eBay</td><td>eBay Analytics</td></tr> <tr><td>Elasticsearch</td><td>Email</td><td>EnterpriseDB</td><td>Epicor Kinetic</td></tr> <tr><td>Exact Online</td><td>Excel</td><td>Excel Online</td><td>Facebook</td></tr> <tr><td>Facebook Ads</td><td>FHIR</td><td>Freshdesk</td><td>FTP</td></tr> <tr><td>GitHub</td><td>Gmail</td><td>Google Ad Manager</td><td>Google Ads</td></tr> <tr><td>Google Analytics</td><td>Google Calendar</td><td>Google Campaign Manager 360</td><td>Google Cloud Storage</td></tr> <tr><td>Google Contacts</td><td>Google Data Catalog</td><td>Google Directory</td><td>Google Drive</td></tr> <tr><td>Google Search</td><td>Google Sheets</td><td>Google Spanner</td><td>GraphQL</td></tr> <tr><td>Greenhouse</td><td>Greenplum</td><td>HarperDB</td><td>HBase</td></tr> <tr><td>HCL Domino</td><td>HDFS</td><td>Highrise</td><td>Hive</td></tr> <tr><td>HubDB</td><td>HubSpot</td><td>IBM Cloud Data Engine</td><td>IBM Cloud Object Storage</td></tr> <tr><td>IBM Informix</td><td>Impala</td><td>Instagram</td><td>JDBC-ODBC Bridge</td></tr> <tr><td>Jira</td><td>Jira Assets</td><td>Jira Service Management</td><td>JSON</td></tr> <tr><td>Kafka</td><td>Kintone</td><td>LDAP</td><td>LinkedIn</td></tr> <tr><td>LinkedIn Ads</td><td>MailChimp</td><td>MariaDB</td><td>Marketo</td></tr> <tr><td>MarkLogic</td><td>Microsoft Dataverse</td><td>Microsoft Entra ID</td><td>Microsoft Exchange</td></tr> <tr><td>Microsoft OneDrive</td><td>Microsoft Planner</td><td>Microsoft Project</td><td>Microsoft Teams</td></tr> <tr><td>Monday.com</td><td>MongoDB</td><td>MYOB AccountRight</td><td>MySQL</td></tr> <tr><td>nCino</td><td>Neo4J</td><td>NetSuite</td><td>OData</td></tr> <tr><td>Odoo</td><td>Office 365</td><td>Okta</td><td>OneNote</td></tr> <tr><td>Oracle</td><td>Oracle Eloqua</td><td>Oracle Financials Cloud</td><td>Oracle HCM Cloud</td></tr> <tr><td>Oracle Sales</td><td>Oracle SCM</td><td>Oracle Service Cloud</td><td>Outreach.io</td></tr> <tr><td>Parquet</td><td>Paylocity</td><td>PayPal</td><td>Phoenix</td></tr> <tr><td>PingOne</td><td>Pinterest</td><td>Pipedrive</td><td>PostgreSQL</td></tr> <tr><td>Power BI XMLA</td><td>Presto</td><td>Quickbase</td><td>QuickBooks</td></tr> <tr><td>QuickBooks Online</td><td>QuickBooks Time</td><td>Raisers Edge NXT</td><td>Reckon</td></tr> <tr><td>Reckon Accounts Hosted</td><td>Redis</td><td>Redshift</td><td>REST</td></tr> <tr><td>RSS</td><td>Sage 200</td><td>Sage 300</td><td>Sage 50 UK</td></tr> <tr><td>Sage Cloud Accounting</td><td>Sage Intacct</td><td>Salesforce</td><td>Salesforce Data Cloud</td></tr> <tr><td>Salesforce Financial Service Cloud</td><td>Salesforce Marketing</td><td>Salesforce Marketing Cloud Account Engagement</td><td>Salesforce Pardot</td></tr> <tr><td>Salesloft</td><td>SAP</td><td>SAP Ariba Procurement</td><td>SAP Ariba Source</td></tr> <tr><td>SAP Business One</td><td>SAP BusinessObjects BI</td><td>SAP ByDesign</td><td>SAP Concur</td></tr> <tr><td>SAP Fieldglass</td><td>SAP HANA</td><td>SAP HANA XS Advanced</td><td>SAP Hybris C4C</td></tr> <tr><td>SAP Netweaver Gateway</td><td>SAP SuccessFactors</td><td>SAS Data Sets</td><td>SAS xpt</td></tr> <tr><td>SendGrid</td><td>ServiceNow</td><td>SFTP</td><td>SharePoint</td></tr> <tr><td>SharePoint Excel Services</td><td>ShipStation</td><td>Shopify</td><td>SingleStore</td></tr> <tr><td>Slack</td><td>Smartsheet</td><td>Snapchat Ads</td><td>Snowflake</td></tr> <tr><td>Spark</td><td>Splunk</td><td>SQL Analysis Services</td><td>SQL Server</td></tr> <tr><td>Square</td><td>Stripe</td><td>Sugar CRM</td><td>SuiteCRM</td></tr> <tr><td>SurveyMonkey</td><td>Sybase</td><td>Sybase IQ</td><td>Tableau CRM Analytics</td></tr> <tr><td>Tally</td><td>TaxJar</td><td>Teradata</td><td>Tier1</td></tr> <tr><td>TigerGraph</td><td>Trello</td><td>Trino</td><td>Twilio</td></tr> <tr><td>Twitter</td><td>Twitter Ads</td><td>Veeva CRM</td><td>Veeva Vault</td></tr> <tr><td>Wave Financial</td><td>WooCommerce</td><td>WordPress</td><td>Workday</td></tr> <tr><td>xBase</td><td>Xero</td><td>XML</td><td>YouTube Analytics</td></tr> <tr><td>Zendesk</td><td>Zoho Books</td><td>Zoho Creator</td><td>Zoho CRM</td></tr> <tr><td>Zoho Inventory</td><td>Zoho Projects</td><td>Zuora</td><td>... Dozens More</td></tr> </table>Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




