mcpField
M
mysql

mysql

本地服务
github.com/marcelo-ochoa数据库210 周前更新

关于 mysql

面向数据库用户的 MySQL MCP 服务,提供只读查询、结构检查和性能分析,并可生成 AWR 风格报告。

主要功能

  1. 01执行只读 SQL 查询
  2. 02获取 JSON 查询计划
  3. 03查看表、索引和列统计
  4. 04生成 MySQL AWR 风格报告
  5. 05提供各表结构资源

适用场景

  1. 01检查 MySQL 数据库结构
  2. 02执行只读 SQL 分析
  3. 03查看查询执行计划
  4. 04寻找性能优化机会

MCP 相关

向 MCP 客户端提供只读 MySQL 查询、执行计划、表统计、性能报告和结构资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"marcelo-ochoa-mysql": {
"command": "npx",
"args": [
"-y",
"@marcelo-ochoa/server-mysql"
],
"env": {
"MYSQL_USER": "<MYSQL_USER>",
"MYSQL_PASSWORD": "<MYSQL_PASSWORD>"
}
}
}
}
启动命令npx -y @marcelo-ochoa/server-mysql
需要配置的环境变量
MYSQL_USERMySQL username
MYSQL_PASSWORD密钥MySQL password

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@marcelo-ochoa/server-mysql1.0.7

工具

5

收录的工具列表 · 更新于 2 周前

参数类型必填说明
sqlstring是要执行的 SQL 查询
modelstring是MCP 客户端用于处理请求的语言模型名称和版本(例如 gpt-4.1、claude-sonnet-4、llama4……)
mcp_clientstring是指定所用 MCP 客户端实现的名称和版本(例如 Copilot、Claude、Cline……)

详细介绍

MySQL 数据库

一个提供 MySQL 数据库只读访问权限的模型上下文协议服务。此服务使大模型能够检查数据库架构、执行并解释只读查询,以及分析性能指标。

组件

工具
  • mysql-query

    • 对已连接的 MySQL 数据库执行只读 SQL 查询
    • 输入:sql(字符串):要执行的 SQL 查询
    • 所有查询均在只读事务中执行
  • mysql-explain

    • 解释针对已连接的 MySQL 数据库的 SQL 查询执行计划
    • 输入:sql(字符串):要解释的 SQL 查询
    • 以 JSON 格式返回执行计划
  • mysql-stats

    • 获取当前已连接数据库中指定表的统计信息
    • 输入:name(字符串):表名
    • 返回全面的表、索引和列统计信息
  • mysql-connect

    • 使用新的凭据重新连接
    • 输入:connectionString(字符串):MySQL 连接字符串(例如,host.docker.internal:3306/mydb)
    • 输入:user(字符串):用户名(例如,root)
    • 输入:password(字符串):密码

示例: mysql-connect host.docker.internal:3306/hr root my_2025

  • mysql-awr
    • 生成类似 Oracle AWR 的 MySQL 性能报告
    • 包含数据库统计信息、InnoDB 指标、热门查询(需要 performance_schema)、表/索引统计信息、连接信息和优化建议
    • 无需输入
资源

该服务为 MySQL 数据库中的每个表提供架构信息:

  • 表架构(mysql://<database>/<table>/schema)
    • 每个表的 JSON 架构信息
    • 包含列名和数据类型
    • 从 MySQL 数据库元数据中自动发现

配置

MySQL 服务使用环境变量或 mysql-connect 工具安全地管理凭据:

  • MYSQL_USER:MySQL 用户名(使用 mysql-connect 时可选)
  • MYSQL_PASSWORD:MySQL 密码(使用 mysql-connect 时可选)
连接字符串

连接字符串应仅包含主机、端口和数据库信息(不包含内嵌凭据)。作为命令行参数提供连接字符串并非必需。如果启动时省略,则必须先使用 mysql-connect 工具建立连接,才能使用其他功能。

支持的连接字符串格式:

  • mysql://host:port/dbname
  • host:port/dbname

在 Claude Desktop 中使用

要在 Claude Desktop 桌面应用中使用此服务,请将以下配置添加到 claude_desktop_config.json 的“mcpServers”部分:

Docker
  • 在 macOS 上运行 Docker 时,如果 MySQL 服务运行在主机网络上(例如 localhost),请使用 host.docker.internal
  • 凭据通过环境变量 MYSQL_USER 和 MYSQL_PASSWORD 传递
{
  "mcpServers": {
    "mysql": {
      "command": "docker",
      "args": [
        "run", 
        "-i", 
        "--rm",
        "-e", "MYSQL_USER=myuser",
        "-e", "MYSQL_PASSWORD=mypassword",
        "mochoa/mcp-mysql"
      ]
    }
  }
}

注意:如果希望在启动时自动连接,仍可将连接字符串作为最后一个参数提供:"args": [..., "mochoa/mcp-mysql", "host.docker.internal:3306/mydb"]。

NPX
{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": [
        "-y",
        "@marcelo-ochoa/server-mysql"
      ],
      "env": {
        "MYSQL_USER": "myuser",
        "MYSQL_PASSWORD": "mypassword"
      }
    }
  }
}

将 /mydb 替换为你的数据库名称。

注意:请将以下占位符替换为实际值:

  • 将 myuser 和 mypassword 替换为你的 MySQL 凭据
  • 将 localhost:3306 替换为你的 MySQL 服务主机和端口
  • 将 mydb 替换为你的数据库名称

在 VS Code 中使用

如需手动安装,请将以下 JSON 代码块添加到 VS Code 的“用户设置(JSON)”文件中。你可以按下 Ctrl + Shift + P 并输入 Preferences: Open User Settings (JSON) 来打开该文件。

也可以将其添加到工作区中的 .vscode/mcp.json 文件。这样便可与他人共享此配置。

请注意,.vscode/mcp.json 文件中不需要 mcp 键。

Docker

注意:使用 Docker 连接到主机上的 MySQL 服务时,请在连接 URL 中使用 host.docker.internal,而不是 localhost。

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "mysql_user",
        "description": "MySQL username"
      },
      {
        "type": "promptString",
        "id": "mysql_password",
        "description": "MySQL password",
        "password": true
      }
    ],
    "servers": {
      "mysql": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e", "MYSQL_USER=${input:mysql_user}",
          "-e", "MYSQL_PASSWORD=${input:mysql_password}",
          "mochoa/mcp-mysql"
        ]
      }
    }
  }
}

注意:如果希望在启动时连接,可以为 mysql_url 添加一个输入,并将其附加到 args。

NPX
{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "mysql_user",
        "description": "MySQL username"
      },
      {
        "type": "promptString",
        "id": "mysql_password",
        "description": "MySQL password",
        "password": true
      }
    ],
    "servers": {
      "mysql": {
        "command": "npx",
        "args": [
          "-y",
          "@marcelo-ochoa/server-mysql"
        ],
        "env": {
          "MYSQL_USER": "${input:mysql_user}",
          "MYSQL_PASSWORD": "${input:mysql_password}"
        }
      }
    }
  }
}

在 Antigravity Code Editor 中使用

将以下内容放入 ~/.gemini/antigravity/mcp_config.json

{
    "mcpServers": {
        "mysql": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "MYSQL_USER=myuser",
                "-e",
                "MYSQL_PASSWORD=mypassword",
                "mochoa/mcp-mysql",
                "host.docker.internal:3306/mydb"
            ]
        }
    },
    "inputs": []
}

Performance Schema

为使用 mysql-awr 工具获得最佳性能监控效果,请确保已在 MySQL 配置中启用 Performance Schema:

[mysqld]
performance_schema = ON

Performance Schema 可提供详细的查询统计信息和性能指标。如果未启用,仍会生成 AWR 报告,但查询级统计信息有限。

构建

Docker:

docker build -t mochoa/mcp-mysql -f src/mysql/Dockerfile .

NPM:

cd src/mysql
npm install
npm run build

示例提示词

可尝试以下 MySQL MCP 服务示例提示词:

  • 使用 MySQL MCP 服务连接到 host.docker.internal:3306/mydb,用户名为 root,密码为 password123
  • 查询当前数据库中的所有表
  • 获取 users 表的统计信息
  • 解释以下语句的执行计划:SELECT * FROM users WHERE email = '[email protected]'
  • 使用 mysql-awr 生成性能报告
  • 根据 AWR 报告,你会建议进行哪些优化?

演示

请参阅 演示,了解如何与 Claude Desktop、Docker AI、Gemini CLI 和 Antigravity Code Editor 配合使用。

MySQL AWR 实战

请参阅 MySQL AWR 实战,查看 mysql-awr 工具生成的性能报告示例,其中重点展示了具体的优化机会。

更新日志

请参阅更新日志,了解变更历史。

来源

与往常一样,此扩展的代码托管在 GitHub,欢迎提出修改建议并参与贡献。

📜 许可证

对于新贡献,本项目采用 Apache License 2.0 许可;现有代码采用 MIT 许可。详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。