The database is a file and the metadata file is where you say what the columns mean and which queries you would rather it ran - so context and guard rails arrive in the same place, and no external system is exposed to get them.
A server over a SQLite database file and an optional metadata file. The catalogue call returns every table and column in one response, enriched with the descriptions you wrote in the metadata, and canned queries defined there become tools of their own.
- The structure of every table and column in one call, rather than a schema hunt
- Table and column descriptions taken from a YAML or JSON metadata file, so the agent reads your notes alongside the schema
- Arbitrary SQL executed against the database
- Canned queries from that same metadata file exposed as separate tools, so the question you want asked a particular way is the one on offer
- The same database and metadata file readable by Datasette, so people can browse what the agent queries
Uv, and a SQLite file. The metadata file is optional, but it is where the descriptions and the canned queries live. A sample configuration and a Titanic dataset ship with the repository - open it in VS Code with Copilot agent mode to see the tools before pointing it at your own data.
One command — uvx mcp-sqlite
