Submit

Mysql Mcp Server For Java

@6000fish

11 hours ago
A stdio MCP server that connects MCP-compatible Agents to MySQL for database discovery, table inspection, safe SELECT queries, controlled INSERT/UPDATE operations, EXPLAIN plans, and table status metadata. Part of MCP Java SDK, a Java toolkit for building custom MCP Servers.
Overview

MySQL MCP Server 使用手册

中文 | English

MySQL MCP Server 通过 stdio 将数据库发现、安全查询和受控数据修改暴露为 MCP 工具。

构建

mvn package -pl mcp-server-collection/mcp-server-mysql -am -DskipTests

可执行 jar 生成位置:

mcp-server-collection/mcp-server-mysql/target/mcp-server-mysql-0.1.1.jar

配置

环境变量:

变量必填默认值说明
MYSQL_HOSTlocalhostMySQL 地址
MYSQL_PORT3306MySQL 端口
MYSQL_DATABASEtest默认数据库
MYSQL_USERNAMErootMySQL 用户名
MYSQL_PASSWORDMySQL 密码

Agent 配置

{
  "mcpServers": {
    "mysql": {
      "type": "stdio",
      "command": "java",
      "args": [
        "-jar",
        "/absolute/path/to/mcp-java/mcp-server-collection/mcp-server-mysql/target/mcp-server-mysql-0.1.1.jar"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_DATABASE": "mcp_demo",
        "MYSQL_USERNAME": "root",
        "MYSQL_PASSWORD": "your_password"
      }
    }
  }
}

示例数据库

CREATE DATABASE IF NOT EXISTS mcp_demo;
USE mcp_demo;
CREATE TABLE IF NOT EXISTS users (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(64) NOT NULL,
  age INT NOT NULL
);

工具

工具说明
query(sql)执行只读 SELECT 查询,并以 JSON 返回数据行
execute(sql)执行安全的 INSERTUPDATE 语句
list_databases()列出可见数据库
list_tables(database?)列出当前或指定数据库中的表
describe_table(table, database?)查看表字段和类型
explain_query(sql)返回 SELECT 查询的 MySQL EXPLAIN 执行计划
get_table_status(database?)返回表状态元数据

示例 Prompt

List tables in the current MySQL database.
Describe the users table, then insert 3 test users.
Query the first 10 rows from users and summarize them.

安全行为

  • 读查询必须是单条 SELECT 语句;允许末尾分号,但拒绝多语句 SQL。
  • 写操作仅允许单条 INSERTUPDATE 语句。
  • 拒绝 DELETEDROPALTERCREATETRUNCATE、权限变更、LOAD、存储过程调用、OUTFILEDUMPFILELOAD_FILE 等危险操作。
  • 数据库名和表名必须是 usersmcp_demo 这类简单标识符;服务会校验并加反引号后再使用。
  • 在类生产环境中建议使用最小权限数据库账号。

Server Config

{
  "mcpServers": {
    "mysql": {
      "type": "stdio",
      "command": "java",
      "args": [
        "-jar",
        "/absolute/path/to/mcp-java/mcp-server-collection/mcp-server-mysql/target/mcp-server-mysql-0.1.1.jar"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_DATABASE": "mcp_demo",
        "MYSQL_USERNAME": "root",
        "MYSQL_PASSWORD": "your_password"
      }
    }
  }
}
© 2025 MCP.so. All rights reserved.

Build with ShipAny.