open_board
Open the board
Open the sketch board in the user’s browser and return its URL.
无需输入参数。
io.github.tGhattas由 GitHub 账号 tGhattas 发布v0.1.2更新于 Oct 30, 2026
Hand-drawn whiteboard for system design mock interviews; your AI watches, asks and gives feedback.
本地手绘白板,让 AI 充当系统设计面试官:观察你的架构图、语音提问并给出评分反馈。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
A hand-drawn whiteboard for system design mock interviews, plus an MCP server that turns Claude or ChatGPT into your interviewer. It sees your board, listens to you, talks back, pins questions on your components, and ends with scored feedback.
Requires Node.js 18+.
The .mcpb one-click file is Claude Desktop only. Every other app runs the same npm package.
Option A: one-click. Download the .mcpb file from Releases and double-click it. Claude Desktop shows an install dialog.
Option B: command line. First quit Claude Desktop completely (macOS: ⌘Q; Windows: tray icon → Quit). Claude rewrites its config file from memory when it quits, which would drop the new entry. Then run:
Reopen Claude Desktop.
Option C: edit the config yourself (again, with Claude Desktop quit). The file is at:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonOn Windows, use "command": "cmd", "args": ["/c", "npx", "-y", "sysdesign-board"]. If Claude can't find npx (common with nvm, Volta or asdf), use the absolute path from which npx (macOS/Linux) or where npx (Windows).
Either add the server directly:
Or install the plugin, which also adds an interview skill, from this repo's marketplace. Run these inside Claude Code:
Add this to ~/.codex/config.toml (Windows: %USERPROFILE%\.codex\config.toml):
ChatGPT connects to MCP servers over public HTTPS, so you run the board locally and expose only its /mcp endpoint through a tunnel. The board itself, its API and its WebSocket refuse any request that doesn't come from localhost.
https://<your-tunnel>.trycloudflare.com/mcp?token=<token> and no authentication.Treat that URL like a password. To change the token, delete ~/.sysdesign-board/token, or set SYSDESIGN_TOKEN yourself.
Start a new chat and say:
Start a system design interview with me on my sketch board.
Or use the interview prompt from your app's prompt or slash menu. The board opens at http://localhost:4321.
The board also works without any AI: run npx -y sysdesign-board serve and open http://localhost:4321.
V select · H hand / hold Space · R rect · D diamond · O ellipse · A arrow · L line · P pen · T text · N sticky note · F zone · E eraser · K laser · C components · I interview panel · Q tool lock · G grid snap · ⌘/Ctrl Z undo · ⌘/Ctrl D duplicate · ⇧1 fit · ? all shortcuts
The full policy is in PRIVACY.md. In short:
~/.sysdesign-board/. The author runs no server, and there are no accounts, analytics or telemetry.npx downloads the package from npm./mcp requests pass through the tunnel provider.localhost requests from localhost pages. Other websites and tunnels are refused, which also blocks DNS-rebinding attacks./mcp) always requires the token.~/.sysdesign-board/.npx -y sysdesign-board install, then reopen.npx (see Option C), or run npx -y sysdesign-board install, which writes absolute paths for you.SYSDESIGN_PORT (or --port=5000). In the .mcpb extension it's a setting.npm run dev starts the hub on :4321 with reload, and Vite on :5173. Other scripts:
Releasing a new version:
npm version <x.y.z> --no-git-tag-version. This also updates server.json and the plugin's version and pinned dependency.npm publish.npm run lock:plugin. The lockfile needs the published package's checksum, so this comes after publishing.npm run build:mcpb.mcp-publisher publish for the MCP Registry.The code lives in three folders:
web/: the board (React UI plus the canvas engine in web/src/engine.ts; renderer and component glyphs in web/src/render/)server/: the hub (HTTP, WebSocket and persistence), the MCP tools and the CLIshared/: the data model, component catalog and geometry来源:README.md,提交 2b61d36
Open the board
Open the sketch board in the user’s browser and return its URL.
无需输入参数。
Start a system design interview
Start a new interview session on the board: sets the problem statement, timer and phase, opens the board, and posts your opening message (spoken aloud to the candidate).
leveltitle必填problem必填clear_boardopening_messageduration_minutesListen to the candidate
Block until the candidate says something (typed or by voice), the board changes and then settles, or the timeout passes. Returns what they said, what changed on the board, and interview timing. Call this in a loop between your replies.
timeout_secondsSpeak to the candidate
Send a message to the candidate. It appears in the board chat and is read aloud. Keep it short and conversational (no markdown).
text必填speakRead the board
Structured description of the board: components (type, label, id, position, zone), connections (from -> to, label, dashed=async), zones, notes and text, freehand strokes, plus what changed since you last looked.
include_jsonLook at the board
A PNG picture of the whole board as the candidate sees it (handwriting, sketches, layout). Use when get_board mentions freehand strokes or you need visual context.
无需输入参数。
Pin a comment on the board
Pin an interviewer comment bubble on the board, pointing at a component (by id or label) or at a position. Great for "what if this fails?" style probes.
xytext必填targetPoint at components
Make components glow on the candidate’s board (e.g. while asking about them). Optionally scroll/zoom their view to them.
focussecondstargets必填Draw on the board
Add components, connections, sticky notes and zones in the same sketchy style (marked as drawn by the interviewer). Use sparingly — the candidate should drive. Component kinds: user (User), browser (Web App), mobile (Mobile App), dns (DNS), cdn (CDN), lb (Load Balancer), gateway (API Gateway), firewall (Rate Limiter), server (App Server), service (Service), worker (Worker), lambda (Function), cron (Scheduler), sql (SQL DB), nosql (NoSQL DB), cache (Cache), storage (Object Store), search (Search Index), warehouse (Data Warehouse), queue (Queue), stream (Event Stream), pubsub (Pub/Sub), notify (Notifications), auth (Auth), monitor (Monitoring), ml (ML Model), external (External API). Connections reference a component by its ref/label (new or existing) or id. Positions are optional (auto-laid out to the right of existing content).
noteszonescomponentsconnectionsRemove interviewer comments
Remove your pinned comments (all, or specific ids).
idsMove to an interview phase
Update the phase tracker the candidate sees: requirements (Requirements), estimation (Estimation), api (API & Data), high-level (High-level), deep-dive (Deep dive), wrap-up (Wrap-up).
phase必填End the interview with feedback
Close the session and show a feedback card on the board. Scores are 1-5.
scores必填signalsummary必填strengths必填improvements必填Conversation transcript
Full chat/voice transcript of the current session.
无需输入参数。
已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
npx -y sysdesign-board install{ "mcpServers": { "sysdesign-board": { "command": "npx", "args": ["-y", "sysdesign-board"] } }}claude mcp add sysdesign-board -- npx -y sysdesign-board/plugin marketplace add tGhattas/sysdesign-board/plugin install sysdesign-board@sysdesign-board[mcp_servers.sysdesign-board]command = "npx"args = ["-y", "sysdesign-board"]tool_timeout_sec = 120npx -y sysdesign-board servecloudflared tunnel --url http://localhost:4321npx -y sysdesign-board token{ "command": "npx", "args": ["-y", "sysdesign-board"] }sysdesign-board MCP server over stdio (what AI apps launch)sysdesign-board serve Board + HTTP MCP endpoint onlysysdesign-board install Add to Claude Desktop (quit it first) [--npx | --local]sysdesign-board token Print the HTTP MCP token / URLgit clone <this repo> && cd sysdesign-boardnpm installnpm run dev