MySQL查询代理服务器

一个用于执行MySQL数据库查询的MCP服务器,支持读写分离和API认证。

  • by webshoten
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 webshoten/data_investigator_mcp

使用说明

DB代理MCP服务器

MySQL查询数据库MCP服务器。

安装,安装

1.安装相关性

bun install

2.设置环境变量

.env创建文件并设置以下环境变量:

# データベース設定(必須)
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASS=root
DB_NAME=appdb

# サーバー設定(オプション)
PORT=3000

# 認証設定(オプション)
AUTH_ENABLED=false  # 認証を有効にする場合は true
API_KEY=your-secret-api-key  # 認証が有効な場合に使用するAPIキー

关于认证:

  • AUTH_ENABLED=false(默认):无需认证即可运行(面向开发环境)
  • AUTH_ENABLED=true:将启用身份验证。在这种情况下API_KEY必须设置
  • 如果验证有效,则请求可以使用以下方法之一:API必须包含键:
    • Authorization: Bearer <API_KEY> 页眉
    • Authorization: ApiKey <API_KEY> 页眉
    • X-API-Key: <API_KEY> 页眉

3. MySQL启动数据库

docker build -t local-mcp-mysql ./docker/mysql

docker run -d \
  -p 3306:3306 \
  --name mcp-mysql \
  -e MYSQL_ROOT_PASSWORD=root \
  local-mcp-mysql

docker exec -it mcp-mysql mysql -uroot -proot appdb

Docker停止/删除容器

停止容器时:

docker stop mcp-mysql

停止并删除容器:

docker stop mcp-mysql
docker rm mcp-mysql

如果在不停止的情况下删除容器(强制删除):

docker rm -f mcp-mysql

4. MCP启动服务器

HTTP作为服务器启动:

bun run start

默认值http://localhost:3000/mcp中所述修改相应参数的值。更改端口时的环境变量PORT中所述修改相应参数的值。

PORT=8080 bun run start

关于认证:

  • 默认情况下,认证无效(AUTH_ENABLED=false)
  • 在生产环境中AUTH_ENABLED=true和API_KEY中所述修改相应参数的值

5. MCP客户端设置

Cursor在…的情况下

如果认证无效(开发环境):

Cursor的配置文件(~/.cursor/mcp.json 或设置UI)添加:

{
  "mcpServers": {
    "db-agent": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

如果启用认证(生产环境):

headers使用区域API指定键。可以使用以下方法之一:

方法1:X-API-Key使用页眉

{
  "mcpServers": {
    "db-agent": {
      "url": "http://localhost:3000/mcp",
      "headers": {
        "X-API-Key": "your-secret-api-key"
      }
    }
  }
}

方法2:Authorization使用页眉(Bearer格式)

{
  "mcpServers": {
    "db-agent": {
      "url": "http://localhost:3000/mcp",
      "headers": {
        "Authorization": "Bearer your-secret-api-key"
      }
    }
  }
}

方法3:Authorization使用页眉(ApiKey格式)

{
  "mcpServers": {
    "db-agent": {
      "url": "http://localhost:3000/mcp",
      "headers": {
        "Authorization": "ApiKey your-secret-api-key"
      }
    }
  }
}

Claude Desktop在…的情况下

如果认证无效(开发环境):

~/Library/Application Support/Claude/claude_desktop_config.json 添加:

{
  "mcpServers": {
    "db-agent": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

如果启用认证(生产环境):

headers使用区域API指定密钥:

{
  "mcpServers": {
    "db-agent": {
      "url": "http://localhost:3000/mcp",
      "headers": {
        "X-API-Key": "your-secret-api-key"
      }
    }
  }
}

或

{
  "mcpServers": {
    "db-agent": {
      "url": "http://localhost:3000/mcp",
      "headers": {
        "Authorization": "Bearer your-secret-api-key"
      }
    }
  }
}

重要: MCP在动态输入提示中单击Cursor啊Claude Desktop中所述修改相应参数的值。

使用方法

MCP客户端使用以下两种工具SQL可以执行查询。

run_query_readonly -只读查询(不需要批准)

SELECT、SHOW、DESCRIBE、DESC、EXPLAIN执行查询。此工具不要求批准。

例:

  • SELECT * FROM users LIMIT 10;
  • SELECT COUNT(*) FROM sessions;
  • SHOW TABLES;
  • DESCRIBE users;
  • EXPLAIN SELECT * FROM users;

run_query_write -写入查询(需要批准)

INSERT、UPDATE、DELETE、CREATE、DROP、ALTER等已弃用的函数的缺少的支持。此工具要求用户批准。

例:

  • INSERT INTO users (name, email) VALUES ('John', 'john@example.com');
  • UPDATE users SET name = 'Jane' WHERE id = 1;
  • DELETE FROM sessions WHERE expired_at < NOW();
  • CREATE TABLE products (id INT PRIMARY KEY, name VARCHAR(255));