MySQL MCP服务器

通过Model Context Protocol提供安全可配置的MySQL集成服务,支持数据库查询、数据操作及安全管理。

  • by momodemo333
  • PHP
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 momodemo333/php-mcp-mysql

使用说明

🗄️ PHP MCP MySQL服务器

MySQL MCP Server for Claude Code-通过模型上下文协议安全和可配置的MySQL集成。

🙏 致谢

这个项目是建立在优秀的基础上的 php-mcp/服务器 图书馆。特别感谢MCP社区为这种整合提供了基础。

🚀 快速安装

Via Composer(推荐)

composer require momodemo333/php-mcp-mysql

Claude代码配置

添加到您的 .cursor/mcp.json:

{
    "mcpServers": {
        "mysql": {
            "command": "php",
            "args": ["vendor/momodemo333/php-mcp-mysql/bin/server.php"],
            "env": {
                "MYSQL_HOST": "127.0.0.1",
                "MYSQL_PORT": "3306",
                "MYSQL_USER": "your_user",
                "MYSQL_PASS": "your_password",
                "MYSQL_DB": "your_database"
            }
        }
    }
}

快速测试

# Test connection
php vendor/momodemo333/php-mcp-mysql/tests/test_connection.php

# Test MCP server
php vendor/momodemo333/php-mcp-mysql/tests/test_mcp_server.php

🎉 就是这样!您的MySQL MCP服务器已准备就绪!


✨ 特性

🛠️ 可用的MCP工具

  • mysql_list_databases -列出所有数据库
  • mysql_list_tables -列出数据库中的表
  • mysql_describe_table -描述表结构(列、索引、外键)
  • mysql_server_status -获取MySQL服务器状态和运行状况
  • mysql_select -执行安全的SELECT查询
  • mysql_insert -插入带有验证的数据
  • mysql_update -使用强制条件更新数据
  • mysql_delete -删除有安全限制的数据
  • mysql_execute_query -执行自定义SQL查询

🔒 安全功能

  • SQL注入保护 -所有查询都使用预先准备好的语句
  • 操作权限 -粒度控制(INSERT、UPDATE、DELETE)
  • 查询验证 -危险的关键字屏蔽
  • 连接池 -高效的资源管理
  • 结果限制 -可配置的结果集限制
  • 架构限制 -限制对特定数据库的访问

⚙️ 配置选项

环境变量:

  • MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_DB
  • ALLOW_INSERT_OPERATION, ALLOW_UPDATE_OPERATION, ALLOW_DELETE_OPERATION
  • ALLOW_DDL_OPERATIONS ⭐ - 新 授权CREATE、ALTER、DROP操作
  • ALLOW_ALL_OPERATIONS ⭐ - 新 超级管理模式(谨慎使用)
  • MAX_RESULTS, QUERY_TIMEOUT, LOG_LEVEL
  • CONNECTION_POOL_SIZE, ENABLE_PREPARED_STATEMENTS

配置方法:

  1. 环境变量 (通过MCP配置)
  2. .env 文件 (每个项目)
  3. CLI参数 (用于测试)

📖 文档

📚 完整指南

🔧 配置示例

简单配置:

{
    "mcpServers": {
        "mysql": {
            "type": "stdio",
            "command": "php",
            "args": ["vendor/momodemo333/php-mcp-mysql/bin/server.php"],
            "env": {
                "MYSQL_HOST": "127.0.0.1",
                "MYSQL_USER": "myapp",
                "MYSQL_PASS": "password",
                "MYSQL_DB": "myapp_db"
            }
        }
    }
}

💡 MCP传输类型:The "type": "stdio" 参数指定MCP客户端和服务器之间的通信方法。看 MCP配置指南 有关以下内容的完整详细信息 stdio, http,以及 websocket 运输。

多环境配置:

{
    "mcpServers": {
        "mysql-dev": {
            "command": "php",
            "args": ["vendor/momodemo333/php-mcp-mysql/bin/server.php"],
            "env": {
                "MYSQL_HOST": "127.0.0.1",
                "MYSQL_USER": "dev_user",
                "MYSQL_PASS": "dev_pass",
                "MYSQL_DB": "myapp_dev",
                "ALLOW_INSERT_OPERATION": "true",
                "ALLOW_UPDATE_OPERATION": "true",
                "ALLOW_DELETE_OPERATION": "true",
                "LOG_LEVEL": "DEBUG"
            }
        },
        "mysql-prod": {
            "command": "php",
            "args": ["vendor/momodemo333/php-mcp-mysql/bin/server.php"],
            "env": {
                "MYSQL_HOST": "prod.example.com",
                "MYSQL_USER": "readonly_user",
                "MYSQL_PASS": "prod_pass",
                "MYSQL_DB": "myapp_prod",
                "ALLOW_INSERT_OPERATION": "false",
                "ALLOW_UPDATE_OPERATION": "false",
                "ALLOW_DELETE_OPERATION": "false",
                "MAX_RESULTS": "50",
                "LOG_LEVEL": "ERROR"
            }
        }
    }
}

🛡️ 安全与最佳实践

🔐 安全建议

  1. 在生产环境中使用只读用户

    CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'secure_password';
    GRANT SELECT ON production_db.* TO 'readonly_user'@'%';
    FLUSH PRIVILEGES;
    
  2. 限制数据库访问

    ALLOWED_SCHEMAS=myapp_prod,myapp_logs
    
  3. 设置结果限制

    MAX_RESULTS=100
    QUERY_TIMEOUT=10
    
  4. 使用环境变量作为密码

    export MYSQL_PASS_PROD="$(security find-generic-password -s 'mysql-prod' -w)"
    

🔒 DDL权限(v1.1.0+)

三级权限系统:

  1. 级别1-CRUD操作:

    ALLOW_INSERT_OPERATION=true    # INSERT statements
    ALLOW_UPDATE_OPERATION=true    # UPDATE statements  
    ALLOW_DELETE_OPERATION=true    # DELETE statements
    ALLOW_TRUNCATE_OPERATION=false # TRUNCATE statements
    
  2. 第2级-模式操作(新增!):

    ALLOW_DDL_OPERATIONS=true      # CREATE, ALTER, DROP tables/indexes
    
  3. 3级-超级管理员(新增!):

    ALLOW_ALL_OPERATIONS=true      # All operations (use with extreme caution)
    

示例-启用架构修改:

# Fix "Mot-clé non autorisé détecté: ALTER" errors
ALLOW_DDL_OPERATIONS=true

✅ 生产检查表

  • []使用具有最小权限的专用MySQL用户
  • []设置 ALLOW_*_OPERATION=false 用于生产(SELECT除外)
  • [ ] 仔细考虑 ALLOW_DDL_OPERATIONS=false 生产中⚠️
  • [ ] 从不使用 ALLOW_ALL_OPERATIONS=true 生产中❌
  • []配置 MAX_RESULTS 和 QUERY_TIMEOUT
  • []使用 LOG_LEVEL=ERROR 生产中
  • []限制 ALLOWED_SCHEMAS 必要的数据库
  • []安全地存储密码(环境变量)
  • []启用 BLOCK_DANGEROUS_KEYWORDS=true

🧪 开发与测试

🚀 新测试套件(v1.1.0+)

使用Docker的专业测试基础设施:

# Quick start - all tests with Docker MySQL
make test

# Development commands  
make test-unit              # Fast unit tests (5s)
make test-integration       # Integration tests with MySQL
make test-coverage          # Generate HTML coverage report
make clean                  # Clean Docker resources

# Advanced testing
./tests/scripts/docker-test-complete.sh -v -c    # Verbose + coverage

测试覆盖范围:

  • 🧪 29+次测试 (单元+集成)
  • 🎯 >90%覆盖率 关键服务
  • 🐳 自动化Docker MySQL环境
  • 🔄 CI/CD就绪 GitHub操作

文档:

遗留测试

# Copy environment template
cp .env.example .env
# Edit .env with your MySQL settings

# Run connection test
php tests/test_connection.php

# Run full MCP server test
php tests/test_mcp_server.php

# Setup test data
php scripts/setup_test_data.php

开发设置

# Clone repository
git clone https://github.com/momodemo333/php-mcp-mysql.git
cd php-mcp-mysql

# Install dependencies
composer install

# Copy configuration
cp .env.example .env
# Edit .env with your settings

# Run tests
composer test

📊 使用Claude代码

自然语言示例

数据库探索:

"Show me all tables in the database"
"What's the structure of the users table?"
"How many orders are in the database?"

数据分析:

"Find all users created in the last 30 days"
"Show me the top 5 best-selling products"
"What's the average order value by month?"

商业智能:

"Analyze customer behavior patterns"
"Show sales trends for the last quarter"
"Find inactive users who haven't ordered in 6 months"

数据管理:

"Add a new user with email john@example.com"
"Update the user's email address"
"Clean up old temporary data"

🤝 贡献

欢迎投稿!请阅读我们的投稿指南,并:

  1. 分叉 存储库
  2. 创建 您的功能分支: git checkout -b feature/amazing-feature
  3. 提交 您的更改: git commit -m 'Add amazing feature'
  4. 推 分支机构: git push origin feature/amazing-feature
  5. 打开 拉取请求

开发指南

  • 遵循PSR-12编码标准
  • 为新功能添加测试
  • 更新文档
  • 确保安全最佳实践

📄 许可证

该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。

MIT许可证摘要:

  • ✅ 商业用途
  • ✅ 修改
  • ✅ 分布
  • ✅ 私人使用
  • ❌ 责任
  • ❌ 保修

🆘 支持


🎯 路线图

  • []PostgreSQL支持
  • []高级查询缓存
  • []连接加密(SSL/TLS)
  • []查询性能分析
  • []多数据库连接管理
  • []GraphQL风格的查询构建

由以下材料制成❤️ Claude Code社区

由...驱动 php-mcp/服务器