@berthojoris/mcp-mysql-server

中文文档
1.46.0发布于 2026/10/26MITTypeScriptCommonJS近 30 天下载 4052

MySQL 数据库集成模式上下文协议服务器,每个项目有动态权限

中文使用文档
文档目录23 节
  1. TL; DR - 快速设置
  2. 安装
  3. 备选案文1:用npx快速启动(建议)
  4. 备选办法2:全球安装
  5. 快速启动
  6. 1. 建立环境(备选)
  7. 2. 建设项目(如果当地克隆)
  8. 3. 配置您的人工智能代理
  9. 4. 恢复你的人工智能代理
  10. 5. 测试它!
  11. AI 代理配置
  12. 标准 JSON 配置
  13. 环境变量配置
  14. 光标兼容性桥
  15. AI 代理工具发现
  16. 远程访问( ChatGPT 和其他远程 MCP 客户端)
  17. 权限系统
  18. 权限
  19. 文件类别(建议)
  20. 可用工具
  21. 详细文档
  22. MySQL MCP vs 手动数据库访问
  23. 许可证

MySQL MCP 服务器

用于 MySQL 数据库与 AI 代理器集成的制作准备的模型背景协议服务器

最后更新 : 2026-10-26 16:39:47 (英语)

npm version npm downloads License: MIT TypeScript MCP Compatible

安装 • 妇女 快速启动 • 妇女 配置 • 妇女 远程访问 • 妇女 权限 • 妇女 工具 • 妇女 文档


TL; DR - 快速设置

直接运行 npx数字 :

npx @berthojoris/mcp-mysql-server mysql://user:pass@localhost:3306/mydb "list,read,utility"

添加到您的 AI 代理配置( N).mcp.json, (中文(简体) ), .cursor/mcp.json等 :

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "type": "stdio",
      "args": [
        "-y",
        "@berthojoris/mcp-mysql-server",
        "mysql://user:pass@localhost:3306/mydb",
        "list,read,utility"
      ]
    }
  }
}

关于双层和环境可变配置,见 文件.md-配置。通过 HTTP 连接 ChatGPT 等远程客户端,参见 远程访问。 。 。 .


安装

不需要安装 - 直接运行 :

npx @berthojoris/mcp-mysql-server mysql://user:pass@localhost:3306/db "list,read,utility"

备选办法2:全球安装

npm install -g @berthojoris/mcp-mysql-server
mcp-mysql mysql://user:pass@localhost:3306/db "list,read,utility"

带有特殊字符的证书: 如果您的用户名或密码包含在 URL 有特殊含义的字符(@, (中文(简体) ), :, (中文(简体) ), /, (中文(简体) ), ?, (中文(简体) ), #, (中文(简体) ), %, (中文(简体) ), &),在将它们放入连接字符串之前,URL-encode它们. 例如,密码 p@ss:w0rd 变成 p%40ss%3Aw0rd,给出 mysql://user:p%40ss%3Aw0rd@host:3306/db。服务器在连接前同时解码用户名和密码.


快速启动

1. 建立环境(备选)

创建 .env 用于本地开发的文件 :

DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=yourpassword
DB_NAME=yourdatabase
MCP_CONFIG=list,read,utility

2. 建设项目(如果当地克隆)

npm install
npm run build

3. 配置您的人工智能代理

见 AI 代理配置 下节.

4. 恢复你的人工智能代理

完全重新启动您的 AI 代理应用程序来加载 MCP 服务器 .

5. 测试它!

试着问你的人工智能:

"有什么数据库可用?" "给我看看数据库里的所有表格" "用户表的结构是什么" "给我看用户的头五张唱片"


AI 代理配置

标准 JSON 配置

大多数AI代理都使用类似的JSON配置格式(文件位置因工具而异).

下面的例子使用默认的 stdio 传输,即AI代理启动服务器本身. 远程客户端通过 HTTP 连接; 参见 远程访问。 。 。 .

通用配置模板 :

备选方案1:单层(仅允许)-简单设置

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "type": "stdio",
      "args": [
        "-y",
        "@berthojoris/mcp-mysql-server",
        "mysql://user:password@localhost:3306/database",
        "list,read,utility,create,update,ddl"
      ]
    }
  }
}

备选案文2:双层(排放+类别) -- -- 建议进行精细控制

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "type": "stdio",
      "args": [
        "-y",
        "@berthojoris/mcp-mysql-server",
        "mysql://user:password@localhost:3306/database_name_here",
        "list,read,utility,create,update,ddl,transaction",
        "database_discovery,crud_operations,custom_queries,schema_management,index_management,constraint_management,table_maintenance,query_optimization,analysis,seed_operations"
      ]
    }
  }
}

QQ 提示 : 双层方法提供颗粒控制. 第4个参数(permissions)控制了广泛的访问级别,而第5个参数(类别)则对哪些特定工具可用进行微调.

环境变量配置

使用环境变量而不是连接字符串的替代方法 :

备选案文1:只允许(简单)

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "type": "stdio",
      "args": ["-y", "@berthojoris/mcp-mysql-server"],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database",
        "MCP_PERMISSIONS": "list,read,utility,create,update,delete"
      }
    }
  }
}

备选案文2:许可+类别(建议)

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "type": "stdio",
      "args": ["-y", "@berthojoris/mcp-mysql-server"],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database",
        "MCP_PERMISSIONS": "list,read,utility,create,update,delete",
        "MCP_CATEGORIES": "database_discovery,custom_queries,analysis"
      }
    }
  }
}

更多配置细节在其中 文件.md-配置。 。 。 .


光标兼容性桥

如果光标 MCP 包可以调用工具但不能发送 arguments,使用无参数 cursor_execute_request 桥。 创建 .cursor/mysql-mcp-request.json 在工作区,然后呼叫 cursor_execute_request数字 :

{
  "tool": "execute_ddl",
  "arguments": {
    "query": "DROP TABLE IF EXISTS spark_processes;"
  }
}

对于直接的SQL,桥可以推断出正确的SQL工具:

{
  "query": "DROP TABLE IF EXISTS spark_processes;",
  "mode": "auto"
}

设定 MYSQL_MCP_CURSOR_REQUEST_FILE 以覆盖请求文件路径.


AI 代理工具发现

对于Codex, Claude Code CLI, Cursor, Droid CLI, 以及其他MCP代理, 呼叫 list_all_tools 先说 它返回实时运行时目录、启用/失效状态、活动权限/类别配置以及用于计划探索、安全SELECT查询、CSV导出、交易和数据变化的建议工作流程.

使用 export_table_to_csv 基于表格的导出和 export_query_to_csv 用于 SELECT 查询导出.


远程访问( ChatGPT 和其他远程 MCP 客户端)

stdio 保持默认值 。 对于ChatGPT连接器/开发者模式等远程客户端,您可以启用此功能 可流取的 HTTP 带有旗帜或环境变量的运输,与设置权限的方式相同。 删除旗帜, 或设置 MCP_TRANSPORT=stdio再关掉一次.

# Read-only MySQL account + bearer token, bound to localhost
export MCP_HTTP_AUTH=token
export MCP_HTTP_AUTH_TOKENS=$(openssl rand -hex 32)   # give this token to your clients
npx -y @berthojoris/mcp-mysql-server mysql://mcp_reader:pass@localhost:3306/app "list,read,utility" --transport=http --port=3000
  • 终点数字 : http://127.0.0.1:3000/mcp附加时 GET /health在 HTTPS 上以反向代理或隧道发布,并设定 MCP_HTTP_PUBLIC_URL。 。 。 .
  • 认证数字 : MCP_HTTP_AUTH=token (承接者指使)或 oauth (OAuth 2.1 JWT针对您的授权服务器进行验证,根据ChatGPT的需要,使用RFC 9728元数据). none 只能做回转.
  • 隔离数字 : Host编号 :Origin 检查(DNS-有约束力保护)。 每次交易都取决于其身份,每次交易都取决于其身份。 一个会话的开放式交易在关闭或到期时会回滚.
  • 启动检查: 无效或不安全的 HTTP 设置以出错停止服务器 . MCP_HTTP_* 设置在 stdio 上被忽略 .
  • 工具说明: 每个工具报告 readOnlyHint 财务报告和审定财务报表 destructiveHint。 。 。 .

保护默认

保护是 在 HTTP 模式下默认关闭, 在 stdio 上默认关闭,所以现有的stdio设置 行为如前。 每一种值都可以被两种运输方式上的环境变量所压倒.

变量stdio 默认HTTP 默认它会做什么
MCP_QUERY_TIMEOUT_MS0 (关闭)30000取消 MySQL 服务器上更长的语句 KILL QUERY。在交易卷回交易时,有超时声明
MCP_RATE_LIMIT_PER_MINUTE0 (关闭)60每名客户每分钟打一个电话 客户端是认证身份, 或者当不存在时是IP
MCP_MAX_RESULT_BYTES0 (关闭)524288最大结果大小 。 行数组被切换以适应; 其他超大小的结果返回一个错误
MCP_AUDIT_LOGoffstderroff, (中文(简体) ), stderr,或文件路径。 每个工具调用, 认证失败, 和会话打开/ 关闭 。 SQL 文本被记录; 其他参数值不是
MCP_REQUIRE_READONLY_DB_USERfalsefalsetrue 如果 MySQL 用户可以写入, 则启动失败 。 在 HTTP 模式中, 警告总是被记录

HTTP 设置

变量/ 旗帜默认它会做什么
MCP_TRANSPORT 编号 : --transport=stdio|http, (中文(简体) ), --httpstdio打开或关闭 HTTP 传输
MCP_HTTP_HOST 编号 : --host=127.0.0.1绑定地址
MCP_HTTP_PORT 编号 : --port=3000端口
MCP_HTTP_PATH/mcp终点路径
MCP_HTTP_PUBLIC_URL– 说吧 –公共HTTPS基础 URL. 所需经费 oauth
MCP_HTTP_AUTHnonenone (只回转), token,或 oauth
MCP_HTTP_AUTH_TOKENS– 说吧 –逗号分隔的无记名符号,每个至少32个字符
MCP_OAUTH_ISSUER 编号 : MCP_OAUTH_AUDIENCE 编号 : MCP_OAUTH_JWKS_URI 编号 : MCP_OAUTH_REQUIRED_SCOPES-/资源 URL/已发现 /-OAuth 2.1 符号验证
MCP_HTTP_ALLOWED_HOSTS绑定回回转时回转名称Host 许可列表 。 关闭(警告),当它被绑在非移动地址上,而这个地址和 MCP_HTTP_PUBLIC_URL 设定
MCP_HTTP_ALLOWED_ORIGINS绑定回放时回放源头浏览器 Origin 许可列表 。 请求无 Origin 总是允许
MCP_HTTP_TRUST_PROXYfalse将客户端IP从 X-Forwarded-For
MCP_HTTP_ALLOW_UNAUTHENTICATEDfalse允许 none 外部回转( 不推荐)
MCP_HTTP_MAX_SESSIONS100最多同时举行的会议0 = 无限制)
MCP_HTTP_SESSION_IDLE_TIMEOUT_MS1800000之后会场关闭,其交易回滚(0 =从来没有)
MCP_HTTP_MAX_BODY_BYTES1048576最大请求体积( E)0 = 无限制)

在 HTTP 模式中, 服务器作为独立服务运行, 因此将设置放入 .env (或您的流程管理器) 而不是 MCP 客户端的 command 配置 :

DB_HOST=localhost
DB_USER=mcp_reader
DB_PASSWORD=pass
DB_NAME=app
MCP_PERMISSIONS=list,read,utility
MCP_TRANSPORT=http
MCP_HTTP_PORT=3000
MCP_HTTP_AUTH=token
MCP_HTTP_AUTH_TOKENS=<64-hex-token>
MCP_QUERY_TIMEOUT_MS=15000
MCP_AUDIT_LOG=logs/mcp-audit.log

从持有的目录 .env开头 node dist/mcp-server.js (从克隆人)或 npx 命令上方 (连接字符串参数覆盖 DB_* 页:1 然后指点在URL支持远程MCP服务器的客户端. 例如,在克洛德代码中 .mcp.json数字 :

{
  "mcpServers": {
    "mysql-remote": {
      "type": "http",
      "url": "http://127.0.0.1:3000/mcp",
      "headers": { "Authorization": "Bearer <64-hex-token>" }
    }
  }
}

完整细节( OAuth 设置、 会话、 只读用户 SQL) 包含在 文件.md-远程访问。 。 。 .


权限系统

控制数据库访问 a 双层过滤系统 提供广泛和精细控制:

  • 第1层(许可): 使用遗留类别进行广泛的操作控制
  • 第2层( 类别): 使用文档类别进行可选精细化工具级过滤

过滤逻辑数字 : Tool enabled = (Has Permission) AND (Has Category OR No categories specified)

权限

权限业务使用大小写
list列表数据库、表格、计划数据库勘探
readSELECT 查询, 读取数据分析、报告
createINSERT 新记录数据条目
update更新现有记录数据维护
deleteDELETE 记录数据清理
execute执行自定义 INSERT/UPDate SQL( DELETE 要求) delete 也允许)复杂的写入操作
ddlCREATE/ALTER/DROP表格;优化、修理和冲出表格司马管理
procedure存储程序(CREATE/DROP/EXECUTE)程序管理
transaction开始,承诺,罗巴克ACID业务
utility连接测试、诊断解决问题

V1.46.0中的安全变化(升级前的审查):

  • optimize_table, (中文(简体) ), repair_table, (中文(简体) ), flush_table,以及 optimize_fulltext 现在需要 ddl 改为 utility,因此只读默认不再包括它们. flush_table 仅限于连接的数据库,不再接受 with_read_lock。 。 。 .
  • run_select_query 丢弃无效的优化器提示值,并在提示应用后再次验证查询.
  • 系统计名被检测出在点周围有白空间(例如. mysql . user) (中文(简体) ).

V1.44.0 (升级前的审查) 的变化 :

  • 默认只读: 没有权限和分类, 现在服务器只启用 list,read,utility (以前每个工具). 为了保持全程通行,通过 list,read,create,update,delete,execute,ddl,utility,transaction,procedure。 。 。 .
  • 无隐含 mysql 计划: 在连接字符串中没有数据库或 DB_NAME,数据库范围的工具报告“没有指定数据库”而不是使用 mysql 系统计划.
  • 默认查询缓存: 选择使用 CACHE_ENABLED=true。任何书面和每笔交易承诺现在都清除缓存.
  • SQL 验证数字 : #, (中文(简体) ), ;,以及 -- 内字符串值(例如). '#fff')不再被拒绝. WITH (CTE) 查询得到支持,与衍生表格一样,需要 execute 在读取询问中.

V1.43.4中的安全变化 :

  • EXPLAIN ANALYZE 运行它包裹的语句(MySQL 8.0.18+),所以现在它需要该语句的许可: delete 为迪莱特, update 或者说 execute 为更新, read 为SELECT。 只计划 EXPLAIN 还是需要 list 或者说 read。 。 。 .

V1.43.3中的安全变化:

  • CSV出口需要两者兼有 utility 财务报告和审定财务报表 read; 启用 utilities 类别.
  • 交易中的SQL需要相应的操作许可. transaction 单凭自己是不允许阅读或写作的.
  • execute_write_query 只接受Insert/UpDate/DELET。 DDL需要启用 DDL 工具.
  • 无法直接或通过光标桥调用已禁用的工具 。 大桥需要 utility 和一个启用的目的地工具.
  • execute 不绕过强制的 SQL 安全限制,包括文件访问和账户/特权更改.

私下通过 私人脆弱性报告; 见 警卫 保单.

过滤规则和每个许可的细节记录在 文件.md-许可系统。 。 。 .


使用文档类别来微调哪些工具被曝光(Layer 2):

类别列表使用大小写列表工具
database_discovery探索数据库、表格和计划结构get_all_tables_relationships, list_databases, list_tables, read_table_schema
crud_operations创建、读取、更新、删除数据操作create_record, delete_record, read_records, update_record
bulk_operations高性能分批处理业务bulk_delete, bulk_insert, bulk_update
seed_operationsFK- 认识关系假数据种子execute_seed_plan, generate_seed_preview, infer_seed_rules, plan_seed_data, seed_from_template, validate_seed_integrity
custom_queries执行自定义 SQL 查询和高级操作execute_write_query, run_select_query
schema_management管理数据库计划、表格和结构alter_table, create_table, drop_table, execute_ddl
utilities数据库设施、诊断和辅助功能cursor_execute_request, describe_connection, export_query_to_csv, export_table_to_csv, list_all_tools, read_changelog, test_connection
transaction_management处理ACID交易和回滚操作begin_transaction, commit_transaction, execute_in_transaction, get_transaction_status, rollback_transaction
stored_procedures创建、执行和管理存储程序create_stored_procedure, drop_stored_procedure, execute_stored_procedure, get_stored_procedure_info, list_stored_procedures, show_create_procedure
views_management创建和管理数据库视图alter_view, create_view, drop_view, get_view_info, list_views, show_create_view
triggers_management创建和管理数据库触发器create_trigger, drop_trigger, get_trigger_info, list_triggers, show_create_trigger
index_management优化索引和全文管理analyze_index, create_fulltext_index, create_index, drop_fulltext_index, drop_index, fulltext_search, get_fulltext_info, get_fulltext_stats, get_index_info, list_indexes, optimize_fulltext
constraint_management管理数据完整性限制add_check_constraint, add_foreign_key, add_unique_constraint, drop_constraint, drop_foreign_key, list_constraints, list_foreign_keys
table_maintenance表格优化、维修和维护analyze_table, check_table, flush_table, get_table_size, get_table_status, optimize_table, repair_table, truncate_table
query_optimization分析和优化 SQL 查询analyze_query, get_optimization_hints, repair_query
analysis数据分析、计划发现和报告工具find_tables_by_keyword, get_column_statistics, get_database_summary, get_schema_erd, get_schema_rag_context, search_data_across_tables, search_schema
复制/粘贴列表( comma 分隔, 无空格)
database_discovery,crud_operations,bulk_operations,seed_operations,custom_queries,schema_management,utilities,transaction_management,stored_procedures,views_management,triggers_management,index_management,constraint_management,table_maintenance,query_optimization,analysis

按类别分列的工具说明 文件.md-工具类别。 。 。 .


可用工具

服务器曝光 88个工具 分为类别(CRUD、种子、计划、发现和公用事业).


详细文档

综合文件见 文件.md数字 :

  • 远程访问 - 可流式HTTP运输、无记名/授权认证、会话、保护设置、审计日志

  • DDL 操作 - 创建、修改和删除表格

  • 数据导出工具 - 将数据导出为 CSV 格式

  • 关系数据搜索器 - 计划、预览、执行、验证、推断规则和FK-意识假数据模板

  • 全文搜索 - 创建和搜索具有多种搜索模式的FulLTEXT索引

  • 交易管理 - ACID交易

  • 存储程序 - 用IN/OUT/INOUT参数创建和执行

  • 视图触发( T) - 管理数据库视图和触发器

  • 索引约束管理( C) - 优化性能并强化数据完整性

  • 表 维护 - 分析、优化、检查和修理表格

  • 查询日志 - 参见所有自动执行的 SQL 查询

  • 安全特性 - 内部安全和最佳做法

  • 散装操作 - 高性能批量处理

  • 解决问题 - 共同问题和解决办法


MySQL MCP vs 手动数据库访问

这个 MySQL MCP 是 强大的中间层 在 AI 助手和 MySQL 数据库之间.

关于全部专题报道和使用实例,见 文件.md。 。 。 .


许可证

麻省理工学院执照 - 看 自由主义 详细文件.


照顾AI发展社区

使AI代理能够安全高效地与 MySQL 数据库互动

报告错误 • 妇女 请求特性 • 妇女 文档

版本与发布记录

@berthojoris/mcp-mysql-server 共发布 93 个版本,首次发布于 2025/10/17;过去 12 个月发布了 76 个版本。

版本发布日期距今
1.46.0latest2026/10/2613 天前
1.45.22026/10/2613 天前
1.44.02026/10/2613 天前
1.43.52026/10/2216 天前
1.43.22026/07/233 个月前
1.43.02026/05/255 个月前

关于 @berthojoris/mcp-mysql-server 的常见问题

@berthojoris/mcp-mysql-server 是什么?

MySQL 数据库集成模式上下文协议服务器,每个项目有动态权限

如何安装 @berthojoris/mcp-mysql-server?

在项目目录运行 npm install @berthojoris/mcp-mysql-server,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mcp-mysql,可以用 npx mcp-mysql 直接运行。

@berthojoris/mcp-mysql-server 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@berthojoris/mcp-mysql-server 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@berthojoris/mcp-mysql-server 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@berthojoris/mcp-mysql-server 可以商用吗?

@berthojoris/mcp-mysql-server 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@berthojoris/mcp-mysql-server 的下载量有多少?

根据 npm 官方下载统计,@berthojoris/mcp-mysql-server 在 2026/10/08 – 2026/11/06 这 30 天内被下载 4,052 次,日均约 135 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@berthojoris/mcp-mysql-server 还在维护吗?

最新版本 1.46.0 发布于 2026/10/26(13 天前);至今共发布 93 个版本,其中过去 12 个月发布了 76 个;首次发布于 2025/10/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。