What rowstile does
The rowstile MCP server is presented as an interface for working with rowstile authorization policies, while the supplied project documentation describes rowstile itself as a policy compiler and command-line tool for PostgreSQL. Its policy language expresses who can perform actions on database records. Rules can refer to columns, link tables, ownership, editors, parent folders, nested groups, tenants, and sharing relationships.
The compiler turns a policy into ordinary SQL artifacts. These include views, tables maintained by triggers for inherited relationships, PostgreSQL row-level security policies, and functions used by application code. A policy change becomes a migration that can be applied through Alembic, Prisma, Drizzle Kit, or plain SQL. No separate authorization service is required, and the rules read the application’s existing tables.
This fits the 🗄️ Databases category because authorization is enforced inside PostgreSQL. It is intended for applications whose data and access relationships reside in one PostgreSQL database.
How it works
An application identifies the subject for a transaction, then queries or changes its tables normally. PostgreSQL RLS filters permitted reads and checks writes. The application can establish identity with authz.act_as, an API key through authz.login_key, or a JWT through authz.login_jwt. Direct authorization queries include authz.can for one decision and authz.perms_of for permissions across a list of records.
A sample policy declares application roles and data types, maps relations to columns or link tables, and combines those relations into capabilities such as edit and view. Inherited access can pass through a folder or other parent relationship. The resulting checks run as part of database access rather than through a separately synchronized permission store.
Setup and configuration
The project documents alpha installation through npm, PyPI, or Docker. The npm package includes the Python runtime needed by the command, while the Python package also provides SDK extras for supported frameworks and database libraries. The Docker example mounts the working directory and runs the migrate command.
Running rowstile init can inspect stacks including Next.js, Prisma, Drizzle, FastAPI, and SQLAlchemy, then create rowstile.toml for the migration tool. The documentation says PostgreSQL 16, 17, and 18 are supported, including managed or self-managed deployments. The database owner can run migrations without a superuser.
Tools and capabilities
The rowstile MCP server listing is supported by the project’s documented policy workflow, which includes:
- Checking and testing authorization policies.
- Proving or reviewing a policy change.
- Compiling policy files into PostgreSQL SQL and migrations.
- Generating row-level security policies and application-facing authorization functions.
- Querying direct decisions and permissions for multiple records.
- Supporting Python and TypeScript SDKs, including integrations for FastAPI, SQLAlchemy, Next.js, Prisma, and Drizzle.
The repository also documents VS Code and Zed extensions, a language server command, review automation for GitHub Actions and GitLab CI, and a browser playground. These are project features; the supplied material does not state that they are MCP client integrations.
Limitations and notes
The rowstile MCP server documentation provided here does not specify an MCP endpoint, transport, executable entry point, MCP tool schema, authentication flow for MCP clients, or client compatibility. Those details should be confirmed before configuring it as an MCP server.
The project is a 0.x preview. Minor releases may change the policy language, authz.* functions, SDKs, and file formats, although the changelog describes database upgrades. It is not designed for authorization decisions spread across multiple databases or outside PostgreSQL. The README also calls out limitations for direct Supabase Data API access, trees with many moves and secondary links, and requirements for an external audit or vendor. The project has not been audited by an outside organization.