Skip to main content
Glama
bambu-studio-mcp

bambu-studio-mcp

by naderfilho
README.md
# bambu-studio-mcp

Servidor **MCP (Model Context Protocol)** que integra o **Bambu Studio** e impressoras **Bambu Lab** ao **Claude** (Claude Desktop e Claude Code). Funciona em Windows, macOS e Linux — instale em quantos desktops quiser.

## O que o Claude passa a conseguir fazer

| Ferramenta | O que faz |
|---|---|
| `bambu_check_setup` | Diagnóstico da instalação (use primeiro em cada desktop novo) |
| `bambu_status` | Status da impressora: progresso, temperaturas, camadas, AMS/filamentos |
| `bambu_print_control` | Pausar / retomar / cancelar a impressão |
| `bambu_start_print` | Iniciar impressão de um `.gcode.3mf` que está no cartão SD |
| `bambu_send_gcode` | Enviar G-code direto (temperaturas, fans, home etc.) |
| `bambu_list_files` | Listar arquivos do SD da impressora (via FTPS) |
| `bambu_upload_file` | Enviar um arquivo local para o SD da impressora |
| `bambu_slice` | Fatiar um projeto `.3mf` pela CLI do Bambu Studio, gerando `.gcode.3mf` |
| `bambu_open_in_studio` | Abrir um arquivo (ou o app) no Bambu Studio local |

Fluxo típico: `bambu_slice` → `bambu_upload_file` → `bambu_start_print` → `bambu_status`.

## Pré-requisitos

1. **Node.js 18+** — <https://nodejs.org>
2. **Bambu Studio** instalado (apenas para as ferramentas de fatiamento/abrir app; as de impressora funcionam sem ele)
3. **Impressora em modo LAN acessível na rede** (para as ferramentas de impressora):
   - **IP** da impressora: tela da impressora → Configurações → WLAN
   - **Access Code**: mesma tela (LAN Only Mode não precisa estar ativado — o Access Code funciona mesmo com a nuvem ligada, desde que "LAN Mode Liveview/acesso" esteja habilitado)
   - **Número de série (SN)**: tela da impressora → Configurações → Dispositivo, ou etiqueta na traseira

## Instalação (repita em cada desktop)

1. Clone o repositório:

```bash
git clone https://github.com/naderfilho/mcp.yuri.git
```

2. Instale as dependências:

```bash
cd mcp.yuri && npm install
```

3. Registre o servidor no cliente Claude (abaixo).

### Claude Code (CLI / app desktop, recomendado)

```bash
claude mcp add bambu --scope user -e BAMBU_PRINTER_IP=192.168.1.50 -e BAMBU_ACCESS_CODE=12345678 -e BAMBU_SERIAL=01S00A000000000 -- node "C:/caminho/para/mcp.yuri/src/index.js"
```

`--scope user` deixa o servidor disponível em todos os projetos daquele desktop.

### Claude Desktop (app de chat)

Edite o arquivo de configuração:

- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "bambu": {
      "command": "node",
      "args": ["C:/caminho/para/mcp.yuri/src/index.js"],
      "env": {
        "BAMBU_PRINTER_IP": "192.168.1.50",
        "BAMBU_ACCESS_CODE": "12345678",
        "BAMBU_SERIAL": "01S00A000000000",
        "BAMBU_STUDIO_PATH": "C:/Program Files/Bambu Studio/bambu-studio.exe"
      }
    }
  }
}
```

Reinicie o Claude Desktop depois de salvar. Um exemplo pronto está em [`examples/claude_desktop_config.example.json`](examples/claude_desktop_config.example.json).

4. No Claude, peça: **"rode bambu_check_setup"** — ele confirma o que está funcionando naquele desktop.

## Variáveis de ambiente

| Variável | Obrigatória? | Descrição |
|---|---|---|
| `BAMBU_PRINTER_IP` | Para ferramentas de impressora | IP local da impressora |
| `BAMBU_ACCESS_CODE` | Para ferramentas de impressora | Access Code do LAN mode |
| `BAMBU_SERIAL` | Para ferramentas de impressora | Número de série da impressora |
| `BAMBU_STUDIO_PATH` | Não | Caminho do executável do Bambu Studio (auto-detectado nos locais padrão) |

Todas podem também ser passadas por chamada (`ip`, `access_code`, `serial`), útil para controlar **mais de uma impressora** a partir do mesmo desktop.

## Dicas para múltiplos desktops

- O servidor roda **localmente via stdio** em cada máquina — nada é exposto na internet; a comunicação com a impressora fica restrita à rede local (MQTT 8883 + FTPS 990).
- Cada desktop pode ter caminho de Bambu Studio e impressora diferentes: basta ajustar as variáveis `env` daquele desktop.
- Se publicar no GitHub, atualizar todos os desktops vira um `git pull && npm install`.
- Impressoras A1/P1 têm firmware mais restrito em algumas chamadas FTPS/MQTT; X1/X1C/P1S com firmware atualizado funcionam plenamente em LAN mode.

## Como funciona (protocolo)

- **MCP**: transporte stdio, SDK oficial `@modelcontextprotocol/sdk` — compatível com qualquer host MCP.
- **Impressora**: MQTT sobre TLS (`mqtts://IP:8883`, usuário `bblp`, senha = Access Code), tópicos `device/{serial}/request|report`; arquivos via FTPS implícito na porta 990.
- **Bambu Studio**: CLI (`--slice` / `--export-3mf`) para fatiar e abertura do app para edição visual.

## Solução de problemas

- **"Falha na conexão MQTT"** — confira IP e Access Code; o Access Code muda se a impressora for resetada ou trocar de rede.
- **"não recebeu dados da impressora"** — o número de série (`BAMBU_SERIAL`) está errado.
- **Fatiamento falha com STL** — a CLI precisa de perfis; abra o STL no Bambu Studio, configure impressora/filamento/processo e salve como projeto `.3mf`, então fatie o `.3mf`.
- **Firewall** — permita saída para as portas 8883 (MQTT) e 990 (FTPS) na rede local.

TDQS

A4.1/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct action or resource: status monitoring, high-level print control, file management, slicing, and setup diagnostics are clearly separated. Even the more similar tools like bambu_status and bambu_check_setup have different purposes—one queries printer state, the other checks local environment connectivity.

Naming Consistency4/5

All tools share the consistent bambu_ prefix and use snake_case, and most follow a verb_noun pattern like start_print, list_files, and upload_file. A few names break the pattern slightly (bambu_status, bambu_slice, bambu_print_control), but the overall style remains predictable and readable.

Tool Count5/5

Nine tools is a well-scoped set for a Bambu Lab printer server, covering the main workflow without redundancy or bloat. Each tool earns its place in the pipeline from slicing through uploading, printing, controlling, and monitoring.

Completeness4/5

The tool set covers the full core workflow: open in studio, slice, upload, list, start, control, and status, plus raw G-code and setup diagnostics. Minor gaps exist like file deletion or downloading timelapses, but they are not essential to the primary printing workflow.