About mcp-sql-rust
mcp-sql-rust is a Rust MCP server for querying MySQL, PostgreSQL, and SQLite, suited to agent clients that need database access. It limits default tools and returns columnar results to reduce token use, with SQL guards and stdio or HTTP transport.
Key features
- 01MySQL, PostgreSQL, and SQLite support
- 02Three default query tools
- 03Columnar JSON results
- 04AST-based SQL safeguards
- 05stdio and Streamable HTTP transports
Use cases
- 01Query a database from an agent client
- 02Inspect schema objects and run SQL
- 03Analyze query performance
- 04Limit risky or complex SQL operations
MCP support
Exposes database tools to MCP clients over stdio or Streamable HTTP. The default set includes object search, SQL execution, and query-performance analysis.
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.