这是一个基于Spring AI构建的MCP服务器,它将MySQL数据库的查询和操作能力作为工具暴露给LLM(大型语言模型)客户端。LLM可以通过MCP协议调用这些工具来与MySQL数据库进行交互,例如执行SQL查询、获取数据源列表等。

主要功能点

  • 执行SQL语句: 支持在配置的数据库上执行任意SQL查询和更新语句,并将结果直接返回。
  • 多数据源支持: 可以配置连接到多个不同的MySQL数据库实例。
  • 动态数据源切换: LLM可以通过工具指定在哪个数据源上执行SQL。
  • 自定义配置: 支持通过外部文件配置数据库连接信息。

安装步骤

  1. 确保已安装:
    • JDK 21 或更高版本
    • Maven 3.8.0 或更高版本
    • MySQL 5.7 或更高版本(作为目标数据库)
  2. 克隆仓库到本地。
  3. 在项目根目录下执行Maven命令构建项目:
    ./mvnw clean package
    成功后会在 'target' 目录下生成一个可执行的JAR文件,例如 'mcp-mysql-server-0.0.1-SNAPSHOT.jar'。

服务器配置 (供MCP客户端使用)

MCP客户端需要配置如何启动和连接到这个MCP服务器。通常在客户端的配置文件(如 'mcp-servers.json')中进行如下配置:

  • 'mcpServers': 包含所有MCP服务器配置的顶级对象。
  • 'mcp-mysql-server': 这是给服务器定义的一个唯一名称,可以在客户端配置中自定义。
  • 'command': 用于启动服务器的可执行命令,例如 'java'。
  • 'args': 传递给 'command' 的参数列表,通常包括:
    • '-jar': 指定运行JAR文件。
    • '服务器JAR文件的完整路径': 这是构建步骤生成的JAR文件的实际路径,需要替换示例中的路径。
    • '--datasource.config=/path/to/your-datasource.yml' (可选): 如果需要使用自定义的数据源配置文件,添加此参数并指定配置文件的实际路径。
  • 'env': 环境变量,通常留空或根据需要添加。

示例配置结构 (请根据实际路径修改 'args' 中的JAR文件路径):

{
  "mcpServers": {
    "mcp-mysql-server": {
      "command": "java",
      "args": [
        "-jar",
        "/path/to/your/mcp-mysql-server-0.0.1-SNAPSHOT.jar",
        "--datasource.config=/path/to/your-datasource.yml"
      ],
      "env": {}
    }
  }
}

基本使用方法

  1. 配置数据源: 在 'src/main/resources/datasource.yml' (或通过 '--datasource.config' 指定的外部文件) 中配置至少一个MySQL数据库连接信息。示例如下:

    datasource:
      datasources:
        my_database: # 数据源名称
          url: jdbc:mysql://localhost:3306/mydatabase
          username: your_user
          password: your_password
          default: true # 可选,标记为默认数据源
  2. 启动服务器: 服务器通常由MCP客户端根据上述配置自动启动。如果需要手动测试,可以运行构建生成的JAR文件:

    java -jar target/mcp-mysql-server-0.0.1-SNAPSHOT.jar [--datasource.config=/path/to/your-datasource.yml]
  3. LLM通过工具交互: 一旦服务器运行,LLM客户端就可以通过JSON-RPC调用服务器提供的工具。该服务器提供了以下工具:

    • 'listDataSources': 列出所有已配置的数据源名称。
    • 'executeSql': 在所有配置的数据源上执行相同的SQL语句。
    • 'executeSqlWithDataSource': 在指定名称的数据源上执行SQL语句。

    LLM可以通过这些工具与数据库进行数据交互或获取数据库结构信息。

信息

分类

数据库与文件