内容
<div align="center">
<img src="https://raw.githubusercontent.com/MaykeSN/Mochi/main/mochi-logo.png" width="160" alt="mochi" />
# 软糖
**在 MySQL/MariaDB 数据库中使用别名进行 Rode SQL 查询 — 通过终端和 Claude.**
[](https://www.npmjs.com/package/@maykesn/mochi)
[](https://github.com/MaykeSN/Mochi/actions/workflows/ci.yml)
[](LICENSE)

```console
$ mochi 销售 "select * from 订单 limit 5"
┌─────────┬──────────┬───────────┐
│ id │ 客户 │ 状态 │
├─────────┼──────────┼───────────┤
│ 1050889 │ ACME 有限公司│ 已消费 │
│ 1050890 │ FOO 有限公司 │ 空闲 │
└─────────┴──────────┴───────────┘
(2 行)
```
</div>
---
**软糖(mochi)** 是一个 CLI(和 MCP 服务器),用于使用别名查询 **MySQL/MariaDB** 数据库。您只需注册一次连接,然后输入 `mochi <别名> "<查询>"` 即可。 通过 **别名、数据库名称或标签**(通过主机进行消歧)解析连接,具有 **破坏性命令锁定**、**自动限制**、导出到 CSV/JSON/Excel、**历史记录**、**保存的查询** 和使用 DPAPI **加密的密码**。通过 **MCP**,Claude 直接查询您的数据库 - 在进行任何更改之前始终要求确认。
> ⚠️ **仅限 Windows。** 密码由 Windows DPAPI 保护。
## 安装
```bash
npm install -g @maykesn/mochi
```
或者,从 [发布页面](https://github.com/MaykeSN/Mochi/releases) 下载 **`mochi.exe`**(无需安装 Node)。
## 开始
```bash
mochi add # 助手:主机,端口,用户,密码,别名,标签
mochi list # 查看您的连接
mochi 销售 "select * from 订单 limit 10"
```
### mochi 如何选择连接
- 如果行 **以 SQL 开头**(`select`、`show`...)→ 使用 **上一个** 已使用的连接。
- 否则,**第一个令牌** 是选择器 - 按 **别名**、**数据库名称** 或 **标签** 匹配。
- `选择器@主机` 在同一名称存在于多个主机时进行消歧(例如 `sync@70`)。
```bash
mochi select * from 客户 # 上一个连接
mochi sync select * from 订单 # "sync" 连接
mochi sync@70 show tables # 主机以 .70 结尾的 "sync"
```
## 功能
| | |
|---|---|
| **别名和标签** | 通过别名、数据库或标签连接,`@主机` 进行消歧 |
| **破坏性锁定** | `DELETE/UPDATE/DROP/...` 需要 `-y`; `--dry-run` 显示受影响的行数 |
| **自动限制** | 没有 `LIMIT` 的 `SELECT` 获得 `LIMIT 1000`(使用 `--limit`/`--all` 进行调整) |
| **导出** | `--csv`, `--out 文件.csv/.json/.xlsx` |
| **架构** | `mochi tables`, `mochi describe <表>` |
| **保存和历史记录** | `mochi save`, `mochi q`, `mochi history` |
| **加密密码** | Windows DPAPI(绑定到您的帐户) |
| **MCP** | Claude 查询您的数据库,确认后再进行更改 |
## 命令
```text
mochi add 注册连接(助手)
mochi list 列出连接
mochi use / rename / edit / remove 管理连接
mochi test [别名] 测试连接
mochi tables [别名] [筛选] 列出表
mochi describe [别名] <表> 表的列
mochi which [别名] 显示将使用的连接
mochi save / q / saved / unsave 保存查询
mochi history [n] 最近运行的查询
mochi version
```
### 标志
```text
-y, --force 确认破坏性命令
--dry-run 模拟(计数行)而不执行
--limit <n> 自动限制(默认为 1000) · --all 关闭
--page <n> --page-size <n> 分页
-f, --file <a> 从 .sql 文件运行查询
--json | --csv 输出格式
--out <文件> 保存到 .csv / .json / .xlsx
--wide 不截断宽列
```
## 安全
- 在未使用 `-y` 的情况下拒绝 **破坏性** 命令。在终端中,在确认 `UPDATE/DELETE` 之前,mochi 显示 **将受影响的行数**(通过事务 + 回滚)。
- **自动限制** 防止在没有的情况下提取数百万行。
- 密码使用 **DPAPI** 保存在 `%USERPROFILE%\.mochi\secrets.json` 中 - 绑定到您的 Windows 帐户(在其他计算机/用户上不可用)。
## 与 Claude(MCP)一起使用
注册 MCP 服务器(一次性):
```bash
claude mcp add --scope user mochi -- mochi-mcp
```
重启 Claude Code 即可 - 暴露的工具:`listar_conexoes`, `executar_query`, `testar_conexao`, `listar_tabelas`, `descrever_tabela`。 破坏性命令需要 `force=true`(Claude 在执行前与您确认)。
## 开发
```bash
git clone https://github.com/MaykeSN/Mochi.git
cd Mochi
npm install
npm test # 运行测试套件(node --test)
npm run build:exe # 生成 dist/mochi.exe
```
数据(连接、密码、状态、历史记录、保存的查询)存储在 `%USERPROFILE%\.mochi\` - **存储库之外**。
## 许可证
[MIT](LICENSE) © Mayke Nogueira