Provides comprehensive database management tools including table listing, structure inspection, DDL export, and executing read-only and write queries on MySQL databases with engine-specific features.
Provides comprehensive database management tools including table listing, structure inspection, DDL export, and executing read-only and write queries on PostgreSQL databases.
Provides comprehensive database management tools including table listing, structure inspection, DDL export, and executing read-only and write queries on SQLite embedded databases.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SQLx MCP Servershow me the structure of the users table"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SQLx MCP Server
A Model Context Protocol (MCP) server implementation in Rust that provides comprehensive database management tools using SQLx.
π Features
This server provides 6 powerful MCP tools for database management:
π get_database_info - Get basic database information
π list_tables - List all tables with metadata (comments, row counts, etc.)
ποΈ get_table_structure - Get detailed table structure information
π get_table_ddl - Export table DDL (CREATE TABLE statements)
ποΈ execute_readonly_query - Execute read-only SQL queries safely
βοΈ execute_write_query - Execute write SQL operations
π― Smart Configuration Management
Auto-Configuration Detection: Server automatically detects and reports database configuration at startup
Client Notification: Clients receive configuration status via MCP protocol initialization
Flexible URL Management: Optional database URL parameters when server is pre-configured
Secure Display: Database credentials are automatically masked for security
ποΈ Supported Databases
PostgreSQL - Full support with native features
MySQL - Complete functionality including engine-specific features
SQLite - Comprehensive support for embedded database operations
π§ Installation
Option 1: NPM (Recommended)
Install globally via npm:
npm install -g @sqlx-mcp/sqlx-mcpOr use directly with npx (no installation needed):
npx @sqlx-mcp/sqlx-mcp --database-url "postgresql://user:pass@localhost/mydb"Option 2: Build from Source
Prerequisites
Rust 1.70 or later
Git
Build Steps
git clone https://github.com/lihongjie0209/sqlx-mcp.git
cd sqlx-mcp
cargo build --releaseπ Quick Start
1. Run as Standalone Server
Using NPM/npx (Recommended):
# Install globally and run
npm install -g @sqlx-mcp/sqlx-mcp
sqlx-mcp --database-url "postgresql://user:pass@localhost/mydb"
# Or run directly with npx (no installation needed)
npx @sqlx-mcp/sqlx-mcp --database-url "postgresql://user:pass@localhost/mydb"
# With environment variable
export DATABASE_URL="postgresql://user:pass@localhost/mydb"
npx @sqlx-mcp/sqlx-mcpUsing Built Binary:
# With environment variable
export DATABASE_URL="postgresql://user:pass@localhost/mydb"
./target/release/sqlx-mcp
# With command line argument
./target/release/sqlx-mcp --database-url "postgresql://user:pass@localhost/mydb"2. Integrate with Claude Desktop
Add to your Claude Desktop configuration. The server will automatically notify Claude about the current database configuration status.
Using NPM Package (Recommended):
With Environment Variable (Recommended):
{
"mcpServers": {
"sqlx-mcp": {
"command": "npx",
"args": ["@sqlx-mcp/sqlx-mcp"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost/mydb"
}
}
}
}With Command Line Argument:
{
"mcpServers": {
"sqlx-mcp": {
"command": "npx",
"args": ["@sqlx-mcp/sqlx-mcp", "--database-url", "postgresql://user:pass@localhost/mydb"]
}
}
}Without Pre-configuration (require database_url in each tool call):
{
"mcpServers": {
"sqlx-mcp": {
"command": "npx",
"args": ["@sqlx-mcp/sqlx-mcp"]
}
}
}Using Built Binary:
Windows (%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"sqlx-mcp": {
"command": "D:\\path\\to\\sqlx-mcp\\target\\release\\sqlx-mcp.exe",
"args": ["--database-url", "postgresql://user:pass@localhost/mydb"]
}
}
}macOS/Linux:
{
"mcpServers": {
"sqlx-mcp": {
"command": "/path/to/sqlx-mcp/target/release/sqlx-mcp",
"args": ["--database-url", "postgresql://user:pass@localhost/mydb"]
}
}
}π Database Configuration
The server provides intelligent database configuration management with automatic detection and client notification.
Configuration Priority
The server resolves database connections with the following priority:
Tool Parameter (highest) -
database_urlparameter in individual tool callsCommand Line -
--database-urlargument at server startupEnvironment Variable (lowest) -
DATABASE_URLenvironment variable
Auto-Detection & Client Notification
When clients connect to the MCP server, they automatically receive configuration information:
Configuration Status: Whether a database is pre-configured
Connection Source: How the database was configured (command line, environment, or none)
Masked URL: Database connection string with credentials safely hidden
Usage Guidance: Whether
database_urlparameter is required in tool calls
Example Client Notifications:
No Configuration:
Current database configuration: No database configured. Please provide database_url parameter in tool calls or set DATABASE_URL environment variable.Environment Variable Configuration:
Current database configuration: Database configured via environment variable: postgresql://user:***@localhost:5432/mydb
If a database is already configured, you can omit the database_url parameter in tool calls.Command Line Configuration:
Current database configuration: Database configured via command line: mysql://root:***@localhost:3306/testdb
If a database is already configured, you can omit the database_url parameter in tool calls.Flexible Usage Patterns
Pre-configured Server (Recommended)
# Set up database via environment variable
export DATABASE_URL="postgresql://user:pass@localhost/mydb"
npx @sqlx-mcp/sqlx-mcp
# Or via command line
npx @sqlx-mcp/sqlx-mcp --database-url "postgresql://user:pass@localhost/mydb"Then use tools without database_url parameter:
{
"name": "list_tables",
"arguments": {}
}Per-Tool Database URLs
{
"name": "list_tables",
"arguments": {
"database_url": "postgresql://user:pass@different-host/other-db"
}
}This allows flexible connection management for multiple databases.
π οΈ Tool Usage Examples
Get Database Information
{
"name": "get_database_info",
"arguments": {
"database_url": "postgresql://user:pass@localhost/mydb" // Optional if server is pre-configured
}
}List Tables with Metadata
{
"name": "list_tables",
"arguments": {
"database_url": "postgresql://user:pass@localhost/mydb" // Optional if server is pre-configured
}
}Export Table DDL
{
"name": "get_table_ddl",
"arguments": {
"database_url": "postgresql://user:pass@localhost/mydb", // Optional if server is pre-configured
"table_name": "users"
}
}Execute Safe Read-Only Queries
Supports SELECT, WITH (CTE), SHOW, DESCRIBE, EXPLAIN:
{
"name": "execute_readonly_query",
"arguments": {
"database_url": "postgresql://user:pass@localhost/mydb", // Optional if server is pre-configured
"query": "WITH recent_users AS (SELECT * FROM users WHERE created_at > '2024-01-01') SELECT count(*) FROM recent_users"
}
}Note: When the server is pre-configured with a database (via command line or environment variable), the database_url parameter becomes optional in all tool calls. The server will notify clients about the current configuration status during MCP initialization.
π Security Features
Query Validation: Strict read-only query enforcement for safe operations
SQL Injection Protection: Parameterized queries where possible
Connection Security: Supports SSL/TLS encrypted connections
Access Control: Respects database user permissions
Credential Protection: Database passwords automatically masked in logs and client notifications
Secure Configuration Display: Connection strings shown with sensitive information hidden
ποΈ Architecture
Built with modern Rust ecosystem:
rmcp - Rust MCP SDK for protocol compliance
SQLx - Async SQL toolkit with compile-time checked queries
Tokio - Async runtime for high performance
Serde - Serialization framework for JSON handling
Tracing - Structured logging and debugging
π Documentation
π§ Development & Release
This project includes an advanced automated release system powered by AI:
Environment Setup
For Windows PowerShell users who want to use the automated release features:
# Quick setup using .env file (recommended)
Copy-Item ".env.template" ".env"
notepad .env # Add your OPENROUTER_API_KEY
# Or set environment variable for current session
$env:OPENROUTER_API_KEY = "your-api-key-here"For detailed PowerShell environment setup, see PowerShell Environment Setup Guide.
Release Management
The project includes a comprehensive release script with AI-powered commit message generation:
# Create automated release with AI-generated commit messages
npm run release
# The script will:
# - Bump version numbers
# - Generate intelligent commit messages using AI
# - Update package files
# - Create git commits and tags
# - Push to repositoryFeatures:
π€ AI-powered commit message generation using OpenRouter
π¦ Automatic version management
π Multi-file synchronization (Cargo.toml β package.json)
π Git automation (commit, tag, push)
π₯οΈ Cross-platform support (Windows, macOS, Linux)
π€ Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
Model Context Protocol for the protocol specification
SQLx for the excellent SQL toolkit
rmcp for the Rust MCP SDK
π Support
Create an Issue for bug reports
Start a Discussion for questions
Check the Documentation for detailed guides
Made with β€οΈ and π¦ (Rust)
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.