The whole point is the shape of the tool surface: three generic tools instead of one tool per Salesforce Einstein object, so the context cost stays flat no matter how wide the schema is and the model discovers the schema by asking. The price is setup — a Maven build plus a licensed JDBC driver before anything runs — and read-only access. CData points anyone who wants writes, actions or a hosted endpoint at its commercial products.
A local, read-only MCP server that CData builds on top of its JDBC driver for Salesforce Einstein. The driver presents Salesforce Einstein as relational SQL models; this server wraps the driver and hands an assistant a small SQL interface over it, so questions get answered from live data instead of a stale export. It runs as a Java process over stdio on your own machine.
- Three tools, prefixed with the server name you set in the properties file: one lists the tables the driver exposes, one lists a table's columns, and one runs a SQL SELECT.
- Table and column output comes back as CSV with a header row, so the assistant can orient itself on an unfamiliar schema before it queries anything.
- Read access only — the query tool takes SELECT. Nothing in this server writes back to Salesforce Einstein.
- A `Tables` property that scopes what is reachable: leave it blank for everything, or list only the tables you want the assistant to see.
Java and Maven — clone the repo and run `mvn clean install` to produce CDataMCP-jar-with-dependencies.jar. Separately install the CData JDBC Driver for Salesforce Einstein and license it (run the driver jar with --license and enter your name, email and either TRIAL or a license key). Then build a connection string with the driver's connection-string utility and write a properties file naming the prefix, driver class, driver jar path and that JDBC URL — the template in this repo leaves those fields blank, so fill them from your driver install. The server speaks stdio, so the client has to run on the same machine. MIT licensed.
Build from source — clone the repository and build it, then point your client at the binary
