Skip to main content

A Model Context Protocol (MCP) server that enables secure interaction with MySQL databases. This server allows AI assistants to list tables, read data, and execute SQL queries through a controlled interface, making database exploration and analysis safer and more structured.

Project description

Tests PyPI - Downloads smithery badge MseeP.ai Security Assessment Badge

MySQL MCP Server

A Model Context Protocol (MCP) implementation that enables secure interaction with MySQL databases. This server component facilitates communication between AI applications (hosts/clients) and MySQL databases, making database exploration and analysis safer and more structured through a controlled interface.

Note: MySQL MCP Server is not designed to be used as a standalone server, but rather as a communication protocol implementation between AI applications and MySQL databases.

Features # 项目特性说明

  • List available MySQL tables as resources # 列出数据库表作为资源
  • Read table contents # 读取表数据
  • Execute SQL queries with proper error handling # 执行SQL查询
  • Secure database access through environment variables # 使用环境变量进行安全认证
  • Comprehensive logging # 完善的日志记录功能

Installation

Manual Installation

pip install mysql-mcp-server

Installing via Smithery

To install MySQL MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install mysql-mcp-server --client claude

Configuration # 配置说明

Set the following environment variables: # 必须设置的环境变量

MYSQL_HOST=localhost     # Database host  # 数据库主机地址
MYSQL_PORT=3306         # Optional: Database port (defaults to 3306 if not specified)  # 可选数据库端口,默认3306
MYSQL_USER=your_username  # 数据库用户名
MYSQL_PASSWORD=your_password  # 数据库密码
MYSQL_DATABASE=your_database  # 要连接的数据库名称

Usage

With Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "mysql": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/mysql_mcp_server",
        "run",
        "mysql_mcp_server"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_username",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

With Visual Studio Code

Add this to your mcp.json:

{
  "servers": {
      "mysql": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "--from",
                "mysql-mcp-server",
                "mysql_mcp_server"
            ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_username",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

Note: Will need to install uv for this to work

Debugging with MCP Inspector

While MySQL MCP Server isn't intended to be run standalone or directly from the command line with Python, you can use the MCP Inspector to debug it.

The MCP Inspector provides a convenient way to test and debug your MCP implementation:

# Install dependencies
pip install -r requirements.txt
# Use the MCP Inspector for debugging (do not run directly with Python)

The MySQL MCP Server is designed to be integrated with AI applications like Claude Desktop and should not be run directly as a standalone Python program.

Development

# Clone the repository
git clone https://github.com/designcomputer/mysql_mcp_server.git
cd mysql_mcp_server
# Create virtual environment
python -m venv venv
source venv/bin/activate  # or `venv\Scripts\activate` on Windows
# Install development dependencies
pip install -r requirements-dev.txt
# Run tests
pytest

Security Considerations # 安全注意事项

  • Never commit environment variables or credentials # 不要提交敏感信息
  • Use a database user with minimal required permissions # 使用最小权限账户
  • Consider implementing query whitelisting for production use # 生产环境考虑查询白名单
  • Monitor and log all database operations # 监控并记录所有数据库操作

Security Best Practices # 安全最佳实践

This MCP implementation requires database access to function. For security: # 本实现需要数据库访问权限

  1. Create a dedicated MySQL user with minimal permissions # 创建专用MySQL用户
  2. Never use root credentials or administrative accounts # 不要使用root账户
  3. Restrict database access to only necessary operations # 限制数据库访问
  4. Enable logging for audit purposes # 启用日志记录
  5. Regular security reviews of database access # 定期安全审查

See MySQL Security Configuration Guide for detailed instructions on:

  • Creating a restricted MySQL user
  • Setting appropriate permissions
  • Monitoring database access
  • Security best practices

⚠️ IMPORTANT: Always follow the principle of least privilege when configuring database access.

License

MIT License - see LICENSE file for details.

Contributing # 贡献指南

  1. Fork the repository # 创建仓库分支
  2. Create your 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 # 创建拉取请求

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mysql_mcp_server_financeblue-0.2.3-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file mysql_mcp_server_financeblue-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for mysql_mcp_server_financeblue-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d818fab1f22bd4b337f27198038a1060e2d0446dc704fba8ad5c2ec9597c1fa3
MD5 fb0445daf6292357aa3c0e4c8b143346
BLAKE2b-256 ac1dbe89a2ef475408e3cd3e6998e3aad75ff99a75d95f53c075a1739c95eedf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page