4.5 KiB
Database Query Tools — Self-Hosted REST API Options
Researched 2026-07-09. Source: detailed multi-step web research of 9 database-to-API tools.
The Landscape
| Tool | Self-Hosted | Free | REST API | Raw SQL | MySQL | SQLite | Postgres | MCP | Setup |
|---|---|---|---|---|---|---|---|---|---|
| Faucet | ✅ | ✅ MIT | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ Native | <1 min |
| Python Skill | ✅ (in-process) | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ❌ | ~30 min |
| Directus | ✅ | ✅ MIT | ✅ | 🔶 Custom | ✅ | ❌ | ✅ | ❌ | ~30 min |
| Supabase | ✅ | ✅ (limited) | ✅ | ❌ (RPC only) | ❌ | ❌ | ✅ | ❌ | ~15 min |
| NocoDB | ✅ | 🔶 fair-code | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ~15 min |
| Adminer | ✅ | ✅ | ❌ None | ❌ | ✅ | ✅ | ✅ | ❌ | ~5 min |
| CloudBeaver | ✅ | 🔶 API paid | 🔶 Enterprise | 🔶 Enterprise | ✅ | ✅ | ✅ | 🔶 Enterprise | ~20 min |
| PostgREST | ✅ | ✅ MIT | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ~10 min |
| restSQL | ✅ | ✅ Apache | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ~30 min |
🏆 Top Pick: Faucet
- MIT licensed, completely free self-hosted. Cloud $5/mo Pro / $50/mo Team optional.
- Single 47MB Go binary, zero dependencies. No Docker, Node.js, PHP, or system DB needed.
- All 3+ target databases: MySQL 5.7+, SQLite 3.35+, PostgreSQL 9.6+ (also SQL Server, Oracle, Snowflake).
- Auto-generates REST API per table — CRUD + filtering + pagination + RBAC + OpenAPI docs.
- Raw SQL via
faucet_raw_sqlMCP tool — opt-in, disabled by default. - Native MCP server built in — Hermes connects directly via mcp_servers config.
Hermes Integration
MCP server config in ~/.hermes/config.yaml:
mcp_servers:
database:
command: npx
args: ["@faucetdb/faucet", "serve", "--mcp"]
Or run as standalone service then add DB connections:
# Install (any method):
npx @faucetdb/faucet serve # npm
brew install faucetdb/tap/faucet # Homebrew
docker run -p 8080:8080 faucetdb/faucet:latest # Docker
# Add a database:
faucet db add --name mydb --driver postgres --dsn "postgres://user:pass@host/mydb"
# Create API key:
faucet key create --role default
# Query:
curl -H "X-Faucet-Api-Key: KEY" http://localhost:8080/api/v1/mydb/_table/users
MCP tools available to Hermes: faucet_list_services, faucet_list_tables, faucet_describe_table, faucet_query, faucet_insert, faucet_update, faucet_delete, faucet_raw_sql (disabled by default — enable explicitly).
⚠️ Raw SQL: The Critical Distinction
Many "database API" tools claim SQL support but actually require pre-registering queries as stored procedures (Supabase RPC, Directus custom endpoints) or defining SQL views (NocoDB). Only Faucet and restSQL offer ad-hoc raw SQL execution over the API.
If ad-hoc SQL querying is needed (the Hermes agent needs to explore unknown schemas, run arbitrary SELECTs, or debug production data), Faucet is the only actively maintained option that supports all 3 databases and raw SQL.
🥈 Fallback: Custom Python Skill
When you can't run an external service, write a Hermes skill with Python DB drivers:
# ~/.hermes/skills/db-query/query.py
import sqlite3, mysql.connector, psycopg2, json, sys
def query_mysql(sql, params=None):
conn = mysql.connector.connect(host="wphost02", user=..., password=..., database=...)
cursor = conn.cursor(dictionary=True)
cursor.execute(sql, params or ())
return cursor.fetchall()
Hermes calls via: python3 query.py --db mysql --query "SELECT * FROM users"
Pros: Zero-infra, full control, works with any existing DB immediately. Cons: Requires writing Python code, no automatic schema introspection, no RBAC layer.
Research Methodology for Database Tools
When evaluating a database-to-API tool, check these axes in order:
- License — MIT/Apache = safe. AGPL/fair-code/SSPL = legal risk for commercial.
- Single-binary vs stack — fewer deps = less ops burden. Java runtimes are heavy.
- Databases supported — must match your target set. Many are PostgreSQL-only.
- Raw SQL via API — does it allow arbitrary queries, or only pre-defined CRUD on tables?
- MCP support — native MCP is best (Hermes connects directly). REST + OpenAPI next.
- Active maintenance — check GitHub: recent commits, release cadence, issue responsiveness.
- SaaS vs self-hosted paywall — some are "open source" but API/MCP is enterprise-only (CloudBeaver).