mcp-mysql

gyzhang/mcp-mysql

3.2

If you are the rightful owner of mcp-mysql and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This is an MCP (Model Controller Protocol) Server based on Spring Boot, designed to provide MySQL database access capabilities for agents.

Tools
2
Resources
0
Prompts
0

MCP MySQL Server

这是一个基于Spring Boot的MCP (Model Controller Protocol) Server,用于提供MySQL数据库访问能力给智能体调用。

功能特性

  • 提供数据库连接池配置
  • 通过MCP接口提供SQL查询功能
  • 通过MCP接口提供SQL执行功能(INSERT、UPDATE、DELETE)

快速开始

配置数据库连接

src/main/resources/application.properties 文件中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://10.62.79.13:3309/agentdev?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
spring.datasource.username=agentdev
spring.datasource.password=Gientech6998
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

启动应用

使用Maven命令启动应用:

mvn spring-boot:run

或者构建并运行JAR文件:

mvn clean package
java -jar target/mcp-mysql-0.0.1-SNAPSHOT.jar

MCP工具使用说明

应用启动后,智能体可以通过MCP协议调用以下工具:

1. queryDatabase工具

功能:执行SQL SELECT查询语句,返回查询结果

参数

  • sql:要执行的SELECT SQL查询语句

返回值:查询结果列表,每行数据以Map形式返回

示例

{
  "tool_name": "queryDatabase",
  "parameters": {
    "sql": "SELECT * FROM users LIMIT 10"
  }
}

2. executeSql工具

功能:执行SQL INSERT、UPDATE或DELETE语句,返回受影响的行数

参数

  • sql:要执行的SQL语句,可以是INSERT、UPDATE或DELETE

返回值:受影响的行数

示例

{
  "tool_name": "executeSql",
  "parameters": {
    "sql": "INSERT INTO users (username, email) VALUES ('testuser', 'test@example.com')"
  }
}

项目结构

src/main/java/com/gientech/ail/mcp/mysql/
├── McpMysqlApplication.java       # 应用主类
├── config/
│   └── DatabaseConfig.java        # 数据库配置类
├── data/
│   └── DataSourceConfig.java      # 数据源配置类(连接池配置)
├── service/
│   └── DatabaseService.java       # 数据库服务类(实现SQL操作)
└── tool/
    └── DatabaseTool.java          # MCP工具类(暴露给智能体的接口)

技术栈

  • Spring Boot 3.5.6
  • Spring AI MCP Server
  • Spring JDBC
  • MySQL Connector/J
  • Tomcat JDBC Connection Pool

配置说明

数据库连接池配置

DataSourceConfig.java 中配置了数据库连接池的相关属性:

  • 初始连接数:5
  • 最大活动连接数:20
  • 最大空闲连接数:10
  • 最小空闲连接数:5
  • 最大等待时间:10000ms
  • 验证查询:SELECT 1
  • 其他连接池参数已根据最佳实践配置

注意事项

  1. SQL语句验证:

    • queryDatabase 工具只接受以SELECT开头的SQL语句
    • executeSql 工具只接受以INSERT、UPDATE或DELETE开头的SQL语句
  2. 安全性:

    • 当前实现不包含SQL注入防护措施,建议在生产环境中添加参数化查询功能
    • 建议在生产环境中配置适当的权限控制
  3. 错误处理:

    • 执行SQL过程中的异常会被包装为RuntimeException并抛出
    • 调用方需要适当处理这些异常