jdbc_get_schemasLABSCO SUMMARY
One server, whatever your database happens to be.
The SPASQL support is the unusual part: on Virtuoso you can put SQL and SPARQL in the same query, which no generic SQL server will do for you.
What it is
A Java MCP server built with Quarkus that connects over JDBC, so any backend with a driver is reachable. On Virtuoso it adds SPARQL, hybrid SPASQL queries that mix SQL and SPARQL, and Virtuoso's own support tooling.
What you get
- Every schema name on the connected database
- Tables for one schema, or for all of them
- A table described: columns, data types, nullability, primary and foreign keys
- Tables filtered by a name substring
- Query results as JSONL, or as a markdown table
- SPARQL queries, and hybrid SPASQL queries, against Virtuoso
- Stored procedures executed on Virtuoso
- Several JDBC drivers loaded together on one classpath
Requirements
A current Java runtime, a JDBC URL and credentials, and the driver jar on the classpath for anything other than Virtuoso.
Setup effort
Build from source — git clone https://github.com/OpenLinkSoftware/mcp-jdbc-server.git
USE CASES
Querying a database that has no MCP server of its own
Point it at the JDBC URL, put the driver on the classpath, and browse and query as normal.
Getting a readable answer instead of raw rows
Return the result as a markdown table so it can be read where it lands.
Finding the right table in a large schema
Filter names by substring, then read the structure of the match before writing SQL.
Asking a graph question against a Virtuoso store
Send SPARQL directly rather than trying to express it as SQL.
Joining relational rows to graph data in one query
Use SPASQL, which lets a single statement span both sides.
Working out why a Virtuoso query behaves oddly
Ask Virtuoso's own support tooling about the behaviour instead of guessing at it.
10 tools
Listed in project docs. Your client may show a different list.
jdbc_get_tablesjdbc_describe_tablejdbc_filter_table_namesjdbc_query_databasejdbc_execute_queryjdbc_execute_query_mdjdbc_spasql_queryjdbc_sparql_queryjdbc_virtuoso_support_aiBEFORE YOU INSTALL
What to know first
Tools you get
10 tools named in the project's documentation.
Requires
- Java 21 or later
- Your database's JDBC URL, user and password (jdbc.url, jdbc.user, jdbc.password in the client configuration)
- For a database other than Virtuoso: its JDBC driver jar(s), added to the classpath
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
Clone this repository:
git clone https://github.com/OpenLinkSoftware/mcp-jdbc-server.git
cd mcp-jdbc-serverMCP Clients
Claude Desktop
{
"mcpServers": {
"my_database": {
"command": "java",
"args": [
"-jar",
"<YOUR_PATH_TO_MCP_JDBC_SERVER>/MCPServer-1.0.0-runner.jar"
],
"env": {
"jdbc.url": "jdbc:virtuoso://localhost:1111",
"jdbc.user": "username",
"jdbc.password": "password",
"jdbc.api_key": "<YOUR_JDBC_API_KEY>"
}
}
}
}<YOUR_PATH_TO_MCP_JDBC_SERVER> is the full path of your clone — the README runs MCPServer-1.0.0-runner.jar straight from it and gives no build step. jdbc.url, jdbc.user and jdbc.password are your database's JDBC URL and login. jdbc.api_key is optional: it is only the key for jdbc_virtuoso_support_ai's AI service (the tool's api_key defaults to "none"), so leave it out if you will not use that tool. For a database other than Virtuoso, use the README's -cp form instead: java -cp <YOUR_PATH_TO_MCP_JDBC_SERVER>/MCPServer-1.0.0-runner.jar:/path/to/your_driver.jar io.quarkus.runner.GeneratedMain.