schemagate MCP¶
Self-hosted MCP server (stdio or Streamable HTTP, Python) - an identity-scoped schema gate for text-to-SQL. Before any SQL is written, schemagate picks the handful of tables the question needs and drops every table the caller's role cannot read - not ranked lower, absent. Same question, same person, with the payroll role the hr_compensation table appears; without it, it is gone from the prompt.
Server type: Self-hosted (stdio or Streamable HTTP)
Auth: Caller identity via --principal plus role
Package: schemagate (PyPI, Apache-2.0)
Install: pip install 'schemagate[mcp]'
Run: python -m schemagate.mcp_server (stdio) or SCHEMAGATE_MCP_TRANSPORT=streamable-http
DB drivers: postgres, oracle, mssql, mysql extras
Category: Database & Data Engineering
Built by: ashishsinha1602
Tools¶
| Capability | Purpose |
|---|---|
| select (CLI/library) | Given a natural-language question, principal and role, return only the permitted, relevant tables and their DDL |
| catalog.json restrict | Declarative per-principal or per-role table restrictions |
| describe | Optional human-written table descriptions folded into the catalog |
| MCP server | The same selection logic exposed over stdio or Streamable HTTP for Cursor, Windsurf, Zed and other clients |
| studio | Local web page to type questions, switch roles and watch what reaches the prompt |
Connection¶
pip install 'schemagate[mcp]'plus a driver extra (schemagate[postgres],[oracle],[mssql]or[mysql]).- Run the server: SCHEMAGATE_DATABASE_URL=postgresql://localhost/app python -m schemagate.mcp_server, or switch to streamable-http transport for a team endpoint.
- Point the MCP client at the stdio command (python -m schemagate.mcp_server) and ask questions; caller roles flow in per request.
Measured on its bundled benchmark schemas the selector cuts prompt payloads 65-76 percent (Commerce 42 objects: 2,483 tokens down to 604) and the selector itself runs offline with no model call. A Vanna migration note ships for teams moving from run-time identity to schema-time identity.
Verification (Sep 11, 2026 night sweep)¶
Not live-probed (self-hosted package). The PyPI package resolves; the README documents the MCP entry point, stdio and streamable-http transports, per-driver extras and the catalog config format. GitHub Actions CI badge green on the listing, and the author publishes a 1,789-case parity test between the JS demo selector and the Python library.
Integration with CorpusIQ¶
CorpusIQ is the connector layer that lets AI assistants read the systems a business already runs on - accounting, payments, CRM, email, files and analytics - and answer with the source named. It is read-only by design: it retrieves data and never writes to, or acts in, a connected system, which is what makes it safe to point at live accounts.
This page is part of the CorpusIQ directory, the reference we maintain for the MCP server and agent-skill ecosystem. Run alongside CorpusIQ, a third-party server like this one can be combined with a company's own business data in a single answer.