About strut-stack-sql
Strut Stack SQL is a Rust MCP server for querying MySQL, PostgreSQL, and SQLite, intended for agent clients. It limits result size and uses SQL AST checks and configurable write controls to keep database access bounded.
Key features
- 01Supports MySQL, PostgreSQL, and SQLite
- 02Defaults to three token-efficient tools
- 03Applies SQL AST and complexity checks
- 04Provides read-only and configurable write modes
- 05Supports stdio and Streamable HTTP
Use cases
- 01Searching database objects across supported engines
- 02Running bounded SQL queries for an agent
- 03Reviewing query performance
- 04Serving database tools over stdio or HTTP
MCP support
Exposes database search, SQL execution, and query performance analysis to MCP clients. It supports stdio and Streamable HTTP transports, with additional tools available through `--full-tools`.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEStrut Stack SQL
Light strut. Extreme load.
Token-efficient MCP server for MySQL, PostgreSQL, and SQLite — written in Rust. Part of the StrutStack ecosystem; usable standalone with any agent client.
Formerly published as mcp-sql-rust (compat binary alias still ships in v1.0).
Mission
- Token thrift — default 3 tools, columnar
{cols,rows,meta}, row/byte caps - Best-practice Rust — AST SQL guard before pool checkout, lean release binary
- Multi-engine — PostgreSQL + MySQL + SQLite in one binary
- Ship-ready — one-command install, stdio + Streamable HTTP, Cursor-friendly launcher
Install (one command)
curl -fsSL https://raw.githubusercontent.com/rzlco666/strut-stack-sql/main/install.sh | bash
strut-stack-sql --version
Installs to ~/.local/bin (also creates mcp-sql-rust alias). Ensure ~/.local/bin is on your PATH.
Other channels (Homebrew, Scoop, winget, Docker, cargo): docs/INSTALL.md.
Quick start (Cursor)
{
"mcpServers": {
"strut-stack-sql": {
"command": "strut-stack-sql",
"args": ["--full-tools"],
"cwd": "${workspaceFolder}"
}
}
}
Project .env:
DATABASE_URL=postgresql://user:[email protected]:5432/app
Without credentials the server still starts (ephemeral sqlite::memory:) so MCP initialize succeeds; set DATABASE_URL for real queries.
Official workspace launcher (loads nested apps/api/.env, never blocks start on dead DB):
{
"mcpServers": {
"strut-stack-sql": {
"command": "node",
"args": [
"/absolute/path/to/strut-stack-sql/packaging/cursor-mcp-launcher.mjs",
"${workspaceFolder}"
]
}
}
}
Why this shape
| Choice | Detail |
|---|---|
| Default tools | search_objects, execute_sql, analyze_query_performance |
| Extra tools | --full-tools (+ DDL aliases need --allow-ddl) |
| Results | Columnar JSON only by default (token-efficient) |
| Guard | sqlparser AST; multi-statement deny; write tiers; complexity limits |
| Timeouts | Client timeout + PG statement_timeout / MySQL max_execution_time |
| Transports | stdio · --http 127.0.0.1:8080 (/mcp, /healthz) |
Measured RSS / cold-start vs Node rivals (same seed query): docs/BENCHMARKS.md. We do not invent QPS leaderboards.
CLI
strut-stack-sql --version
strut-stack-sql # stdio, read-only
strut-stack-sql --allow-writes
strut-stack-sql --full-tools
strut-stack-sql --http 127.0.0.1:8080
Docs
| Doc | Purpose |
|---|---|
| docs/QUICKSTART.md | First run |
| docs/INSTALL.md | All install channels |
| docs/SECURITY.md | Guard + write tiers |
| docs/TOOLS.md | Tool schemas |
| docs/CONFIGURATION.md | .env / TOML / CLI |
| docs/ARCHITECTURE.md | Modules |
| docs/BENCHMARKS.md | Reproducible harness |
Agent clients
See AGENTS.md for Cursor / OMNI / CodeGraph conventions.
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.