Labsco
MCP SERVER

Query and modify a relational database as JSON objects — deep queries, relationship traversal and aggregates — over any JDBC-compliant database, with an optional read-only mode.

Relational SQL Databases
Summary
Read-only is enforced by not exposing the tools at all.

`READONLY_MODE=True` means the modifying tools are never advertised to the client, which is stronger than refusing them at call time — the model cannot ask for what it cannot see. The `operationDetails` directives are the other thing worth learning: projections and follow/ignore let you control how much of an object graph comes back, which is the difference between a useful answer and a payload nobody can read. Note the Beta and non-commercial notice.

What it is

An MCP server that puts an object-relational mapping between an assistant and a relational database. Instead of writing SQL, the model works with JSON objects of your declared domain model, and the mapping engine turns CRUD on those objects into SQL against existing schemas and data.

What you get
  • The domain model described back — classes, attributes, primary keys and relationships — `getObjectModelSummary`
  • Objects queried by class with a SQL-like `filter`, a `maxObjects` cap and `deep` to include referenced objects — `query`, with `operationDetails` giving GraphQL-like directives: `projections` to fetch only certain attributes, `ignore` or `follow` to control which reference branches are traversed, and nested `filter`s
  • One object fetched by primary key, including composite keys — `getObjectById`
  • Referenced objects reached through a named attribute of a referencing object — `access`
  • COUNT, SUM, AVG, MIN and MAX computed across objects with an optional filter — `getAggregate`
  • Data modification as objects — `insert`, `update`, `delete`
  • One-to-one, one-to-many and many-to-many relationships and path expressions supported, across PostgreSQL, MySQL, Oracle, SQL Server, DB2 and SQLite
Requirements

Python 3.12+, Docker, and a JDBC driver for your database. `pip install ormcp-server` from public PyPI — no account or token needed. The server talks to a Gilhari microservice that carries the ORM specification: point it there with `GILHARI_BASE_URL` (default `http://localhost:80/gilhari/v1/`), or let it start one from `GILHARI_IMAGE`, `GILHARI_NAME`, `GILHARI_HOST` and `GILHARI_PORT`. Other settings: `MCP_SERVER_NAME`, `GILHARI_TIMEOUT` (default 30), `LOG_LEVEL`, and `READONLY_MODE`, which when set to `True` stops the server from exposing the tools that can modify data. The README marks the product Beta and states it is not intended for commercial use.

Setup effort

One command — pip install ormcp-server