> For the complete documentation index, see [llms.txt](https://docs.prestd.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.prestd.com/readme.md).

# pREST

pREST — open-source instant REST (Representational State Transfer) and Model Context Protocol (MCP) APIs for SQL databases. PostgreSQL-first, now multi-database.

**pREST** is open-source software that gives you instant [REST (Representational State Transfer)](/api-reference.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 8, 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))                                               |
| 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.md). Phases: [Database roadmap](/databases/roadmap.md).

***

## Latest release

[**v2.5.1**](/releases/v2.5.1.md) — fixes MySQL bugs from v2.5.0 (MCP on MySQL, registry schema scope, integer and type fidelity, 503 without driver text). Includes 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.1`
* Go: `go install github.com/prest/prest/v2/cmd/prestd@v2.5.1`
* Studio: [pREST Studio](/get-started/prest-studio.md)

{% hint style="warning" %}
Skipping v2.4.2 on the way to v2.5.1? 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.md) and [Upgrading to v2](/get-started/upgrading-to-v2.md).

***

## Get started

1. [Get pREST](/get-prest.md) — Docker, Homebrew, or Go
2. [Configuring pREST](/get-started/configuring-prest.md)
3. [API Reference](/api-reference.md)
4. Optional: [MCP over HTTP](/get-started/mcp-over-http.md) for AI clients
5. Optional: [AI and MCP](/ai.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.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.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.md) · [docs.prestd.com/ai](https://docs.prestd.com/ai).

### How do I start quickly?

Use Docker or Homebrew from [Get pREST](/get-prest.md), set `PREST_PG_URL` (or `pg.*` / `DATABASE_URL`), and call `http://localhost:3000/{database}/{schema}/{table}`.

***

## Related documentation

* [Key features](/readme/prestd-key-features.md)
* [Acronyms](/readme/acronyms.md) ([REST](/readme/acronyms.md#rest), [MCP](/readme/acronyms.md#mcp), [AI](/readme/acronyms.md#ai))
* [Databases](/databases.md)
* [Database roadmap](/databases/roadmap.md)
* [AI and MCP](/ai.md)
* [Who uses pREST](/readme/who-uses-prest.md)
* [Contributing](/readme/contributing-to-prestd.md)

Questions? [GitHub Discussions](https://github.com/prest/prest/discussions) or [Discord](https://discord.gg/aB8mwvVEhC).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.prestd.com/readme.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
