podbc_get_schemasLABSCO SUMMARY
One server, and the driver decides which database it is.
Because it goes through ODBC, the same tool set covers whatever has a driver installed - the connection is a DSN, not a vendor. The two result formats matter more than they sound: JSONL when something has to parse the rows, Markdown when they are going into a report.
What it is
An ODBC server built on pyodbc, so it works against any database that has an ODBC driver. Alongside the usual schema and query tools it carries Virtuoso-specific ones: SPASQL queries and the support-AI stored procedures.
What you get
- Every schema name in the connected database
- Tables for a named schema or across all of them, plus a filter over table names by substring
- A table described in detail: column names and data types, nullability, primary and foreign keys
- Query results as JSONL when something downstream has to parse them
- Query results as a Markdown table when a person is going to read them
- A general database query tool alongside those
- SPASQL queries and Virtuoso support-AI procedures when the backend is Virtuoso
Requirements
uv, a unixODBC runtime, and a configured ODBC DSN for the target database. The DSN name, user and password go in the environment. API_KEY is optional: only podbc_virtuoso_support_ai uses it, for the AI service behind Virtuoso's Support Assistant.
Setup effort
Build from source — git clone https://github.com/OpenLinkSoftware/mcp-pyodbc-server.git
USE CASES
Getting oriented in a database behind a DSN
List the schemas, then the tables inside the one you want, then the columns and keys of the table you land on.
Finding a table when you only remember part of its name
Filter the table names by substring, then describe the candidate to confirm it is the one.
Producing a table someone can read
Run the query in Markdown mode so the result drops straight into a document, with the schema alongside it for the column meanings.
Getting rows something else has to parse
Take the JSONL output so the result is structured for the next step rather than formatted for a human.
Querying a Virtuoso store across SQL and SPARQL
Use the SPASQL tool where a question spans both, and the support-AI procedures Virtuoso exposes for the rest.
9 tools
Listed in project docs. Your client may show a different list.
podbc_get_tablespodbc_describe_tablepodbc_filter_table_namespodbc_query_databasepodbc_execute_querypodbc_execute_query_mdpodbc_spasql_querypodbc_virtuoso_support_aiBEFORE YOU INSTALL
What to know first
Tools you get
9 tools named in the project's documentation.
Requires
- uv on PATH
- unixODBC with an ODBC driver for your database (odbcinst -j shows the install)
- An ODBC DSN configured for the target database, typically in ~/.odbc.ini (odbcinst -q -s lists them)
- ODBC_DSN, ODBC_USER and ODBC_PASSWORD in the client configuration
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
git clone https://github.com/OpenLinkSoftware/mcp-pyodbc-server.git
cd mcp-pyodbc-serverMCP Clients
Claude Desktop
{
"mcpServers": {
"my_database": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_MCP_PYODBC_SERVER>",
"run",
"mcp-pyodbc-server"
],
"env": {
"ODBC_DSN": "<YOUR_ODBC_DSN>",
"ODBC_USER": "<YOUR_ODBC_USER>",
"ODBC_PASSWORD": "<YOUR_ODBC_PASSWORD>",
"API_KEY": "<YOUR_API_KEY>"
}
}
}
}<YOUR_PATH_TO_MCP_PYODBC_SERVER> is the full path of your clone, <YOUR_ODBC_DSN> is the ODBC DSN you configured, and username and password are that database's login. API_KEY is only passed to podbc_virtuoso_support_ai, as the key for the AI service behind Virtuoso's Support Assistant (the tool's api_key defaults to "none") — leave it out if you won't use that tool.