npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@sqlx-mcp/sqlx-mcp

v1.2.0

Published

Rust MCP server for SQLx database management

Readme

SQLx MCP Server

A Model Context Protocol (MCP) server implementation in Rust that provides comprehensive database management tools using SQLx.

Rust License: MIT

🚀 Features

This server provides 6 powerful MCP tools for database management:

  1. 🔍 get_database_info - Get basic database information
  2. 📋 list_tables - List all tables with metadata (comments, row counts, etc.)
  3. 🏗️ get_table_structure - Get detailed table structure information
  4. 📜 get_table_ddl - Export table DDL (CREATE TABLE statements)
  5. 👁️ execute_readonly_query - Execute read-only SQL queries safely
  6. ✏️ 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-mcp

Or 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-mcp

Using 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:

  1. Tool Parameter (highest) - database_url parameter in individual tool calls
  2. Command Line - --database-url argument at server startup
  3. Environment Variable (lowest) - DATABASE_URL environment 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_url parameter 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 repository

Features:

  • 🤖 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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

📞 Support


Made with ❤️ and 🦀 (Rust)