basecamp_get_tablesLABSCO SUMMARY
Cross-project questions Basecamp's own UI does not ask.
Basecamp is organised around browsing one project at a time, which makes "what is overdue across everything" a manual count. A SQL interface over the same data turns that into one query, and because the shape is tables rather than one tool per object, questions nobody planned for still work. Two limits to keep in view: this build reads only, and the assistant can query every table the connection can see — the tables property does not narrow that, so limit the connection or the account it signs in with.
What it is
A local, read-only MCP server built by CData that wraps their JDBC driver for Basecamp. The driver presents Basecamp as relational SQL models; the server puts three tools in front of it so an assistant can discover the tables, inspect their columns, and answer questions without you writing the query by hand.
What you get
- The list of tables available in the data source, returned as CSV with a header row —
get_tables - The columns of one table, so a query is built against the real schema rather than a guess —
get_columns - SQL SELECT execution against the connected source —
run_query - All three carry the prefix you set in the connection properties file, so several CData servers can run side by side without their tool names colliding
Requirements
A Basecamp account and the CData JDBC Driver for Basecamp, downloaded and licensed separately — the driver JAR is run once with --license and takes your name, email and either TRIAL or a license key. Java, plus Maven to build the server JAR from a clone. Connection details go in a properties file naming the tool prefix, the server name and version, the driver JAR path, the driver class and the JDBC URL, which you generate with the driver's own connection-string utility and authenticate in the browser when the source uses OAuth. The tables property only picks which tables also get a ready-made description; the tools can query every table the connection reaches, so limit the connection or the account it signs in with. The client entry runs java with the built JAR and the properties file, over stdio, so client and server share a machine.
Setup effort
Build from source — clone the repository, then point your client at the binary
USE CASES
Getting a view across every project at once
Query the to-do and project tables together instead of opening each project separately to count what is outstanding.
Answering a status question without writing SQL
Ask in plain language and let the assistant read the schema first, then compose the query it needs.
3 tools
Listed in project docs. Your client may show a different list.
basecamp_get_columnsbasecamp_run_queryBEFORE YOU INSTALL
What to know first
Tools you get
3 tools named in the project's documentation. All three are read-only: run_query runs SQL SELECT only, and write access is a separate paid CData product. Names start with the Prefix in your .prp file, so the sample Prefix=basecamp gives basecamp_run_query. The Tables setting does not limit what the tools reach; your connection's access does.
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Clone the repository, then point your client at the binary. This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/cdatasoftware/basecamp-mcp-server-by-cdata.git
cd basecamp-mcp-server-by-cdata
mvn clean installDownload and install the CData JDBC Driver for Basecamp from https://www.cdata.com/drivers/basecamp/download/jdbc
License the driver: in the driver's lib folder run java -jar cdata.jdbc.basecamp.jar --license, then enter name, email and "TRIAL" (or your license key)
Run java -jar cdata.jdbc.basecamp.jar to open the Connection String utility, test the connection and copy the connection string
Create a .prp file with Prefix / ServerName / ServerVersion / DriverPath / DriverClass=cdata.jdbc.basecamp.BasecampDriver / JdbcUrl / Tables
Tables only picks which tables also get a ready-made description for your assistant, and empty means none; the server can still list and query every table your connection string reaches, so to keep data out of reach, limit that connection or the account it signs in with.
Add the mcpServers entry below to claude_desktop_config.json and restart the client
MCP Clients
Claude Desktop — Linux, macOS
{
"mcpServers": {
"basecamp": {
"command": "<YOUR_PATH_TO_JAVA>",
"args": [
"-jar",
"<YOUR_PATH_TO_CDATA_MCP_JAR_WITH>",
"<YOUR_PATH_TO_BASECAMP>"
]
}
}
}