getObjectModelSummaryLABSCO 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, amaxObjectscap anddeepto include referenced objects —query, withoperationDetailsgiving GraphQL-like directives:projectionsto fetch only certain attributes,ignoreorfollowto control which reference branches are traversed, and nestedfilters - 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
Follow the published steps — pip install ormcp-server
USE CASES
Letting a model query a database without writing SQL
Ask for the object model first, then query by class with a filter, so the model works from real class and attribute names.
Keeping a large object graph from flooding the answer
Use projections to fetch only the attributes you need and ignore the reference branches you do not.
Answering a counting question directly
Compute the aggregate on the server with a filter, instead of pulling rows back to count them.
Following a relationship from one record
Retrieve the objects referenced by a named attribute of the object you already have.
Exposing production data safely
Turn read-only mode on so the write tools are not exposed to the client in the first place.
10 tools
Listed in project docs. Your client may show a different list.
querygetObjectByIdaccessgetAggregateinsertupdateupdate2deletedelete2BEFORE YOU INSTALL
What to know first
Tools you get
10 tools named in the project's documentation.
Requires
- Python 3.12+
- Docker, to build and run the Gilhari microservice
- A JDBC driver for your database (built into your Gilhari image)
- ormcp-server on PATH
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
pip install ormcp-serverSet up the Gilhari microservice the server talks to. To start with the project's sample (a User object model), clone it:
git clone https://github.com/SoftwareTree/gilhari_example1.git
cd gilhari_example1
docker pull softwaretree/gilhari:latest
./build.sh
docker run -p 80:8081 gilhari_example1:1.0On Windows run ./build.cmd instead of ./build.sh. For your own database, follow the Gilhari SDK documentation bundled with the ormcp-server package: define your domain classes, write the ORM specification (.jdx), and build a Gilhari image that includes your JDBC driver, then run it on port 80 the same way.
MCP Clients
Claude Desktop
{
"mcpServers": {
"my-ormcp-server": {
"command": "ormcp-server",
"args": [],
"env": {
"GILHARI_BASE_URL": "http://localhost:80/gilhari/v1/"
}
}
}
}