Default-deny action registry, append-only spend ledger, and human sign-off audit trail (MCP tools).
MCPpedia last refreshed this data
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"rails-mcp": {
"command": "rails-mcp"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A self-hosted, caller-configured default-deny action registry + append-only spend ledger + CLI-only sign-off audit trail, exposed as MCP tools. Different category from this author's other six MCP servers (mcp-factory, rag-mcp, bus-mcp, desktop-mcp, github-mcp, discord-mcp) -- those are devtools ("connect an agent to X"); this one is governance and safety: "stop an agent from doing something irreversible without a human
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'rails-mcp' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked rails-mcp against OSV.dev.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in finance
MCP server for QuickBooks Online — accounts, customers, invoices, bills, and reports.
Real-time financial market data: stocks, forex, crypto, commodities, and economic indicators
Let AI agents create, discover, and track tokens across chains via Printr.
MaverickMCP - Personal Stock Analysis MCP Server
MCP Security Weekly
Get CVE alerts and security updates for io.github.jaimenbell/rails-mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A self-hosted, caller-configured default-deny action registry + append-only spend ledger + CLI-only sign-off audit trail, exposed as MCP tools. Different category from this author's other six MCP servers (mcp-factory, rag-mcp, bus-mcp, desktop-mcp, github-mcp, discord-mcp) -- those are devtools ("connect an agent to X"); this one is governance and safety: "stop an agent from doing something irreversible without a human noticing."
Ported and generalized from a live internal registry (shared/rails/,
31 tests, running against a real multi-bot fleet since 2026-07-06) --
this pattern shipped internally before it shipped publicly.
Is:
action_type strings as
unconditionally GATED (default-deny), registered or not.enforcement_layer, enforcement_pointer, ceremony) --
informational, never permissive.Is NOT:
classify_action returning GATED does not block
anything by itself. You still wire it into your own PreToolUse hook,
permission deny-list, or CI gate -- rails-mcp gives you the schema and
the audit trail, not the interceptor. record_spend_intent records
intent to spend; it never calls a vendor, a paid API, or a broker, and
nothing here stops an over-budget spend from happening.classify_action(action_type) always returns "GATED" -- registered
or not, whatever config was loaded, no argument or config field can change
it. This is the whole product. A config-driven fail-open knob would defeat
the entire pitch, so classify() (rails_mcp/registry.py) takes only an
action_type argument: there is no parameter through which a caller could
ever make it return anything permissive. is_action_registered answers a
separate, purely informational question -- "do I know something about this
action-type's enforcement?" -- and never feeds back into the GATED verdict.
pip install rails-mcp
Add to your Claude Desktop/Code MCP config:
{
"mcpServers": {
"rails-mcp": {
"command": "rails-mcp"
}
}
}
No console script on PATH? Fall back to "command": "python", "args": ["-m", "rails_mcp"].
By default the registry loads empty (honest-empty, not fail-open --
classify_action is still unconditionally GATED for everything). Point
it at your own action-type config:
{
"mcpServers": {
"rails-mcp": {
"command": "rails-mcp",
"env": { "RAILS_MCP_CONFIG_PATH": "C:\\path\\to\\rails.config.yaml" }
}
}
}
See examples/rails.config.example.yaml (or .example.json) for the
config shape.
All six are read-mostly -- none of them can write to the sign-off ledger.
| Tool | Purpose |
|---|---|
| `classify |