Nerf (nib) MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Nerf (nib) MCP ServerAdd a node labeled 'Login' to the diagram"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Nerf
Um canvas de diagramas — tipo Excalidraw ou tldraw — cujo estado é uma API de primeira classe. A ideia: um agente de IA desenha nele com a mesma fidelidade que a mão humana arrasta, via MCP, e os dois editam o mesmo quadro ao vivo.
O canvas que o agente sabe usar.
Nerf é a identidade visual; o pacote, as variáveis de ambiente e o servidor MCP continuam usando o nome interno nib.
Pré-requisitos
Node.js
^20.19.0ou>=22.12.0(o Vite 8 não roda em versões mais antigas). Confira comnode -v.Um cliente MCP, se você quiser que um agente desenhe: Claude Code ou Claude Desktop.
Related MCP server: @kamiazya/whiteboard-mcp
Rodar
npm install
npm run dev # o canvas + a API /api/diagram no mesmo processoAbra a URL que o Vite imprimir. É só isso — não existe backend separado para subir.
Usa Claude Code? Abra a pasta e rode
/setup: ele instala, valida o servidor MCP e roda os testes pra você.
Comando | O que faz |
| Sobe o canvas. É o único jeito de rodar — a API é um plugin do Vite. |
| Typecheck + build de produção. |
| oxlint. |
| 20 verificações ponta a ponta do servidor MCP, contra um diagrama descartável. |
Como funciona
O arquivo diagram.json na raiz é a fonte da verdade e o formato de fio do agente. O app faz GET a cada 1,5s e POST a cada mutação: qualquer coisa escrita nesse arquivo aparece no canvas em no máximo um segundo e meio, sem reload.
Ele não vem no repositório — nasce no seu primeiro traço (ou no primeiro add_node do agente) e fica fora do git, porque é o seu desenho, não código do produto.
Um plugin dentro do vite.config.ts serve GET/POST /api/diagram lendo e gravando esse arquivo, com escrita atômica (tmp + rename). O canvas usa o store não controlado do React Flow: pan, seleção, drag e resize ficam no estado interno da biblioteca, e a aplicação só consulta a instância nas fronteiras de carregar, salvar, desfazer e sincronizar.
O MCP
mcp/ é um servidor MCP (stdio, SDK oficial) que expõe o canvas como 18 tools — get_diagram, add_node, add_edge, batch_apply, layout_grid, color_nodes, delete_node, create_project… A tabela completa está em mcp/README.md.
O servidor não depende do dev server: as tools falam direto com o diagram.json. Você pode deixar o npm run dev aberto para ver o agente desenhando ao vivo, mas não é obrigatório.
Ligar no Claude Code
Nada a fazer: o .mcp.json na raiz já registra o servidor. Ao abrir a pasta, o Claude Code pergunta se você confia nos servidores MCP do projeto — aceite, reinicie o Claude Code, e as tools nib aparecem. (Mudou o .mcp.json? Reiniciar é obrigatório; recarregar não basta.)
Confira com /mcp dentro da sessão, ou claude mcp list no terminal.
Ligar no Claude Desktop
O Claude Desktop não lê o .mcp.json do projeto — ele tem um arquivo de configuração próprio, e o caminho precisa ser absoluto:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"nib": {
"type": "stdio",
"command": "node",
"args": ["/caminho/absoluto/para/nib-release/mcp/nib-server.js"],
"env": {}
}
}
}Troque /caminho/absoluto/para/nib-release pelo lugar onde você clonou. No Windows, use barras duplas (C:\\Users\\voce\\nib-release\\mcp\\nib-server.js). Reinicie o Claude Desktop depois.
Apontar para outro diagrama
NIB_DIAGRAM_PATH sobrescreve qual arquivo o canvas e o MCP usam. É assim que se testa sem escrever no seu desenho de verdade:
NIB_DIAGRAM_PATH=mcp/.test-diagram.json npm run devAs duas regras para não perder trabalho
O arquivo é last-write-wins: sem lock, sem merge. Quem escrever por último ganha. Por isso:
Passe
expectedVersion. Se o humano mexeu no canvas nesse meio-tempo, a tool devolveCONFLITOem vez de apagar o trabalho dele. Sem isso, a escrita do agente some no próximo clique — ou apaga o clique.Prefira
batch_applya N chamadas. Cada escrita separada é uma janela em que o outro lado pode te atropelar. Dezadd_nodesão dez janelas; umbatch_applyé uma.
Se você usa Claude Code, a skill em .claude/skills/nib-canvas/ já ensina isso ao agente, e um hook impede que ele edite o diagram.json na mão em vez de usar as tools.
Stack
React 19 · Vite · TypeScript · Tailwind v4 · shadcn (Base UI) · React Flow (@xyflow/react) · MCP SDK
Licença
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Create and manage Mermaid.js flowcharts and diagrams with AI agents via MCP.
Real-time collaborative whiteboard — AI agents and humans edit the same board live over MCP.
Create and edit architecture diagrams from your AI agent; get an SVG and a live editable canvas.
Collaborative whiteboard MCP server — create objects, connectors, C4 diagrams, and manage boards
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to create and manipulate live visual diagrams on an Excalidraw canvas in real-time via MCP tools.2,102 npm101 PyPI14BSD 3-Clause
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to collaboratively draw and annotate Excalidraw diagrams in real-time via MCP tools, synced to a browser canvas.6Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create, modify, and share diagrams on a live Excalidraw canvas through MCP tools, supporting shapes, text, arrows, batch operations, and export to shareable links with images.2,122 npm8MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to create, modify, and analyze diagrams using Draw.io (Diagrams.net) through MCP commands.-