bullhorn-crm -by-cdata
This read-only MCP Server allows you to connect to Bullhorn CRM data from Claude Desktop through CData JDBC Drivers. For full CRUD support, check out the first managed MCP platform: CData Connect AI (https://www.cdata.com/ai/).
claude mcp add --transport stdio cdatasoftware-bullhorn-crm-mcp-server-by-cdata java -jar /PATH/TO/CDataMCP-jar-with-dependencies.jar /PATH/TO/bullhorn-crm.prp
How to use
This MCP server provides a read-only interface to Bullhorn CRM data via the CData JDBC driver wrapped as an MCP server. It exposes standard MCP tools that allow clients (such as Claude Desktop) to discover available data tables, inspect columns, and run SQL SELECT queries against Bullhorn CRM without exposing direct SQL to end users. The server operates in a local, stdio-based mode, meaning it is intended to be run on the same host as the client application. Tools are named after the configured server, for example bullhorn-crm_get_tables, bullhorn-crm_get_columns, and bullhorn-crm_run_query. Clients send JSON-RPC style requests to invoke these tools and receive results in CSV or JSON as defined by the tool output.
To use the server from Claude Desktop or another MCP client, first create a claude_desktop_config.json (or equivalent) that registers the server under mcpServers with a command and arguments pointing to the Java process and the Bullhorn CRM prp file. After starting the server, you can query for tables, drill into columns of a specific table, or execute a SELECT query to retrieve data from Bullhorn CRM through the MCP interface. For example, you might start by listing available tables, then inspect a table’s columns, and finally run a query such as SELECT * FROM [Account] to retrieve account data.
How to install
Prerequisites:
- Java JRE/JDK (required to run the MCP server)
- Maven (to build the server from source)
- Access to the Bullhorn CRM JDBC driver and a valid license
Installation steps:
- Clone the repository and navigate into it:
git clone https://github.com/cdatasoftware/bullhorn-crm-mcp-server-by-cdata.git
cd bullhorn-crm-mcp-server-by-cdata
- Build the server to produce the JAR with dependencies:
mvn clean install
This creates the JAR file, typically named something like CDataMCP-jar-with-dependencies.jar. 3) Download and install the CData JDBC Driver for Bullhorn CRM from: https://www.cdata.com/drivers/bullhorncrm/download/jdbc/ 4) License the JDBC Driver (example steps):
- Locate the lib directory in the driver installation
- Run: java -jar cdata.jdbc.bullhorncrm.jar --license
- Enter your name, email, and a license key (or TRIAL) when prompted
- Create a .prp file for your JDBC connection (e.g. bullhorn-crm.prp) with the required properties (Prefix, ServerName, ServerVersion, DriverPath, DriverClass, JdbcUrl, Tables). An example is shown in the README:
Prefix=bullhorncrm
ServerName=CDataBullhornCRM
ServerVersion=1.0
DriverPath=PATH\\TO\\cdata.jdbc.bullhorncrm.jar
DriverClass=cdata.jdbc.bullhorncrm.BullhornCRMDriver
JdbcUrl=jdbc:bullhorncrm:InitiateOAuth=GETANDREFRESH;
Tables=
- Start the MCP server using the generated JAR and your .prp file:
java -jar /PATH/TO/CDataMCP-jar-with-dependencies.jar /PATH/TO/bullhorn-crm.prp
Note: The server uses stdio and is intended for local use with a client running on the same machine.
Additional notes
Tips and considerations:
- The MCP server is read-only by default in this setup; to enable update or delete capabilities, you would configure a non read-only environment or a different MCP server build.
- Ensure the JDBC driver is licensed properly; without licensing, the driver may fail to connect to Bullhorn CRM data.
- The server runs via standard input/output, so it is best used with local clients (e.g., Claude Desktop) on the same host.
- When configuring Claude Desktop or another client, you may need to fully quit and relaunch the client to pick up new MCP server configurations.
- If you encounter connection issues, verify the JdbcUrl in bullhorn-crm.prp and confirm that the Bullhorn CRM credentials and OAuth flow (if used) are correctly configured.
- You can list tables first using the {servername}_get_tables tool, then query specific tables with {servername}_run_query. The outputs are typically CSV-formatted with headers on the first line.