Check, test, prove and review a rowstile policy: access rules for Postgres row-level security
MCPpedia last refreshed this data
io.github.rowstile/rowstile is an MCP server that check, test, prove and review a rowstile policy: access rules for Postgres row-level security. Its tool list has not been published yet over stdio and sse, requires no API key, and scores 62/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"io-github-rowstile-rowstile": {
"args": [
"-y",
"rowstile"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Check, test, prove and review a rowstile policy: access rules for Postgres row-level security
This server supports HTTP transport. Be the first to test it - help the community know if it works.
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked rowstile 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 data
Token-efficient database MCP server for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite
Manage Supabase projects — databases, auth, storage, and edge functions
A cross-platform desktop application for managing AI Agents and MCP Servers. 一款用于管理AI智能体与MCP服务器的跨平台桌面应用程序。
Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡
MCP Security Weekly
Get CVE alerts and security updates for io.github.rowstile/rowstile and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Authorization inside your Postgres. Sharing, groups, nested folders and tenants, written in one policy file and compiled to row-level security. There is no authorization service to run beside the database, and no permission data to copy into one and keep in step: the rules read the tables your app already has.

Write who-can-do-what in one small file, next to the data it depends on. The rowstile command
compiles it into plain SQL: views, trigger-maintained tables for inheritance, row-level security
policies, and functions for app code: checks, sharing, "who has access", "why", access requests,
reviews, audit. Each change to the policy ships as a migration for the tool your app already uses
(Alembic, Django, Prisma, Drizzle Kit, Rails, Laravel, Ecto, EF Core, sqlx, goose, dbmate, Flyway or
plain SQL). Nothing is installed in the database first, and nothing has to run next to it: any
Postgres 16, 17 or 18 works, managed or not, and the owner of your tables runs the migrations, no
superuser needed.
app role app_user -- the Postgres role the app connects as
type user = app.users
type folder = app.folders
owner : user = owner_id -- a relation read from a column
parent : folder = parent_id
editor : user = app.folder_editors(folder_id -> user_id) -- ... or from a link table
can edit = owner or editor or parent.edit -- inherited down the tree
can view = edit
rules app.folders
select : view
update : edit
update owner_id : owner -- only the owner gives it away
update parent_id after : parent.edit -- moved only under a folder they may edit
The app says who is asking in each transaction and queries its tables as usual; RLS filters every read and checks every write:
BEGIN;
SELECT authz.act_as('user', '42'); -- a trusted backend, or:
-- SELECT authz.login_key('ak_...'); -- an API key (optionally limited by scopes)
-- SELECT authz.login_jwt('eyJ...'); -- a JWT from your identity provider
SELECT * FROM app.folders; -- only the folders 42 may view
SELECT authz.can('folder', 7, 'edit'); -- ask directly
SELECT * FROM authz.perms_of('folder', ARRAY['7', '8']); -- a list's buttons, in one call
COMMIT;
It fits when:
It doesn't when:
rowstile 0.1.0 is in beta: complete enough to use before it is released, and it may still change where using
it shows a need. Until 1.0, a minor release may change the language, the authz.* functions, the SDKs and the
file formats; from the beta on, each release upgrades a database from the one before it, and the changelog
says what to do. What a 0.x release promises.
rowstile was called rowfence until 0.1.0-alpha.1; another product had the name first. The changelog says what the alphas were: [Before the beta](CHANGELOG.md#b