get_schemasLABSCO SUMMARY
One connector, and the database question stops being which client.
ODBC is already the layer that makes databases interchangeable. Putting a model behind the Driver Manager means the DSN you have configured is the one it queries — and against Virtuoso the same connection carries SPARQL and SPASQL, not only SQL.
What it is
A thin TypeScript layer over node-odbc that routes calls to your machine's ODBC Driver Manager. What it can reach is whatever your ODBC connectors can reach — the examples lean toward the Virtuoso connector, but the path is generic.
What you get
- Schemas and tables listed, table names filtered, and any table described
- Queries executed against the DSN, returned as data or as Markdown
- SPARQL queries, and SPASQL — SQL and SPARQL in one statement
- The OpenLink AI Layer reached over the same ODBC connection
Requirements
A recent Node.js, unixODBC configured with a working DSN, and the MCP SDK packages installed. The DSN name, its user, the password and ODBCINI go in a .env file beside the server; using the OpenLink AI Layer additionally takes an LLM API key.
Setup effort
Follow the published steps — nvm install v21.1.0
USE CASES
Getting your bearings in an unfamiliar database
List the schemas and tables, narrow the names, and describe the one you land on before writing any query.
Answering a question with SQL
Run the query against the configured DSN and take the rows straight back.
Producing a result someone will read
Ask for it as Markdown when the answer is going into a document rather than into code.
Querying a graph store
Run SPARQL, or SPASQL where the question needs SQL and SPARQL in the same statement.
Using OpenLink's AI layer over the same connection
Reach OPAL through ODBC with the LLM key configured, rather than standing up a second integration.
12 tools
Listed in project docs. Your client may show a different list.
get_tablesdescribe_tablefilter_table_namesquery_databaseexecute_queryexecute_query_mdquery_database_mdquery_database_jsonlspasql_querysparql_queryvirtuoso_support_aiBEFORE YOU INSTALL
What to know first
Tools you get
12 tools named in the project's documentation. The documentation names the SQL tools two ways, execute_query and execute_query_md in one section and query_database_md and query_database_jsonl in another, so some listed names may not exist. Only virtuoso_support_ai uses API_KEY.
Requires
- Node.js 21.1.0 or later (the steps install it with nvm)
- unixODBC with an ODBC driver and a working DSN for your database (odbcinst -j and odbcinst -q -s check them)
- ODBC_PASSWORD in your environment
- ODBC_USER in your environment
Optional
API_KEY in your environment
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
nvm install v21.1.0
nvm alias default 21.1.0
git clone https://github.com/OpenLinkSoftware/mcp-odbc-server.git
cd mcp-odbc-server
npm init -y
npm install @modelcontextprotocol/sdk zod tsx odbc dotenvCreate a .env next to the server setting ODBC_DSN / ODBC_USER / ODBC_PASSWORD / ODBCINI (and API_KEY for OPAL)
MCP Clients
Claude Desktop
{
"mcpServers": {
"ODBC": {
"command": "<YOUR_PATH_TO_NVM>/versions/node/v21.1.0/bin/node",
"args": [
"<YOUR_PATH_TO_MCP_ODBC_SERVER>/node_modules/.bin/tsx",
"<YOUR_PATH_TO_MCP_ODBC_SERVER>/src/main.ts"
],
"env": {
"ODBCINI": "/Library/ODBC/odbc.ini",
"NODE_VERSION": "v21.1.0",
"PATH": "~/.nvm/versions/node/v21.1.0/bin:${PATH}"
},
"disabled": false,
"autoApprove": []
}
}
}<YOUR_PATH_TO_NVM_VERSIONS_NODE_V21> is node v21.1.0 in your full nvm folder (…/.nvm/versions/node/v21.1.0/bin/node), and <YOUR_PATH_TO_MCP_ODBC_SERVER> the full path of your clone. In PATH, write the full path of that nvm bin folder instead of ~/.nvm — the client does not expand ~ in env values (the Cline block from the same README uses <YOUR_PATH_TO_NVM> there).
Claude Desktop does not fill in ${PATH}.
The configuration on this page does not set API_KEY, ODBC_PASSWORD and ODBC_USER; the project's instructions put them in a .env file. To supply them without depending on where the server looks for that file, use the block's "env" section.
Cline
{
"mcpServers": {
"ODBC": {
"command": "<YOUR_PATH_TO_NVM>/versions/node/v21.1.0/bin/node",
"args": [
"<YOUR_PATH_TO_MCP_ODBC_SERVER>/node_modules/.bin/tsx",
"<YOUR_PATH_TO_MCP_ODBC_SERVER>/src/main.ts"
],
"env": {
"ODBCINI": "/Library/ODBC/odbc.ini",
"NODE_VERSION": "v21.1.0",
"PATH": "<YOUR_PATH_TO_NVM>/versions/node/v21.1.0/bin:${PATH}"
},
"disabled": false,
"autoApprove": []
}
}
}The configuration on this page does not set API_KEY, ODBC_PASSWORD and ODBC_USER; the project's instructions put them in a .env file. To supply them without depending on where the server looks for that file, use the block's "env" section.