MySQL性能分析MCP服务使用说明

项目简介

MySQL性能分析MCP是一个遵循Model Context Protocol (MCP) 的远程服务器应用,专注于为MySQL数据库提供性能分析和优化建议。它通过标准化的JSON-RPC接口,允许兼容MCP协议的LLM客户端(如Amazon Q Developer CLI)调用其提供的工具,获取数据库的上下文信息和分析结果。

该服务以只读模式操作,默认通过'SET SESSION TRANSACTION READ ONLY'确保安全性,仅执行SELECT, EXPLAIN, SHOW等查询,不会对数据库进行修改。

主要功能点

  • 数据库结构分析: 深入分析数据库的表、列、索引、外键等,提供结构性优化建议。
  • 查询性能分析: 分析SQL查询的执行计划,识别性能瓶颈。
  • 索引推荐: 根据查询模式和表结构,智能推荐可提升性能的新建索引。
  • 查询优化建议: 针对低效查询,提供重写和优化建议。
  • 慢查询识别: 从性能模式(performance_schema)中提取并分析慢查询。
  • InnoDB缓冲池分析: 分析InnoDB缓冲池的使用情况,提供优化建议。
  • 表碎片分析: 识别并分析表的碎片化程度,提供清理建议。
  • MySQL配置检查: 查看和分析MySQL服务器的配置参数。
  • 只读查询执行: 安全地执行SELECT、EXPLAIN、SHOW等只读查询并返回结果。

安装步骤

本项目需要Python 3.10+和MySQL/MariaDB数据库。推荐使用Docker进行安装和部署。

  1. 克隆仓库:

    git clone https://github.com/vgodwinamz/mysql-analyzer-mcp.git
    cd mysql-analyzer-mcp
  2. 使用Docker构建和运行 (推荐):

    • 构建Docker镜像:
      docker build -t mysql-analyzer-mcp -f Dockerfile .
    • 运行Docker容器(服务默认在8000端口启动):
      docker run -d -p 8000:8000 mysql-analyzer-mcp
    • (可选) 如果使用AWS Secrets Manager存储数据库凭证,需要提供AWS凭证:
      docker run -d -p 8000:8000 \
        -e AWS_ACCESS_KEY_ID=your_access_key \
        -e AWS_SECRET_ACCESS_KEY=your_secret_key \
        -e AWS_DEFAULT_REGION=your_region \
        mysql-analyzer-mcp
  3. 本地Python环境设置 (备选):

    • 创建并激活虚拟环境:
      python -m venv venv
      source venv/bin/activate
    • 安装依赖:
      pip install -r requirements.txt
    • 启动服务器:
      python main.py --host 0.0.0.0 --port 8000

服务器配置(供MCP客户端参考)

MCP客户端需要知道如何启动和连接到这个MCP服务器。以下是供客户端配置的示例结构和启动参数说明。客户端会根据这些信息在需要时启动服务器进程并与之通信。

{
  "server name": "MySQL Performance Analyzer",
  "command": "python",
  "args": [
    "main.py",
    "--host", "0.0.0.0",     // 服务器监听地址
    "--port", "8000",        // 服务器监听端口
    "--session-timeout", "1800", // 会话超时时间(秒,默认1800)
    "--request-timeout", "300"   // 请求超时时间(秒,默认300)
  ],
  "transport": "streamable-http", // 传输协议
  "url": "http://localhost:8000/mcp" // 服务URL(本地示例,远程部署需替换)
  // 其他可能的客户端配置项...
}

请注意: 以上JSON结构仅为示例,实际配置取决于您使用的MCP客户端类型和部署环境。核心是 'command' 和 'args' 指明如何启动服务器进程,以及 'transport' 和 'url' 指明如何连接。

基本使用方法

启动服务器后,使用任何兼容MCP协议的客户端连接到服务器。连接时需要配置服务器的URL(例如 'http://your-server-address:8000/mcp')和传输协议(Streamable HTTP)。

连接成功后,您可以通过客户端调用服务器提供的工具。大多数工具需要提供包含数据库凭证的AWS Secrets Manager密钥名称 ('secret_name') 和区域 ('region_name')。

示例(假设在MCP客户端中调用):

  • 分析数据库结构:
    analyze_database_structure(secret_name="my-mysql-db-credentials", region_name="us-west-2")
  • 分析特定查询:
    analyze_query(
        query="SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id WHERE orders.status = 'pending'",
        secret_name="my-mysql-db-credentials",
        region_name="us-west-2"
    )
  • 获取索引推荐:
    recommend_indexes(
        query="SELECT * FROM products WHERE category = 'electronics' AND price < 100",
        secret_name="my-mysql-db-credentials",
        region_name="us-west-2"
    )
  • 执行只读查询:
    execute_read_only_query(
        query="SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE() ORDER BY table_rows DESC LIMIT 10",
        secret_name="my-mysql-db-credentials",
        region_name="us-west-2"
    )

调用工具后,服务器将执行相应的分析任务,并将结构化或格式化的分析结果通过MCP协议返回给LLM客户端,LLM可以进一步处理这些结果并生成人类友好的总结或建议。

信息

分类

数据库与文件