Because the connection is a DSN rather than a driver compiled into the server, adding a second database is an ODBC entry rather than another MCP server - and the same query can come back as JSONL for a machine or as a table for a person.
An ODBC bridge built on SQLAlchemy and pyodbc. It connects through a DSN you have already configured, so any backend with a SQLAlchemy provider is in reach - Virtuoso included - and the same six calls work across all of them.
- Every schema name on the connected database
- Tables for one schema, or across all of them
- Tables filtered by a substring, for the one whose name you half-remember
- A table described in full: columns and data types, nullability, primary and foreign keys
- Queries executed and returned as JSONL, for a result the next step will consume
- The same query returned as a Markdown table, for a result a person will read
unixODBC with your driver installed and a DSN configured in ~/.odbc.ini, plus uv to run the server. Connection settings — the DSN, the user and the password — go in .env, and the SQLAlchemy URL takes the form virtuoso+pyodbc://user:password@VOS. Check the ODBC side first with odbcinst -j and odbcinst -q -s, before wiring the client up.
