Turns your Prisma schema into typed MCP tools, with destructive writes gated behind human approval
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Give your agent your database. Don't give it SQL.
Quickstart Β· Commands Β· What it does not govern Β· Against a rules file Β· Examples Β· Docs

orangerail init on a three-model Prisma schema, then a real tools/list against the server it
generated. Sixteen tools: a get and a list per object, one action per write, and
check_approval. Nothing on that list takes a query. The three locks are --gate delete, which
is a default you change in one line, not a verdict.
A rules file cannot do this. It can ask the agent not to run a query. It cannot take the tool off the list β and we measured what the difference is worth, including the four claims that died when we did.
orangerail reads the schema you already have and generates the agent's surface from it.
orangerail init turns a prisma/schema.prisma into an MCP server: a get and a list per
object, one action per write with a zod input schema, and nothing else β no execute_sql, and
nothing on the tool list that takes a query. It is a scanner and a code generator, with no LLM
calls and no API keys. Writes you are happy to have run unattended run unattended. The ones you are
not carry policy: { approval: 'required' }, which stops the call and turns it into an approval a
person can act on later β including a person who is not you, after the conversation that produced
it has ended.
Bounded is not safe, and this README will not pretend otherwise. A generated surface buys a reach that is finite and legible, not a claim that nothing harmful is inside it. You declared the verbs, so a destructive verb you declared is a verb the agent can call.
One precondition decides whether any of this is worth installing: orangerail governs only its own tools. If the agent also has a shell with credentials or a second database MCP server, it can go around the rail β see what orangerail does not govern.
Pre-release and installable: 0.1.5 on npm β orangerail (the CLI) plus orangerail-core,
orangerail-mcp, orangerail-docs-gen and orangerail-studio. The API will move before 1.0, and
Status has the one upgrade note that matters.
One command, and the surface init generates is a map you can read.
Every object, how they relate, and every write action an agent can reach. Hover a table to light up its relations and actions; click one to read the policy that governs it.

Crisper version:
assets/studio-map.mp4β the same run at full resolution. One real run on a sample commerce domain,--gate delete. The locks are not annotations added for the video: they are what the studio draws from your ontology, which is why nine actions carry one and eighteen do not.
Be exact about what that is worth. The relations come from ontology/_links.mjs, which init
derives from your Prisma relations, so Customer_list's description reads List Customer records. Relations: has many Order. The agent is told that a Customer has many Orders. It still cannot
follow the edge: no traversal tool, no join, no aggregate, and Customer_list refuses a filter that
reaches into Order. Knowing the shape of a domain and being able to query across it are different
things, and only the first one is here.
Seven steps, every output verbatim from one recorded run. The reasoning behind each one β and the failure each prevents β is in Quickstart, annotated; requirements and the Prisma 7 caveat are the first thing on that page.
1. Install orangerail into the project you are about to scan.
2. Scan your project, in a repo with a prisma/schema.prisma.
3. Install the runtime the generated code loads.
4. Give the generated actions a database to reach.
Already have a database? Do not
db pushover it β adopting orangerail against an existing database.
5. Point your agent host at it. Drop this in your project root as .mcp.json:
Other hosts, the claude mcp add one-liner, and running from source:
wire it into your agent host.
6. Record the governance baseline β and commit it. ontology/ is yours to edit, so the one
line that disarms the whole flow is one careless deletion away and a re-scan cannot notice. The
posture is compared against a recorded file instead.
Commit orangerail.governance.json. Its whole value is that a pull request removing an
approval gate shows "approval": "required" turning into null in its own diff, in front of a
reviewer, before CI runs at all.
7. Now leave. While you are gone the agent works the queue: the writes you left un-gated go through, and the deletion it was asked for stops. When you come back:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/orangerail)<a href="https://allmcps.com/mcp/orangerail"><img src="https://allmcps.com/api/badge/orangerail?style=directory" alt="Orangerail on AllMCPs" /></a>