---
description: >-
pREST — open-source instant REST (Representational State Transfer) and
Model Context Protocol (MCP) APIs for SQL databases. PostgreSQL-first, now multi-database.
---
# pREST
**pREST** is open-source software that gives you instant [REST (Representational State Transfer)](api-reference/README.md) and [Model Context Protocol (MCP)](get-started/mcp-over-http.md) APIs for SQL databases. Point it at a database and get production-ready HTTP APIs — CRUD, custom SQL routes, auth, ACL, and (from v2.1.0) a read-only MCP endpoint — without hand-writing a backend.
**PostgreSQL is the first native adapter.** MySQL 8.0.19+ is a separate native dialect from [v2.5.0](releases/v2.5.0.md). Postgres-compatible engines can be certified on the PostgreSQL adapter. SQLite and SQL Server are on the [roadmap](databases/roadmap.md).
*Last updated: October 18, 2026*
---
## What you get
| Capability | Detail |
|------------|--------|
| Instant REST | Auto CRUD from schema: `GET/POST/PUT/PATCH/DELETE /{db}/{schema}/{table}` |
| MCP over HTTP | Read-only `/_mcp` for AI agents and IDEs ([guide](get-started/mcp-over-http.md)) |
| Auth & ACL | JWT/auth stack and table-level permissions; HMAC key minimums enforced (v2.4.2, [#1017](https://github.com/prest/prest/pull/1017)); catalog routes behind auth and pREST's own tables reserved (v2.5.2, [#1070](https://github.com/prest/prest/pull/1070)) |
| Multi-database | Alias registry across clusters ([guide](get-started/multi-database.md)); Postgres/Timescale multi-adapter auto-detect (v2.3.0, [#999](https://github.com/prest/prest/pull/999)) |
| Vector search | pgvector KNN ordering / distance filtering via `_korder` and `:vecdist` (v2.4.0, [#1011](https://github.com/prest/prest/pull/1011)) |
| Observability | Opt-in OpenTelemetry traces/metrics/logs (v2.4.0, [#1003](https://github.com/prest/prest/pull/1003)) |
| Custom SQL | Templated `/_QUERIES` scripts with bound values via `sqlVal` ([guide](api-reference/custom-queries.md#binding-values-sqlval-sqllist-ident-v242)) |
| Plugins | Middleware and endpoint extensions |
---
## Which databases work today?
| Status | Engines |
|--------|---------|
| **Native** | [PostgreSQL](databases/postgresql.md), [MySQL 8.0.19+](databases/mysql.md) |
| **Hosted PostgreSQL** | [Aurora PostgreSQL](databases/aurora-postgresql.md), Neon, Supabase, AlloyDB |
| **Certified / certifying** | [CockroachDB](databases/cockroachdb.md), [YugabyteDB](databases/yugabytedb.md) |
| **Compatible with caveats** | [TimescaleDB](databases/timescaledb.md), [Amazon Redshift](databases/amazon-redshift.md) |
| **Roadmap** | MariaDB, TiDB, Aurora MySQL, [SQLite](databases/sqlite.md), [SQL Server](databases/sql-server.md) |
Full matrix and labels: [Databases](databases/README.md). Phases: [Database roadmap](databases/roadmap.md).
---
## Latest release
**[v2.5.2](releases/v2.5.2.md)** — security release: fixes stored-query SQL execution ([GHSA-2x9q-r7j9-g85f](https://github.com/prest/prest/security/advisories/GHSA-2x9q-r7j9-g85f), critical), unauthenticated catalog routes ([GHSA-fhf5-m388-4w4p](https://github.com/prest/prest/security/advisories/GHSA-fhf5-m388-4w4p)), and plugin path traversal ([GHSA-fmr6-9j48-xrqp](https://github.com/prest/prest/security/advisories/GHSA-fmr6-9j48-xrqp)), and replaces `pg.single` with `pg.allowed_databases`. Includes the MySQL fixes from [v2.5.1](releases/v2.5.1.md), the MySQL 8 adapter from [v2.5.0](releases/v2.5.0.md), and the hardening from [v2.4.2](releases/v2.4.2.md).
- Docker: `prest/prest:v2.5.2`
- Go: `go install github.com/prest/prest/v2/cmd/prestd@v2.5.2`
- Studio: [pREST Studio](get-started/prest-studio.md)
{% hint style="danger" %}
**Upgrade from v2.5.1 or earlier now.** v2.5.2 makes `prest_users` / `prest_queries` unreachable over REST and puts the catalog routes behind auth. If you used database-backed queries without auth, audit `prest_queries`. See [v2.5.2 — Upgrading](releases/v2.5.2.md#upgrading-from-v251).
{% endhint %}
{% hint style="warning" %}
Skipping v2.4.2 on the way to v2.5.2? Check that `jwt.key` is at least 32 bytes (HS256) first — a shorter key is discarded at startup and auth disables itself. See [v2.4.2 — Upgrading](releases/v2.4.2.md#upgrading-from-v241).
{% endhint %}
See [Releases](releases/README.md) and [Upgrading to v2](get-started/upgrading-to-v2.md).
---
## Get started
1. [Get pREST](get-prest/README.md) — Docker, Homebrew, or Go
2. [Configuring pREST](get-started/configuring-prest.md)
3. [API Reference](api-reference/README.md)
4. Optional: [MCP over HTTP](get-started/mcp-over-http.md) for AI clients
5. Optional: [AI and MCP](ai/README.md) — Cursor, Claude Desktop, stdio adapter
---
## FAQ
### What is pREST?
pREST is open-source software for instant REST and MCP APIs on SQL databases. It turns HTTP requests into safe, parameterized database operations using your existing schema.
### Is pREST only for PostgreSQL?
PostgreSQL is the **native** adapter today. Engines that speak the PostgreSQL wire protocol (for example YugabyteDB, CockroachDB, Aurora PostgreSQL) can use that adapter with documented support levels. Other SQL families are planned — see the [roadmap](databases/roadmap.md).
### Does pREST provide a REST API?
**REST (Representational State Transfer)** is an architectural style for building APIs over HTTP. pREST exposes your SQL tables as REST resources at `/{database}/{schema}/{table}`, mapping standard verbs to CRUD on the same server as MCP.
Yes. Full reference: [API Reference](api-reference/README.md).
### Does pREST support MCP for AI agents?
**MCP (Model Context Protocol)** is an open standard for connecting AI apps and agents to tools and data. pREST exposes a read-only MCP endpoint at `/_mcp` so clients can discover schemas and query tables through the same server as the REST API.
Yes, from **v2.1.0**. Stdio clients use the [pREST MCP Adapter](ai/install-prest-mcp.md) (`brew install prest/tap/prest-mcp`). Full guide: [MCP over HTTP](get-started/mcp-over-http.md) · [AI and MCP](ai/README.md).
### How does pREST work with AI?
**Artificial intelligence (AI)** here means applications and agents that use models to reason and act on tools and data. pREST connects them to your SQL catalog through read-only [MCP](get-started/mcp-over-http.md) at `/_mcp` and the same auth/ACL as the REST API.
Client setup (adapters, IDE config): [AI and MCP](ai/README.md) · [docs.prestd.com/ai](https://docs.prestd.com/ai).
### How do I start quickly?
Use Docker or Homebrew from [Get pREST](get-prest/README.md), set `PREST_PG_URL` (or `pg.*` / `DATABASE_URL`), and call `http://localhost:3000/{database}/{schema}/{table}`.
---
## Related documentation
- [Key features](prestd/prestd-key-features.md)
- [Acronyms](prestd/acronyms.md) ([REST](prestd/acronyms.md#rest), [MCP](prestd/acronyms.md#mcp), [AI](prestd/acronyms.md#ai))
- [Databases](databases/README.md)
- [Database roadmap](databases/roadmap.md)
- [AI and MCP](ai/README.md)
- [Who uses pREST](prestd/who-uses-prest.md)
- [Contributing](prestd/contributing-to-prestd.md)
Questions? [GitHub Discussions](https://github.com/prest/prest/discussions) or [Discord](https://discord.gg/aB8mwvVEhC).