Metadata-Version: 2.4
Name: yooztech_mcp_mysql
Version: 0.1.2
Summary: MCP server for MySQL (read-only, database-scoped)
Author: Your Name
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mcp>=1.2.0
Requires-Dist: mysql-connector-python>=9.0.0
Dynamic: license-file

## yooztech_mcp_mysql —— 基于 MCP 的 MySQL 工具（只读、安全、支持库推断）

该 MCP 服务器在 MCP 客户端中提供安全的 MySQL 读取能力：
- `list_databases()`：列出当前账号可访问的非系统库
- `infer_database(project_root=None, include_evidence=false)`：根据项目内容推断库名（默认仅返回 `{ db }`，可选返回最小化证据统计，不含文件路径/内容）
- `list_tables(db=None)`：列出库内表（未传 `db` 时使用已推断库或自动选择）
- `get_table_schema(table, db=None)`：获取表结构（列定义、主键、索引、表注释）
- `select_rows(table, db=None, columns=None, where=None, order_by=None, limit=100)`：从库表安全查询

### 安全设计
- 表/列白名单：从 `information_schema` 动态获取并校验
- 参数化查询：拒绝拼接与多语句
- 限流：默认 `LIMIT 100`，最大 `LIMIT 1000`
- 隐私：推断时不回传文件路径/内容；如需证据仅返回脱敏统计

### 在 Cursor 中配置
在 Cursor 的设置中添加 MCP Server，示例（仅示意，不包含本地路径）：

```json
{
  "mcpServers": {
    "yooztech_mcp_mysql": {
      "command": "yooztech_mcp_mysql",
      "args": [],
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "3306",
        "DB_USER": "mcp_tool",
        "DB_PASS": "<your-strong-pass>"
      }
    }
  }
}
```

说明：
- 以上配置假设你已通过包管理器安装本工具（例如 `pip install yooztech_mcp_mysql`），从而可直接使用控制台脚本 `yooztech_mcp_mysql`。
- 若使用其他运行方式（如 uvx/容器），仅需将 `command` 与 `args` 改为相应启动方式即可，但不要在 README 中暴露你的本地路径。

### 使用 uvx 方式（推荐，免安装）
如希望在不全局安装包的情况下运行，可在 Cursor 中使用 `uvx`：

```json
{
  "mcpServers": {
    "yooztech_mcp_mysql": {
      "command": "uvx",
      "args": ["yooztech_mcp_mysql"],
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "3306",
        "DB_USER": "mcp_tool",
        "DB_PASS": "<your-strong-pass>"
      }
    }
  }
}
```

提示：确保系统已安装 `uv`/`uvx`。企业私有镜像可通过 `UV_INDEX`/`--index-url` 进行加速配置。

### 环境变量
- `DB_HOST`：数据库地址
- `DB_PORT`：数据库端口
- `DB_USER`：数据库只读账号（最小权限）
- `DB_PASS`：数据库密码

推荐在数据库中为该工具创建最小权限账号（示例）：

```sql
CREATE USER 'mcp_tool'@'10.0.%' IDENTIFIED BY '<your-strong-pass>';
GRANT SELECT ON *.* TO 'mcp_tool'@'10.0.%';
FLUSH PRIVILEGES;
```

如需进一步收紧权限，可按库或表粒度授予 `SELECT`。

### 使用建议（在 MCP 客户端中调用）
- 先调用 `list_databases` 查看可访问库
- 再调用 `infer_database` 自动推断当前项目使用的库（默认仅返回 `{ db }`）
- 随后调用 `list_tables` / `select_rows`（不传 `db` 时将使用推断库；如有歧义请显式传入 `db`）

### 版本与许可证
- 版本遵循语义化版本（SemVer）
- 许可证：MIT（详见包内 LICENSE）

