There is no write tool to disable — this build exposes table discovery, column discovery and SELECT, and that is the whole surface. For a fundraising database that is usually the right shape: the risk of an assistant with live donor records is not that it reads too much, it is that it changes something. CData sells a separate MCP server with full read-write and a simpler setup, so if you want writes, that is a different product rather than a flag here. Budget for the driver licence and the connection-string step, which is where the setup time actually goes.
A local, read-only MCP server from CData that puts Raiser's Edge NXT behind a SQL interface. The CData JDBC driver models the source as relational tables; this server wraps the driver so an assistant can discover the tables, read their columns, and run SELECT queries — no SQL from you, and no write path at all.
- The tables available in Raiser's Edge NXT, returned as CSV with a header row — `get_tables`
- The columns on a table, so a query can be written against the real schema rather than a guess — `get_columns`
- A SQL SELECT executed against live data — `run_query`
- Tool names carrying the prefix you set in the `.prp` file, so several CData servers can sit in one client config without colliding
- Control over what is exposed: leave `Tables` blank for everything, or list the tables you want reachable
A licensed CData JDBC Driver for Raiser's Edge NXT, downloaded and licensed separately, plus Java to run the server. Build the server from a clone with `mvn clean install`, which produces `CDataMCP-jar-with-dependencies.jar`. Connection details go in a `.prp` file — prefix, server name and version, driver path, driver class, the JDBC connection string built by the driver's Connection String utility, and an optional table list. If the data source uses OAuth you authenticate in a browser while building that string. Transport is stdio, so the server has to run on the same machine as the client.
Build from source — clone the repository and build it, then point your client at the binary
