MySQL数据库交互服务

一个允许AI助手通过MCP协议与本地和远程MySQL数据库交互的服务,支持SSH隧道安全连接和多种查询操作。

  • by Breven217
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 breven217/mysql_mcp_server

使用说明

MySQL MCP服务器

一个模型上下文协议(MCP)服务器,允许像Cascade这样的AI助手与本地和远程MySQL数据库进行交互。

快速开始

安装

  1. 克隆存储库
  2. 安装依赖项
  3. 构建服务器
npm install
npm run build

特性

  • 连接到本地MySQL数据库
  • 通过SSH隧道(ODI)连接到远程MySQL数据库
  • 执行只读或读写查询(可配置)
  • 通过SSH隧道对远程数据库进行安全访问
  • 未指定数据库时自动检测和列出数据库
  • 交互式工作流,等待用户选择数据库后再继续

设置

先决条件

  • Node.js
  • 本地MySQL数据库(可选)
  • SSH访问远程MySQL数据库(可选)
  • 本地计算机上安装的SSH客户端(用于ODI连接)

用法

与Cascade一起使用

Cascade可以自动启动和管理服务器。通过将以下内容添加到MCP配置中来配置Cascade:

{
  "mcpServers": {
       "mysql": {
          "command": "node",
          "args": [
            "/path/to/your/server/build/index.js",
            "--env-file",
            "/path/to/your/env"
          ]
      },
  }
}

本地运行

您也可以直接运行服务器:

node build/index.js

环境

LOCAL_HOST=[host]
LOCAL_USER=[user]
LOCAL_PASSWORD=[password]
LOCAL_PORT=[port]

ODI_SSH_KEY=[path/to/ssh/key]
ODI_USER=[user]
ODI_PASSWORD=[password]
ODI_HOST=[host]
ODI_PORT=[port]
ODI_SSH_PORT=[ssh_tunnel_port]

WRITE_ACCESS=[bool]

可用工具

此MCP服务器提供两个主要工具:

  1. local_mysql_query -在本地MySQL数据库上执行查询

    Parameters:
    - sql: SQL query to execute
    - database: (optional) Database to query - if not specified, will show available databases
    - params: (optional) Parameters for the SQL query
    
  2. odi_mysql_query -通过SSH隧道在远程MySQL数据库上执行查询

    Parameters:
    - sql: SQL query to execute
    - database: (optional) Database to query - if not specified, will show available databases
    - sshHost: SSH host to connect through (e.g., "171831.bjoyner.pandasandbox.com")
    - params: (optional) Parameters for the SQL query
    

例子

交互式数据库选择

当没有指定数据库时,服务器将:

  1. 列出目标MySQL服务器上的所有可用数据库
  2. 停止执行并等待用户指定数据库
  3. 要求用户再次使用 database 显式设置参数

这种交互式工作流程可以防止在没有正确选择的数据库的情况下执行查询,并为用户提供如何继续的明确指导。

列出所有可用数据库

// Using the local_mysql_query tool without specifying a database
sql: "SHOW TABLES;"

// Using the odi_mysql_query tool without specifying a database
sql: "SHOW TABLES;"
sshHost: "your-odi-host.example.com"

列出ODI服务器上的所有数据库

// Using the odi_mysql_query tool
sql: "SELECT SCHEMA_NAME FROM SCHEMATA;"
database: "information_schema"
sshHost: "your-odi-host.example.com"

查询ODI上的特定数据库

// Using the odi_mysql_query tool
sql: "SELECT * FROM your_table LIMIT 10;"
database: "your_database_name"
sshHost: "your-odi-host.example.com"

在本地查询特定数据库

// Using the local_mysql_query tool
sql: "SELECT * FROM your_table LIMIT 10;"
database: "your_database_name"

安全

此服务器仅用于本地开发。没有适当的安全措施,不要将其暴露在互联网上。SSH隧道为远程数据库访问提供了额外的安全层。

SSH隧道注意事项

使用时 odi_mysql_query 工具,服务器将建立到远程主机的SSH隧道。这需要:

  1. 本地计算机上已安装SSH客户端
  2. 正确的SSH配置(密钥、known_hosts等)
  3. SSH访问远程主机

SSH隧道将在您进行查询时自动建立,并在服务器关闭时关闭。