1. Conduid
  2. Data
  3. Fastmcp Mysql
MCP server · Data

Fastmcp Mysql

MySQL MCP Server on FastMCP (python)

Unclaimed MIT last commit 11 months ago data
51Fair

Scored 8 days ago · breakdown

About Fastmcp Mysql

Fastmcp Mysql is an MCP server published by jinto in the Data category: mySQL MCP Server on FastMCP (python).

The repository has 3 stars and 0 forks, with the last commit 11 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/jinto/fastmcp-mysql

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Fastmcp Mysql

Powered by Claude · Grounded in docs

I know everything about Fastmcp Mysql. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 23 hours ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v0.1.2v0.1.2 · 9 Jul 2025Full Changelog: https://github.com/jinto/fastmcp-mysql/compare/v0.1.1...v0.1.2

README

FastMCP MySQL Server

A FastMCP server implementation for MySQL database operations, providing secure and efficient access to MySQL databases for LLM applications.

Features

  • 🔒 Secure by Default: Read-only access with optional write permissions
  • ⚡ High Performance: Connection pooling and async operations
  • 🛡️ SQL Injection Protection: Built-in query validation and prepared statements
  • 📊 Comprehensive Monitoring: Structured JSON logging
  • 🔧 Flexible Configuration: Environment variable based configuration
  • 🚀 Easy Deployment: Install and run with uvx

Installation

Using uvx (Recommended)

# Run directly with uvx
uvx fastmcp-mysql

# With environment variables
MYSQL_HOST=localhost MYSQL_USER=myuser MYSQL_PASSWORD=mypass MYSQL_DB=mydb uvx fastmcp-mysql

Using pip

pip install fastmcp-mysql

From source

git clone https://github.com/jinto/fastmcp-mysql
cd fastmcp-mysql
uv sync --all-extras

Configuration

Configure the server using environment variables:

Required Variables

Variable Description Default
MYSQL_USER Database username -
MYSQL_PASSWORD Database password -

Optional Variables

Variable Description Default
MYSQL_HOST Database host "127.0.0.1"
MYSQL_PORT Database port "3306"
MYSQL_DB Database name (optional) None
MYSQL_ALLOW_INSERT Enable INSERT queries false
MYSQL_ALLOW_UPDATE Enable UPDATE queries false
MYSQL_ALLOW_DELETE Enable DELETE queries false
MYSQL_POOL_SIZE Connection pool size 10
MYSQL_QUERY_TIMEOUT Query timeout (ms) 30000
MYSQL_LOG_LEVEL Log level (DEBUG, INFO, WARNING, ERROR) INFO
MYSQL_CACHE_ENABLED Enable query result caching true
MYSQL_CACHE_MAX_SIZE Maximum cache entries 1000
MYSQL_CACHE_TTL Cache TTL (ms) 60000
MYSQL_CACHE_EVICTION_POLICY Cache eviction policy (lru/ttl/fifo) lru
MYSQL_CACHE_CLEANUP_INTERVAL Cache cleanup interval (seconds) 60.0
MYSQL_CACHE_INVALIDATION_MODE Cache invalidation strategy aggressive
MYSQL_STREAMING_CHUNK_SIZE Streaming query chunk size 1000
MYSQL_PAGINATION_DEFAULT_SIZE Default page size 10
MYSQL_PAGINATION_MAX_SIZE Maximum page size 1000

Usage

Claude Desktop Configuration

Using Claude MCP CLI (Recommended)

# Install from PyPI (when published)
claude mcp add fastmcp-mysql \
  -e MYSQL_HOST="127.0.0.1" \
  -e MYSQL_PORT="3306" \
  -e MYSQL_USER="your_username" \
  -e MYSQL_PASSWORD="your_password" \
  -e MYSQL_DB="your_database" \
  -- uvx fastmcp-mysql

# Without specifying a database (use USE command)
claude mcp add fastmcp-mysql \
  -e MYSQL_HOST="127.0.0.1" \
  -e MYSQL_USER="your_username" \
  -e MYSQL_PASSWORD="your_password" \
  -- uvx fastmcp-mysql

# For local development
claude mcp add fastmcp-mysql \
  -e MYSQL_HOST="127.0.0.1" \
  -e MYSQL_PORT="3306" \
  -e MYSQL_USER="your_username" \
  -e MYSQL_PASSWORD="your_password" \
  -e MYSQL_DB="your_database" \
  -- uv run --project /path/to/fastmcp-mysql fastmcp-mysql

Manual Configuration

Add to your Claude Desktop configuration file:

{
  "mcpServers": {
    "mysql": {
      "command": "uvx",
      "args": ["fastmcp-mysql"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_username",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DB": "your_database",
        "MYSQL_ENABLE_SECURITY": "true",
        "MYSQL_RATE_LIMIT_RPM": "60",
        "MYSQL_RATE_LIMIT_BURST": "10"
      }
    }
  }
}

Available Tools

mysql_query

Execute SQL queries against the configured MySQL database.

Parameters:

  • query (string, required): The SQL query to execute
  • params (array, optional): Query parameters for prepared statements
  • database (string, optional): Target database (for multi-db mode)

Example:

# Simple query
result = await mysql_query("SELECT * FROM users WHERE active = 1")

# With parameters (SQL injection safe)
result = await mysql_query(
    "SELECT * FROM users WHERE age > %s AND city = %s",
    params=[18, "New York"]
)

# When no database is specified initially
result = await mysql_query("USE mydb")
result = await mysql_query("SHOW TABLES")
result = await mysql_query("SHOW DATABASES")

Security

Default Security Features

FastMCP MySQL includes comprehensive security features:

  • Read-only by default: Write operations must be explicitly enabled
  • SQL injection prevention:
    • Advanced pattern detection for SQL injection attempts
    • Parameter validation for all queries
    • Detection of encoded injection attempts (URL, Unicode, Hex)
  • Query filtering:
    • Blacklist mode: Blocks dangerous operations (DDL, system tables, file operations)
    • Whitelist mode: Only allows explicitly approved query patterns
    • Customizable filtering rules
  • Rate limiting:
    • Per-user request throttling
    • Configurable algorithms (Token Bucket, Sliding Window, Fixed Window)
    • Burst protection

Security Configuration

Configure security features via environment variables:

Variable Description Default
MYSQL_ENABLE_SECURITY Enable all security features true
MYSQL_ENABLE_INJECTION_DETECTION Enable SQL injection detection true
MYSQL_ENABLE_RATE_LIMITING Enable rate limiting true
MYSQL_FILTER_MODE Filter mode (blacklist/whitelist/combined) blacklist
MYSQL_RATE_LIMIT_RPM Rate limit requests per minute 60
MYSQL_RATE_LIMIT_BURST Burst size for rate limiting 10
MYSQL_RATE_LIMIT_ALGORITHM Rate limiting algorithm (token_bucket/sliding_window/fixed_window) token_bucket
MYSQL_MAX_QUERY_LENGTH Maximum query length in characters 10000
MYSQL_MAX_PARAMETER_LENGTH Maximum parameter length 1000
MYSQL_LOG_SECURITY_EVENTS Log security violations true
MYSQL_LOG_REJECTED_QUERIES Log rejected queries true
MYSQL_AUDIT_ALL_QUERIES Audit all queries (performance impact) false

Enabling Write Operations

Write operations are disabled by default. Enable them with caution:

# Enable specific write operations
MYSQL_ALLOW_INSERT=true \
MYSQL_ALLOW_UPDATE=true \
MYSQL_ALLOW_DELETE=true \
uvx fastmcp-mysql

Security Best Practices

  1. Use Prepared Statements: Always use parameters instead of string concatenation
  2. Principle of Least Privilege: Only enable write operations when necessary
  3. Monitor Security Events: Check logs for security violations
  4. Rate Limiting: Adjust limits based on your application needs
  5. Whitelist Mode: Use whitelist mode for production environments when possible

Development

Setup Development Environment

# Clone the repository
git clone https://github.com/jinto/fastmcp-mysql
cd fastmcp-mysql

# Create virtual environment with uv
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
uv sync --all-extras

# Install pre-commit hooks
pre-commit install

Running Tests

# Run all tests
uv run pytest tests/

# Run with coverage
uv run pytest tests/ --cov=fastmcp_mysql

# Run specific test file
uv run pytest tests/unit/test_query.py

# Run integration tests only
uv run pytest tests/integration/

Code Quality

# Format code
uv run black src tests

# Lint code
uv run ruff check src tests

# Type checking
uv run mypy src

Architecture

The server follows Clean Architecture principles:

src/fastmcp_mysql/
├── __init__.py                 # Package initialization
├── __main__.py                 # Entry point for uvx
├── config.py                   # Configuration management
├── server.py                   # FastMCP server setup
├── connection.py               # Database connection management
├── security/                   # Security module (Clean Architecture)
│   ├── __init__.py
│   ├── manager.py              # Security orchestration
│   ├── config.py               # Security configuration
│   ├── exceptions.py           # Security exceptions
│   ├── interfaces/             # Abstract interfaces
│   │   ├── injection_detector.py
│   │   ├── query_filter.py
│   │   └── rate_limiter.py
│   ├── injection/              # SQL injection detection
│   │   ├── detector.py
│   │   └── patterns.py
│   ├── filtering/              # Query filtering
│   │   ├── blacklist.py
│   │   ├── whitelist.py
│   │   └── combined.py
│   └── rate_limiting/          # Rate limiting
│       ├── token_bucket.py
│       ├── sliding_window.py
│       ├── fixed_window.py
│       └── factory.py
└── tools/                      # MCP tools
    ├── __init__.py
    └── query.py                # Query execution tool

Contributing

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

Please ensure:

  • All tests pass
  • Code is formatted with black
  • Type hints are added
  • Documentation is updated

License

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

Acknowledgments

Support

README fetched from the repository 23 hours ago. The original is authoritative.

Questions

About Fastmcp Mysql

How do I install Fastmcp Mysql?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Fastmcp Mysql safe to use with an AI agent?

Its trust score is 51 out of 100 (fair). It passes 5 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Fastmcp Mysql still maintained?

The last commit was 11 months ago and 10 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.