Provides read-only access to MySQL/MariaDB databases with tools for listing tables, previewing table data, and executing SELECT queries.
Provides read-only access to MySQL/MariaDB databases with tools for listing tables, previewing table data, and executing SELECT queries.
Provides read-only access to PostgreSQL databases with tools for listing tables, previewing table data, and executing SELECT queries.
Read-only Database MCP
Minimal TeamSpeak/TypeScript setup that exposes a read-only database Model Context Protocol server and a small UI for managing DB configs, toggling light/dark mode, and viewing usage history.
Prerequisites
Node 18+
A PostgreSQL or MySQL/MariaDB database user with read-only permissions
Install
Run the UI + API
Serves the config/history API and the minimalist UI at http://localhost:4000.
Run the MCP server
The MCP server reads the same saved configs from data/state.json and only exposes read-only tools.
Tools exposed (over stdio):
list_tables— input{ db: "<configName>" }preview_table— input{ db: "<configName>", table: "table_name", limit?: number }run_select— input{ db: "<configName>", sql: "SELECT ..." }(rejects non-SELECT)
Use these tool names when connecting your model/agent to the MCP server.
How to use
Start
npm run devand open the UI. Enter DB connection details and click Save config. Set SSL mode todisable,require, orno-verify(self-signed).For MySQL/MariaDB TCP/IP, pick type “MySQL / MariaDB”.
Select the saved config in “Use config” to list tables, preview a table, or run a SELECT.
Each successful MCP/HTTP call records a history entry (DB name, tables touched, timestamp).
In your agent, connect to the MCP server via stdio and call the tools using the saved
dbname; you only need to pass the friendly name, not the credentials.
Notes
Configs and history live in
data/state.json. Delete that file to reset.The server enforces read-only mode with
SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLYand rejects non-SELECT queries.If your MCP SDK exports different helper names, adjust
src/mcp-server.tsregistration to match your SDK version.Extend
src/db.tsto add other engines (MySQL, SQLite) while keeping read-only guards.
This server cannot be installed