Files

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_sql MCP 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:

  1. License — MIT/Apache = safe. AGPL/fair-code/SSPL = legal risk for commercial.
  2. Single-binary vs stack — fewer deps = less ops burden. Java runtimes are heavy.
  3. Databases supported — must match your target set. Many are PostgreSQL-only.
  4. Raw SQL via API — does it allow arbitrary queries, or only pre-defined CRUD on tables?
  5. MCP support — native MCP is best (Hermes connects directly). REST + OpenAPI next.
  6. Active maintenance — check GitHub: recent commits, release cadence, issue responsiveness.
  7. SaaS vs self-hosted paywall — some are "open source" but API/MCP is enterprise-only (CloudBeaver).