mcpField
M
MCP Server for MySQL based on NodeJS

MCP Server for MySQL based on NodeJS

本地服务
github.com/zhaoxin34数据库182 周前更新

关于 MCP Server for MySQL based on NodeJS

这款基于 NodeJS 的 MCP 服务为 LLM 应用提供 MySQL 数据库只读访问。它开放 SQL 查询和数据库结构信息,并提供预处理语句、速率限制和查询超时等控制。

主要功能

  1. 01只读 SQL 查询
  2. 02支持预处理语句
  3. 03表结构与关系信息
  4. 04查询超时与分页
  5. 05速率限制和查询控制

适用场景

  1. 01检查 MySQL 表结构
  2. 02执行只读数据库查询
  3. 03为 LLM 应用提供数据库上下文

MCP 相关

该服务向 MCP 客户端开放 `mysql_query` 工具和数据库结构资源。查询在只读事务中执行。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"mysql-zhaoxin34": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

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

安装包
npm@smithery/cli

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

基于 NodeJS 的 MySQL MCP 服务

smithery badge

演示

一个提供 MySQL 数据库只读访问权限的模型上下文协议服务。此服务可让大模型检查数据库架构并执行只读查询。

安装

使用 Smithery

通过 Smithery 安装和配置此 MCP 服务最简单:

# Install the MCP server
npx -y @smithery/cli@latest install @benborla29/mcp-server-mysql --client claude

配置过程中,系统会提示你输入 MySQL 连接详细信息。Smithery 会自动:

  • 设置正确的环境变量
  • 配置你的大模型应用以使用 MCP 服务
  • 测试与 MySQL 数据库的连接
  • 如有需要,提供实用的故障排除建议
使用 MCP Get

你也可以通过 MCP Get 安装此软件包:

npx @michaellatman/mcp-get@latest install @benborla29/mcp-server-mysql

MCP Get 提供 MCP 服务的集中式注册表,并简化安装流程。

使用 NPM/PNPM

手动安装:

# Using npm
npm install -g @benborla29/mcp-server-mysql

# Using pnpm
pnpm add -g @benborla29/mcp-server-mysql

手动安装后,你需要配置大模型应用以使用 MCP 服务(请参阅下方的“配置”部分)。

组件

工具
  • mysql_query
    • 对已连接的数据库执行只读 SQL 查询
    • 输入:sql(字符串):要执行的 SQL 查询
    • 所有查询均在只读事务中执行
    • 支持使用预处理语句安全地处理参数
    • 可配置查询超时和结果分页
    • 内置查询执行统计信息
资源

此服务提供全面的数据库信息:

  • 表架构
    • 每个表的 JSON 架构信息
    • 列名和数据类型
    • 索引信息和约束
    • 外键关系
    • 表统计信息和指标
    • 自动从数据库元数据中发现
安全功能
  • 通过预处理语句防止 SQL 注入
  • 查询白名单/黑名单功能
  • 查询执行速率限制
  • 查询复杂度分析
  • 可配置连接加密
  • 强制使用只读事务
性能优化
  • 优化的连接池
  • 查询结果缓存
  • 大型结果集流式传输
  • 查询执行计划分析
  • 可配置查询超时
监控和调试
  • 全面的查询日志记录
  • 性能指标收集
  • 错误跟踪和报告
  • 健康检查端点
  • 查询执行统计信息

配置

使用 Smithery 自动配置

如果你使用 Smithery 安装,配置已设置完成。你可以使用以下命令查看或修改配置:

smithery configure @benborla29/mcp-server-mysql
Claude Desktop App 手动配置

要为 Claude Desktop App 手动配置 MCP 服务,请将以下内容添加到 claude_desktop_config.json 文件中(通常位于你的用户目录下):

{
  "mcpServers": {
    "mcp_server_mysql": {
      "command": "npx",
      "args": [
        "-y",
        "@benborla29/mcp-server-mysql"
      ],
      "env": {
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASS": "",
        "MYSQL_DB": "db_name"
      }
    }
  }
}

将 db_name 替换为你的数据库名称,或留空以访问所有数据库。

高级配置选项

如需更精细地控制 MCP 服务的行为,可以使用以下高级配置选项:

{
  "mcpServers": {
    "mcp_server_mysql": {
      "command": "/path/to/npx/binary/npx",
      "args": [
        "-y",
        "@benborla29/mcp-server-mysql"
      ],
      "env": {
        // Basic connection settings
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASS": "",
        "MYSQL_DB": "db_name",
        "PATH": "/path/to/node/bin:/usr/bin:/bin",
        
        // Performance settings
        "MYSQL_POOL_SIZE": "10",
        "MYSQL_QUERY_TIMEOUT": "30000",
        "MYSQL_CACHE_TTL": "60000",
        
        // Security settings
        "MYSQL_RATE_LIMIT": "100",
        "MYSQL_MAX_QUERY_COMPLEXITY": "1000",
        "MYSQL_SSL": "true",
        
        // Monitoring settings
        "MYSQL_ENABLE_LOGGING": "true",
        "MYSQL_LOG_LEVEL": "info",
        "MYSQL_METRICS_ENABLED": "true"
      }
    }
  }
}

环境变量

基本连接
  • MYSQL_HOST:MySQL 服务主机(默认值:"127.0.0.1")
  • MYSQL_PORT:MySQL 服务端口(默认值:"3306")
  • MYSQL_USER:MySQL 用户名(默认值:"root")
  • MYSQL_PASS:MySQL 密码
  • MYSQL_DB:目标数据库名称
性能配置
  • MYSQL_POOL_SIZE:连接池大小(默认值:"10")
  • MYSQL_QUERY_TIMEOUT:查询超时时间,单位为毫秒(默认值:"30000")
  • MYSQL_CACHE_TTL:缓存生存时间,单位为毫秒(默认值:"60000")
安全配置
  • MYSQL_RATE_LIMIT:每分钟的最大查询数(默认值:"100")
  • MYSQL_MAX_QUERY_COMPLEXITY:最大查询复杂度评分(默认值:"1000")
  • MYSQL_SSL:启用 SSL/TLS 加密(默认值:"false")
监控配置
  • MYSQL_ENABLE_LOGGING:启用查询日志(默认值:"false")
  • MYSQL_LOG_LEVEL:日志级别(默认值:"info")
  • MYSQL_METRICS_ENABLED:启用性能指标(默认值:"false")

测试

数据库设置

运行测试前,需要设置测试数据库并填充测试数据:

  1. 创建测试数据库和用户

    -- Connect as root and create test database
    CREATE DATABASE IF NOT EXISTS mcp_test;
    
    -- Create test user with appropriate permissions
    CREATE USER IF NOT EXISTS 'mcp_test'@'localhost' IDENTIFIED BY 'mcp_test_password';
    GRANT ALL PRIVILEGES ON mcp_test.* TO 'mcp_test'@'localhost';
    FLUSH PRIVILEGES;
    
  2. 运行数据库设置脚本

    # Run the database setup script
    pnpm run setup:test:db
    

    此脚本会创建必要的表并填充数据。脚本位于 scripts/setup-test-db.ts

  3. 配置测试环境 在项目根目录中创建 .env.test 文件:

    MYSQL_HOST=127.0.0.1
    MYSQL_PORT=3306
    MYSQL_USER=mcp_test
    MYSQL_PASS=mcp_test_password
    MYSQL_DB=mcp_test
    
  4. 更新 package.json 脚本 将以下脚本添加到 package.json 中:

    {
      "scripts": {
        "setup:test:db": "ts-node scripts/setup-test-db.ts",
        "pretest": "pnpm run setup:test:db",
        "test": "vitest run",
        "test:watch": "vitest",
        "test:coverage": "vitest run --coverage"
      }
    }
    
运行测试

项目包含一套全面的测试,可确保功能正常且可靠:

# First-time setup
pnpm run setup:test:db

# Run all tests
pnpm test

故障排除

使用 Smithery 排查故障

如果你通过 Smithery 安装,可以使用其内置诊断功能:

# Check the status of your MCP server
smithery status @benborla29/mcp-server-mysql

# Run diagnostics
smithery diagnose @benborla29/mcp-server-mysql

# View logs
smithery logs @benborla29/mcp-server-mysql
使用 MCP Get 排查故障

如果你通过 MCP Get 安装:

# Check the status
mcp-get status @benborla29/mcp-server-mysql

# View logs
mcp-get logs @benborla29/mcp-server-mysql
常见问题
  1. 连接问题

    • 确认 MySQL 服务正在运行且可访问
    • 检查凭据和权限
    • 如果启用了 SSL/TLS,请确保配置正确
    • 尝试使用 MySQL 客户端连接,以确认可以访问
  2. 性能问题

    • 调整连接池大小
    • 配置查询超时值
    • 如有需要,启用查询缓存
    • 检查查询复杂度设置
    • 监控服务资源使用情况
  3. 安全限制

    • 检查速率限制配置
    • 检查查询白名单/黑名单设置
    • 确认 SSL/TLS 设置
    • 确保用户拥有适当的 MySQL 权限
  4. 路径解析 如果遇到错误“Could not connect to MCP server mcp-server-mysql”,请显式设置所有必需二进制文件的路径:

{
  "env": {
    "PATH": "/path/to/node/bin:/usr/bin:/bin"
  }
}
  1. 身份验证问题
    • 对于 MySQL 8.0 及更高版本,请确保服务支持 caching_sha2_password 身份验证插件
    • 检查 MySQL 用户是否配置了正确的身份验证方式
    • 如有需要,尝试创建使用旧版身份验证方式的用户:
      CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
      

贡献

欢迎贡献!请随时向以下地址提交 Pull Request: https://github.com/benborla/mcp-server-mysql

开发环境设置
  1. 克隆仓库
  2. 安装依赖:pnpm install
  3. 构建项目:pnpm run build
  4. 运行测试:pnpm test
项目路线图

我们正在积极改进此 MCP 服务。请查看 CHANGELOG.md,了解计划中的功能详情,包括:

  • 通过预处理语句增强查询能力
  • 高级安全功能
  • 性能优化
  • 全面的监控
  • 扩展的架构信息

如果你想为其中任何领域做贡献,请查看 GitHub 上的 issues,或新建一个 issue 来讨论你的想法。

提交更改
  1. Fork 仓库
  2. 创建功能分支:git checkout -b feature/your-feature-name
  3. 提交更改:git commit -am 'Add some feature'
  4. 推送到分支:git push origin feature/your-feature-name
  5. 提交 Pull Request

许可证

此 MCP 服务采用 MIT 许可证。详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

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

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