Mochi MCP Server
by MaykeSN
README.md
<div align="center">
<img src="https://raw.githubusercontent.com/MaykeSN/Mochi/main/mochi-logo.png" width="160" alt="mochi" />
# 🍡 mochi
**Rode SQL nos seus bancos MySQL/MariaDB por apelido — do terminal e pelo Claude.**
[](https://www.npmjs.com/package/@maykesn/mochi)
[](https://github.com/MaykeSN/Mochi/actions/workflows/ci.yml)
[](LICENSE)

```console
$ mochi vendas "select * from pedidos limit 5"
┌─────────┬──────────┬───────────┐
│ id │ cliente │ status │
├─────────┼──────────┼───────────┤
│ 1050889 │ ACME LTDA│ CONSUMIDO │
│ 1050890 │ FOO S.A. │ LIVRE │
└─────────┴──────────┴───────────┘
(2 linhas)
```
</div>
---
**mochi** é uma CLI (e servidor MCP) pra consultar bancos **MySQL/MariaDB** usando apelidos. Você cadastra suas conexões uma vez e depois é só `mochi <apelido> "<query>"`. Resolve a conexão por **apelido, nome do banco ou tag** (com desambiguação por host), tem **trava de comandos destrutivos**, **LIMIT automático**, **export** pra CSV/JSON/Excel, **histórico**, **queries salvas** e senhas **cifradas com DPAPI**. Via **MCP**, o Claude consulta seus bancos direto — sempre pedindo confirmação antes de qualquer alteração.
> ⚠️ **Windows-only.** As senhas são protegidas pela DPAPI do Windows.
## 📦 Instalação
```bash
npm install -g @maykesn/mochi
```
Ou baixe o **`mochi.exe`** na [página de Releases](https://github.com/MaykeSN/Mochi/releases) (não precisa de Node instalado).
## 🚀 Começando
```bash
mochi add # assistente: host, porta, usuário, senha, apelido, tags
mochi list # vê suas conexões
mochi vendas "select * from pedidos limit 10"
```
### Como o mochi escolhe a conexão
- Se a linha **começa com SQL** (`select`, `show`…) → usa a **última** conexão usada.
- Senão, o **primeiro token** é o seletor — casa por **apelido**, **nome do banco** ou **tag**.
- `seletor@host` desambigua quando o mesmo nome existe em vários hosts (ex: `sync@70`).
```bash
mochi select * from clientes # última conexão
mochi sync select * from pedidos # conexão "sync"
mochi sync@70 show tables # "sync" no host que termina em .70
```
## ✨ Recursos
| | |
|---|---|
| 🏷️ **Apelidos & tags** | conecte por apelido, banco ou tag, com `@host` pra desambiguar |
| 🛡️ **Trava de destrutivo** | `DELETE/UPDATE/DROP/…` exigem `-y`; `--dry-run` mostra quantas linhas afetaria |
| ✂️ **LIMIT automático** | `SELECT` sem `LIMIT` ganha `LIMIT 1000` (ajuste com `--limit`/`--all`) |
| 📤 **Export** | `--csv`, `--out arquivo.csv/.json/.xlsx` |
| 🔎 **Schema** | `mochi tables`, `mochi describe <tabela>` |
| 💾 **Salvas & histórico** | `mochi save`, `mochi q`, `mochi history` |
| 🔐 **Senhas cifradas** | DPAPI do Windows (atreladas à sua conta) |
| 🤖 **MCP** | o Claude consulta seus bancos com confirmação pra alterações |
## 🧭 Comandos
```text
mochi add cadastra uma conexão (assistente)
mochi list lista as conexões
mochi use / rename / edit / remove gerencia conexões
mochi test [apelido] testa a conexão
mochi tables [apelido] [filtro] lista tabelas
mochi describe [apelido] <tabela> colunas da tabela
mochi which [apelido] mostra qual conexão seria usada
mochi save / q / saved / unsave queries salvas
mochi history [n] últimas queries rodadas
mochi version
```
### Flags
```text
-y, --force confirma comandos destrutivos
--dry-run simula (conta linhas) sem executar
--limit <n> LIMIT automático (padrão 1000) · --all desliga
--page <n> --page-size <n> paginação
-f, --file <a> roda a query de um arquivo .sql
--json | --csv formato de saída
--out <arquivo> salva em .csv / .json / .xlsx
--wide não trunca colunas largas
```
## 🔐 Segurança
- Comandos **destrutivos** são recusados sem `-y`. No terminal, antes de confirmar um `UPDATE/DELETE` o mochi mostra **quantas linhas seriam afetadas** (via transação + rollback).
- **LIMIT automático** evita puxar milhões de linhas sem querer.
- Senhas ficam cifradas com **DPAPI** em `%USERPROFILE%\.mochi\secrets.json` — atreladas à sua conta do Windows (não abrem em outra máquina/usuário).
## 🤖 Usar com o Claude (MCP)
Registre o servidor MCP (uma vez):
```bash
claude mcp add --scope user mochi -- mochi-mcp
```
Reinicie o Claude Code e pronto — ferramentas expostas: `listar_conexoes`, `executar_query`, `testar_conexao`, `listar_tabelas`, `descrever_tabela`. Comandos destrutivos exigem `force=true` (o Claude confirma com você antes).
## 🛠️ Desenvolvimento
```bash
git clone https://github.com/MaykeSN/Mochi.git
cd Mochi
npm install
npm test # roda a suíte (node --test)
npm run build:exe # gera dist/mochi.exe
```
Os dados (conexões, senhas, estado, histórico, salvas) ficam em `%USERPROFILE%\.mochi\` — **fora** do repositório.
## 📄 Licença
[MIT](LICENSE) © Mayke Nogueira
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues