moki-whiteboard
This MCP server lets an agent manage and edit local MOKI whiteboards, including boards, pages, elements, groups, mind maps, and exports.
List, create, rename, duplicate, inspect, and permanently delete whiteboards.
Read saved board thumbnails and inspect pages, elements, IDs, text, bounds, styles, and versions.
Create, list, rename, reorder, group, and delete pages and page groups.
Add notes, text, shapes, arrows, drawings, mind maps, images, files, and links in batches.
Update element text, position, size, color, rotation, and other styles by exact ID.
Align or evenly distribute multiple elements.
Delete only explicitly listed elements.
Export complete board snapshots and
.mokiarchives, with optional Base64 ZIP up to 8 MiB.Perform native canvas edits: grouping, virtual folders, collapsing/expanding groups, and mind-map branch operations.
Use
expectedVersionto prevent silent overwrites and receiveVERSION_CONFLICTon stale writes.
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., "@moki-whiteboard Add a yellow sticky note saying 'Sprint goals' to my roadmap board"
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.
MOKI 白板 · MOKI Whiteboard
本地优先、支持 AI Agent 直接读写的开源无限白板与 MCP Server:思维导图、多媒体素材、分页管理、虚拟文件夹。
A local-first, open-source infinite whiteboard and MCP server for AI coding agents: editable mind maps, multimedia assets, pages, and collapsible virtual folders. Built with Electron, React, TypeScript, and SQLite.
Agent 接入 / Agent integration: MCP quickstart & tool reference · LLM-readable documentation index · 8-page visual showcase
适合需要让 Agent 收集参考、整理素材、生成可编辑思维导图或操作本地画布的工作流。MOKI 不内置模型、网页搜索或图片生成服务,这些能力来自你连接的 Agent。
Use MOKI when an agent needs to organize references, edit a mind map, or manipulate a local visual workspace. Models, web search, and image generation are provided by your connected agent, not bundled services.
Windows 下载 / Windows downloads
Windows x64 · v0.1.8 · r10 · 2026-11-12 更新 / refresh · Release / 更新说明
安装包尚未代码签名,Windows 可能显示未知发布者或 SmartScreen 提示。请核对下载文件的 SHA-256。 / Packages are not code-signed; Windows may show an unknown-publisher or SmartScreen warning. Verify the SHA-256 checksum before running.
Related MCP server: Timeverse InfCanvas MCP Server
macOS 下载 / macOS downloads
Apple Silicon(arm64)· v0.1.8 · r10 · 2026-11-12 更新 / refresh · Release / 更新说明
仅支持 Apple Silicon,暂不支持 Intel Mac。当前应用为 ad-hoc 签名,未进行 Developer ID 签名和 Apple 公证;首次打开受阻时,请看中文处理步骤。 / Apple Silicon only; Intel Macs are unavailable. The app is ad-hoc signed, without Developer ID signing or Apple notarization. See first-launch help if macOS blocks it.
MOKI 白板从 MOKI 工作台的无限白板能力演化而来,提供独立的 React / Electron 应用、本地 SQLite 存储和标准 MCP Server。你可以自己编辑画布,也可以让支持 MCP 的 Agent 读取、创建、修改、对齐和导出白板内容。

为什么做这个项目
本地优先:白板数据库和素材默认保存在自己的电脑中。
Agent 真正可操作:不是旁边放一个聊天框,而是通过 MCP 直接读写画布对象。
完整无限画布:便签、文本、图形、钢笔、思维导图、图片、文件和网页卡片在同一套交互中工作。
文件可迁移:通过
.moki文件在独立白板与 MOKI 工作台之间双向迁移页面和素材。
浅色画布 | 深色画布 |
|
|
图文介绍
查看八张发布介绍图与中英双语预览页,了解多媒体置入、思维导图、分页管理、素材管理、虚拟文件夹与 MCP Agent 协作。
主要能力
白板管理:新建、搜索、重命名、复制、删除及上次编辑内容缩略图;卡片操作收纳到“更多”菜单,并提供共享入口,编辑页显示当前白板名称。
无限画布:连续无级缩放、平移、适应内容、缩略图导航与全屏。
内容工具:便签、文本、六类图形、四种箭头、四档画笔、贝塞尔钢笔路径、9 类思维导图模板、图片 / GIF / 视频、文件和链接。
客户端更新:启动后自动检查 GitHub 正式发布,点击后下载并校验安装包,再手动安装;可识别相同应用版本下的不同发布批次。安装 r8 或后续版本后即可获取后续更新提示,无需安装 Git。
视频置入:视频元数据或首帧加载中也能直接拖动,保留原生播放 / 进度控件与撤销重做。
连续切页:选择页面后列表与搜索词保持不变,由用户手动收起;编辑页与共享只读页一致。
共享标签标题:浏览器标签显示白板名称,重命名后同步更新,方便区分多个共享白板。
深色界面:页面分组、多级资料库、素材列表和菜单采用统一深色配色,并区分选中、悬停与键盘焦点。
共享素材下载:选中操作栏和右键菜单可下载图片、视频、音频和文件的原始附件,支持多选及收起编组批量下载。
思维导图连线:沿节点连接边的法线方向垂直接入,支持左右 / 向下布局、错位与旋转节点;拖拽预览、曲线命中和 PNG 导出保持一致。
思维导图输入宽度:双击节点后拖动输入框右侧拖柄调整宽度,文字自动换行且字号不变;宽度会保存,支持方向键微调、Esc 取消、撤销与重做。
截图与导出:网络图片按 CORS 加载并校验画布可读性,修复 Agent 编辑后自动截图报错。若图片源禁止跨域读取,保留上次缩略图;导出提示先下载并作为本地图片置入,不输出缺图 PNG。
编辑交互:多选、旋转、角点缩放、边缘拉伸、编组 / 资料夹、对齐 / 分布、剪贴板、撤销 / 重做和就地文本编辑。
分组整理:将相关内容编组,收起为画布中的虚拟文件夹(资料夹);需要时再展开,分组管理整洁有序。
页面系统:多页面、页面分组、跨页面内容检索与定位、页面历史版本和恢复。
本地资料:文件 / 文件夹插入、素材列表、预览与重命名,可自定义素材缓存路径。
外观:浅色、深色和跟随系统。
桌面运行:设置 → 常规中可选择关闭窗口后在托盘运行、开机自启动;托盘提供重新打开和退出入口,自启动默认关闭。
客户端多窗口:在白板卡片“更多 → 在新窗口打开”或编辑页右上角打开独立窗口,可同时编辑多张白板。编辑页移出后回到管理页;已打开的同一白板直接聚焦其窗口。各窗口独立保存和保留 Agent 选区,文件选择、菜单、截图均归属发起窗口;托盘可恢复隐藏窗口,退出应用前保存所有窗口,保存失败时保留窗口和草稿。
文件互通:支持 v2
.mokiZIP,并兼容旧.moki-board、封装 JSON 和原始快照。白板互导:导出、导入、直接打开和附件恢复均无预设大小上限;支持导出后重新打开、编辑并保存回原文件。保留重复内容去重与异步压缩,大媒体存放于素材目录,浏览器附件传输使用二进制,避免 Base64 字符串限制。实际可处理大小取决于设备内存及运行环境。
视图记忆:每张白板的每个页面分别记住缩放和位置,再次进入恢复上次页面与视图;左下角可一键恢复 100% 和原点,保留白板内容。
局域网只读分享:默认开启,可在“设置 → 常规”手动关闭;关闭偏好会保留。可从编辑页右上角或白板卡片“更多”菜单快速共享,设置中统一列出已共享白板并支持取消共享。同网设备沿用主程序的分组页面菜单和素材列表,可搜索、定位、播放视频、预览图片 / 音频 / 文本 / PDF、下载其他附件,并使用缩放、重置、全屏、PNG 导出和快捷键提示;Ctrl/⌘ + 滚轮仅缩放画布,链接卡片可单击跳转。访客可在自己的视窗中收起 / 展开编组,支持框选、多选、复制内容及只读右键菜单;文本可粘贴到普通应用,图片与完整编组可粘贴到 MOKI 白板,视频 / 文件可复制为附件链接。可单独撤销链接,关闭共享使全部旧链接失效。需保持分享者应用运行;首次连接可能需要允许系统防火墙访问。
共享访问统计:共享页、分享弹窗及已共享卡片显示在线人数,按浏览器去重,多标签页合并;异常断线最多 75 秒后校正。设置中可查看单张白板或全部历史访问,包括设备 / 浏览器、局域网地址、访问时间和停留时长,支持分页;记录仅保存在本机并由分享者查看,取消共享后仍保留。从此功能启用后开始记录,无法追溯此前未记录的访问。
直接编辑文件:客户端双击打开、拖入或选择
.moki文件后,保存按钮及 Ctrl/⌘+S 会更新原文件;分页与附件随文件保留,重复打开复用同一白板。“白板文件 → 另存为白板文件”可保存副本;原文件被外部修改或无法写入时保留本机草稿并提示,避免覆盖。网页版仍将文件导入为本机白板副本。安全写入:SQLite WAL、乐观版本冲突保护、操作审计和异常剪贴板原子校验。
MCP 与 Agent
MOKI 白板提供标准 stdio 和 Streamable HTTP 两种 MCP 连接方式,共 16 个工具,并提供 Resource 与 Prompt。
在“设置 → MCP”选择连接方式,点击 复制 Agent 接入说明,把整段文本发给你的 Agent。说明包含本机完整配置、保留既有服务的要求及只读验证步骤;也可单独复制 JSON 配置。接入可能需要 MCP 客户端重启或授权。
“设置 → 常规”控制托盘与开机自启动。关闭到托盘时,本地 HTTP / MCP 服务继续运行;完整退出请使用托盘菜单或设置中的“退出 MOKI 白板”,退出前会等待白板保存。自启动仅在打包后的 Windows / macOS 客户端可配置,系统可能需要批准或在启动应用中启用;当前 Mac 包未做 Developer ID 签名或公证,注册可能受系统限制,界面会显示实际结果。真实开机登录行为需在安装后验证。

代表性工具:
工具 | 能力 |
| 列出白板 |
| 读取页面、元素、文本、位置和 ID |
| 添加便签、文本、图形、箭头、笔迹、思维导图、图片、文件和链接 |
| 修改内容、位置、尺寸、颜色、样式和旋转 |
| 对齐或等距分布元素 |
| 查询、重命名、分组或删除页面 |
| 导出完整 |
| 原生属性、编组、资料夹和思维导图层级操作 |
推荐 Agent 流程:
whiteboard_listwhiteboard_inspect使用返回的准确 ID 和
expectedVersion修改再次 inspect 验证结果
版本冲突会返回 VERSION_CONFLICT,不会静默覆盖较新的白板内容。HTTP MCP 默认仅用于本机;不要直接暴露到公网。需要本机认证时可设置 MOKI_WHITEBOARD_MCP_TOKEN。
快速开始
需要 Node.js 22.5 或更高版本,推荐当前 LTS。
git clone https://github.com/JKZeng-cell/moki-whiteboard.git
cd moki-whiteboard
npm ci
npm run dev浏览器界面默认位于 http://127.0.0.1:4320,API 位于 http://127.0.0.1:4321,开发数据库位于 data/moki-whiteboard.db。
运行桌面客户端:
npm run desktop验证全部类型、测试和生产构建:
npm run check
npm run test:mcp:stdioMCP 配置
先运行 npm run build,再将绝对路径替换成你的克隆目录:
{
"mcpServers": {
"moki-whiteboard": {
"command": "node",
"args": ["D:/path/to/moki-whiteboard/dist/mcp/server.js"],
"env": {
"MOKI_WHITEBOARD_DATA": "D:/path/to/moki-whiteboard/data/moki-whiteboard.db"
}
}
}
}也可以在应用设置中切换到 Streamable HTTP,并复制当前本机地址。不同 Agent 客户端的配置文件结构可能不同,MCP 规范不统一规定客户端配置文件键名。
Windows 打包
Windows 上执行:
npm run desktop:dist脚本会创建新的 release-build-* 目录并生成 x64 NSIS 安装包与完整免安装 ZIP,不覆盖已有产物。桌面数据默认保存在 %APPDATA%/moki-whiteboard,卸载不会主动删除用户数据库。
当前项目的 Windows 安装包尚未进行代码签名,可能出现未知发布者或 SmartScreen 提示。请只从项目 Release 或明确的官方渠道下载,并核对 SHA-256。
macOS 打包
当前支持 Apple Silicon(arm64),请在对应架构的 Mac 上构建:
npm ci
npm run desktop:dist:mac已发布的 DMG、ZIP 和校验文件可从上方下载区或 GitHub Release 获取。自行构建也可手动运行 macOS Packages 工作流;其原生构建及客户端 / MCP 验证产物保存为 Actions 附件 30 天,不自动发布到 Release。维护者通过独立发布工作流核对来源和哈希后再发布已验证产物。Intel Mac 暂不提供安装包:当前 Office 公式引擎不支持 darwin-x64。
Mac 数据默认在 ~/Library/Application Support/moki-whiteboard,素材缓存位于其中的 whiteboard-materials,与 .app 包隔离;可在设置中更改缓存路径。当前构建不使用 Developer ID 签名或 Apple 公证,不能视为 Gatekeeper 已认可的正式签名包。
macOS 首次打开:无法验证开发者或无法打开
从本仓库 Release 下载 DMG,将应用拖入“应用程序”(Applications);使用 ZIP 时先完整解压并移动
.app,不要在 DMG 或压缩包中直接运行。核对下载文件的 SHA-256,例如在“终端”运行:
shasum -a 256 ~/Downloads/MOKI-Whiteboard-0.1.8-macOS-arm64.dmg本次 DMG 的结果应为 ca3a0a08a462615cc5ac8d2c8f8e03f348b6a4e30fd645f7a13f882ed962e324;ZIP 的校验值见下载区的 SHA-256 文件。
尝试打开一次应用。若提示“无法验证开发者”或“Apple 无法验证此 App 是否包含恶意软件”,关闭提示,再前往 系统设置 → 隐私与安全性 → 安全性 → 仍要打开,按提示认证并确认打开。Apple 的官方说明介绍了这个单个应用例外。
仅在你确认信任该下载、校验值一致,且上述方法仍不能解除下载隔离时,可在终端对已安装的这一份应用执行:
xattr -dr com.apple.quarantine "/Applications/MOKI Whiteboard.app"此命令仅移除指定应用的下载隔离属性,不会补上开发者认证或公证,也不能修复实际损坏。应用如被重命名或安装在其他位置,请将 Finder 中的应用拖入终端替换路径;遇到权限拒绝时请检查安装位置和账户权限。xattr 参数可查阅 Apple 开源手册。无需关闭 Gatekeeper 或 SIP。
若提示文件“已损坏”,先重新下载并检查哈希,不要直接认定是缺少认证;若提示“将损坏你的电脑”、被识别为恶意软件或校验失败,请停止运行。受管理的 Mac 若没有“仍要打开”选项,请联系管理员。以上步骤不能修复 Intel 架构不支持、文件损坏或其他运行错误;仍有问题时请提交 macOS 版本、芯片类型和完整报错。原生构建验收不等同于已在所有 macOS 上人工验证浏览器下载后的 Gatekeeper 弹窗。
项目结构
src/core/ 白板快照、页面与元素模型
src/server/ SQLite 存储和本地 HTTP API
src/mcp/ 标准 MCP Server
src/web/ React 管理页与应用入口
src/desktop/ Electron 桌面外壳
src/vendor/moki/ 无限白板、思维导图、文件归档和预览组件
tests/ 核心、API 和 MCP 协议测试
docs/ 截图与发布资料数据与隐私
项目不会把
data/、素材缓存、安装包或构建产物提交到 Git。.moki、SQLite 数据库和素材缓存可能包含用户内容,公开分享前请自行检查。浏览器不能直接调用部分系统能力;文件夹选择、默认应用和本机文件打开由 Electron 桥接完成。
应用不内置模型账号。Agent 能力来自你自行连接的 MCP 客户端。
参与贡献
欢迎 Issue 和 Pull Request。请先阅读 CONTRIBUTING.md;安全问题请按照 SECURITY.md 私下报告。
如果这个项目对你有帮助,欢迎 Star 收藏,让更多创作者和 Agent 开发者发现它。也欢迎分享你的实际使用场景。
License
MIT © 2026 JKZeng
English
MOKI Whiteboard is a standalone React / Electron application evolved from the infinite whiteboard in MOKI Workbench. It combines a local SQLite database with a standard MCP server. Edit the canvas yourself, or let an MCP-enabled agent inspect, create, update, align, and export its contents.

Why MOKI Whiteboard?
Local-first: board databases and assets are stored on your computer by default.
Agents can actually edit: MCP provides direct access to canvas objects, rather than just a chat panel beside the board.
One infinite canvas: combine sticky notes, text, shapes, pen paths, mind maps, images, files, and web cards.
Portable boards: move pages and assets between MOKI Whiteboard and MOKI Workbench using
.mokifiles.
Light canvas | Dark canvas |
|
|
Visual Showcase
Explore all eight launch images and the bilingual preview page: multimedia, mind maps, pages, asset management, virtual folders, and MCP agent collaboration.
Features
Board management: create, search, rename, duplicate, delete, and view thumbnails from the last editing session. Card actions and sharing are collected in a More menu. The editor header shows the current board name.
Infinite canvas: continuous zoom, pan, fit to content, minimap navigation, and fullscreen.
Creation tools: sticky notes, text, six shape types, four arrow styles, four brush sizes, Bézier pen paths, nine mind-map templates, images / GIFs / videos, files, and links.
Client updates: automatically check stable GitHub releases, download and verify only after a click, then install manually. Package revisions are compared even if the app version stays unchanged. Install r8 or later to receive future update prompts; Git is not required.
Video insertion: drag while metadata or the first frame is still loading, with native playback controls and undo/redo preserved.
Continuous page switching: retain the page list and search query until dismissed, in the editor and shared viewer.
Shared tab titles: browser tabs show the board name and follow renames, making multiple shared boards easier to identify.
Dark interface: page groups, nested resource folders, attachment lists and menus share a dark palette with distinct selection, hover and keyboard focus states.
Shared material downloads: download original image, video, audio, and file attachments from the selection toolbar or context menu, including multiple selections and collapsed groups.
Mind-map connections: follow each node edge normal for perpendicular entry, including horizontal/downward layouts and offset or rotated nodes. Connection previews, curve hit-testing, and PNG exports use the same routing.
Mind-map input width: double-click a node and drag its right-side handle without scaling the font. Text wraps, widths are saved, arrow keys fine-tune, Escape cancels, and undo/redo remains available.
Screenshot safety: load network images with CORS and verify canvas readability before drawing. Fix Agent-triggered thumbnail errors; retain the previous thumbnail and reject incomplete PNG exports if a source disallows CORS. Download and insert those images locally to export them.
Editing: multi-select, rotation, corner scaling, edge resizing, groups / folders, alignment / distribution, clipboard, undo / redo, and inline text editing.
Group organization: group related content and collapse it into a virtual folder on the canvas. Expand it when needed to keep your workspace tidy and organized.
Pages: multiple pages, page groups, cross-page content search and navigation, and per-page version history and restoration.
Local assets: insert files / folders, locate and preview assets, rename them, and configure the asset-cache directory.
Appearance: light, dark, or follow the system theme.
Desktop lifecycle: optional close-to-tray, tray Open / Quit actions, and opt-in login startup under Settings → General. Startup is available in packaged Windows / macOS apps and reports OS approval or registration failures; unsigned Mac builds may be restricted. A real login/reboot needs verification after installation.
Multiple desktop windows: choose More → Open in new window on a board card or use the editor header action to move a board into its own window. Edit different boards simultaneously; reopening a board focuses its existing window. Windows save independently and keep separate Agent selections. Native dialogs, menus, and captures belong to the requesting window. Restore hidden windows from the tray; quitting saves all open windows and preserves drafts if saving fails.
Interoperability: v2
.mokiZIP archives, legacy.moki-boardfiles, wrapped JSON, and raw snapshots.Portable whiteboards: no preset byte-size cap for export, import, direct opening, or attachment restoration. Reopen exported files, edit them, and save changes to the original file. Content deduplication and asynchronous compression remain; large media stays in the material directory, and browser resource transfers use binary payloads instead of Base64 strings. Practical capacity depends on device memory and runtime constraints.
Remembered views: each board page keeps its zoom and position on this device. Reopening restores the last page and view; the lower-left Reset restores 100% zoom and the origin without deleting content.
Read-only LAN sharing: enabled by default, with an explicit off preference retained across restarts. Share from the editor header or a board card’s More menu, then manage and revoke existing shares under Settings → General. Guests use the main app’s grouped page menu and materials panel to search, locate, play videos, preview images / audio / text / PDF, and download other attachments. Zoom, reset, fullscreen, PNG export, and shortcut help remain available. Ctrl/⌘ + wheel zooms only the canvas; click link cards to open their websites. Guests can collapse or expand groups locally, select or multi-select content, and use a read-only context menu. Copy readable text to other apps, paste images and complete groups into MOKI, or copy video / file attachment links. Revoke individual links or turn sharing off to invalidate them all. Keep the sharing app running; the OS firewall may require permission. The sharing listener exposes only token-scoped reads, not the owner API or MCP.
Visitor statistics: the shared canvas, share dialog, and shared-board cards show online counts, deduplicated by browser across tabs. Abandoned sessions expire within 75 seconds. Settings provide paginated per-board and global visit history with browser/device, LAN address, timestamps, and duration. History stays on the host, is visible only to the owner, and remains after revoking a share. Recording starts when this feature is enabled; earlier unrecorded visits cannot be recovered.
Edit files directly in the desktop app: double-click, drop, or pick a
.mokifile, then use Save or Ctrl/⌘+S to update that same file with its pages and attachments. Reopening reuses the board. Use Whiteboard file → Save As for a separate copy. External changes and write failures preserve your local draft and report an error. The browser version imports a separate local board instead.Safer writes: SQLite WAL, optimistic version-conflict protection, operation auditing, and atomic clipboard validation.
MCP and Agents
MOKI Whiteboard supports standard stdio and Streamable HTTP MCP transports, with 16 tools plus MCP resources and prompts.

Representative tools:
Tool | Capability |
| List boards |
| Read pages, elements, text, positions, and IDs |
| Add notes, text, shapes, arrows, strokes, mind maps, images, files, and links |
| Update content, position, dimensions, colors, styles, and rotation |
| Align elements or distribute them evenly |
| Query, rename, group, or delete pages |
| Export a complete |
| Edit native properties, groups, folders, and mind-map hierarchy |
Recommended workflow:
Call
whiteboard_list.Call
whiteboard_inspect.Make changes using the exact returned IDs and
expectedVersion.Inspect again to verify the result.
Conflicting writes return VERSION_CONFLICT rather than silently overwriting newer content. HTTP MCP is intended for local use by default; do not expose it directly to the public internet. Set MOKI_WHITEBOARD_MCP_TOKEN if local authentication is required.
Quick Start
Requires Node.js 22.5 or newer; a current LTS version is recommended.
git clone https://github.com/JKZeng-cell/moki-whiteboard.git
cd moki-whiteboard
npm ci
npm run devThe development UI defaults to http://127.0.0.1:4320, the API to http://127.0.0.1:4321, and the database to data/moki-whiteboard.db.
Run the desktop app:
npm run desktopRun type checks, tests, the production build, and the stdio MCP smoke test:
npm run check
npm run test:mcp:stdioMCP Configuration
Run npm run build first, then replace these absolute paths with your clone location:
{
"mcpServers": {
"moki-whiteboard": {
"command": "node",
"args": ["D:/path/to/moki-whiteboard/dist/mcp/server.js"],
"env": {
"MOKI_WHITEBOARD_DATA": "D:/path/to/moki-whiteboard/data/moki-whiteboard.db"
}
}
}
}Alternatively, select Streamable HTTP in the app settings and copy the local connection configuration. Agent clients may use different configuration-file structures; the MCP specification does not prescribe client configuration keys.
Windows Packaging
Run on Windows:
npm run desktop:distThe script creates a fresh release-build-* directory containing an x64 NSIS installer and a complete portable ZIP, without overwriting previous build directories. Desktop data defaults to %APPDATA%/moki-whiteboard; uninstalling does not deliberately delete the user database.
Windows packages are currently not code-signed. Windows may show an unknown-publisher or SmartScreen warning. Download only from this project's Releases or a clearly identified official channel, and verify the SHA-256 checksum.
macOS Packaging
Build on an Apple Silicon (arm64) Mac:
npm ci
npm run desktop:dist:macPublished DMG / ZIP downloads and checksums are available in the download section and GitHub Release. For your own builds, manually run macOS Packages: the native arm64 runner verifies the extracted app and MCP integration, then retains artifacts for 30 days without automatic publication. Maintainers publish verified artifacts separately after checking provenance and hashes. Intel Mac packages are unavailable because the bundled Office formula engine does not support darwin-x64.
Data defaults to ~/Library/Application Support/moki-whiteboard; the default asset cache is its whiteboard-materials subdirectory, outside the .app bundle. The cache path remains configurable. These builds are not Developer ID-signed or Apple-notarized; do not treat them as Gatekeeper-approved distribution builds.
First launch: unidentified developer or blocked app
Download from this repository's Release. Drag the app from the DMG to Applications, or fully extract the ZIP and move the
.appthere before launching.Verify the downloaded file, for example:
shasum -a 256 ~/Downloads/MOKI-Whiteboard-0.1.8-macOS-arm64.dmgThe DMG hash is ca3a0a08a462615cc5ac8d2c8f8e03f348b6a4e30fd645f7a13f882ed962e324. ZIP checksums are in the linked checksum file.
Try opening the app once. For an unidentified-developer or unverifiable-app alert, dismiss it, then go to System Settings → Privacy & Security → Security → Open Anyway. Authenticate and confirm opening. See Apple's instructions.
Only if you trust the source, the checksum matches, and the settings route has not resolved the download-quarantine restriction, you can remove that attribute from this installed app:
xattr -dr com.apple.quarantine "/Applications/MOKI Whiteboard.app"This affects only the named app; it does not add certification, notarize the app, or repair damage. If you renamed or moved the app, drag it from Finder into Terminal to supply the actual path. For permission errors, check the installation location and account permissions. The flags are documented in Apple's xattr manual. No global Gatekeeper or SIP change is needed.
For a damaged-file alert, download again and check the hash first; do not assume every failure is a signing issue. Stop if the checksum differs or macOS reports malware / harm to your computer. On a managed Mac, ask your administrator if Open Anyway is unavailable. These steps cannot fix Intel incompatibility, damaged files, or unrelated crashes. Report your macOS version, chip, and exact error if problems persist. Native build checks do not constitute manual testing of every browser-download Gatekeeper prompt.
Project Structure
src/core/ Board snapshots, pages, and element models
src/server/ SQLite storage and local HTTP API
src/mcp/ Standard MCP server
src/web/ React board manager and app entry point
src/desktop/ Electron desktop shell
src/vendor/moki/ Canvas, mind maps, archives, and preview components
tests/ Core, API, and MCP protocol tests
docs/ Screenshots and release materialsData and Privacy
data/, asset caches, installers, and build outputs are excluded from Git..mokiarchives, SQLite databases, and asset caches may contain user content. Review them before sharing publicly.Some OS features are unavailable in a browser. Folder selection, default applications, and local-file opening use the Electron bridge.
No model account is bundled. Agent capabilities come from the MCP client you connect.
Contributing
Issues and pull requests are welcome. Read CONTRIBUTING.md before contributing. Report security issues privately as described in SECURITY.md.
If MOKI helps your workflow, consider starring the repository so other creators and agent developers can discover it. Real use cases and feedback are especially welcome.
License
MIT © 2026 JKZeng
Available Tools
16 toolswhiteboard_add_elements添加白板元素B
Add sticky notes, text, shapes, arrows, drawings, mind maps, images, files, or links in batches. Positions use canvas world coordinates; omitted positions are arranged automatically. 批量添加便签、文本、图形、箭头、画笔、思维导图、图片、文件或链接。坐标是无限画布世界坐标;省略坐标时自动排列。
Inputs: pageId (required), elements (required), boardId, expectedVersion. Returns: board, error, boards, pageId, +8 more
whiteboard_align_elements对齐白板元素AIdempotent
Align or evenly distribute two or more elements using their exact IDs. 将两个或更多元素按边缘、中心或间距进行对齐分布。
Inputs: ids (required), mode (required), boardId, expectedVersion. Returns: board, error, boards, pageId, +8 more
whiteboard_create新建 MOKI 白板B
Create a local whiteboard with one empty page. Returns the new board ID and version. 创建一个独立白板文档,并自动包含一个空白页面。
Inputs: title (required). Returns: board, error, boards, pageId, +8 more
whiteboard_create_page新建白板页面B
Create a page in an explicit board and make it the current page. 在指定白板中创建新页面,并将其设为当前页面。
Inputs: name, boardId, expectedVersion. Returns: board, error, boards, pageId, +8 more
whiteboard_delete_boardADestructive
Permanently delete an explicit board; requires confirm=true. Prefer expectedVersion. Does not delete original mapped files. 删除明确指定的整张白板,不可撤回;需要 confirm=true,建议提供 expectedVersion。不会删除原始映射文件。
Inputs: boardId (required), confirm (required), expectedVersion. Returns: board, error, boards, pageId, +8 more
whiteboard_delete_elements删除白板元素ADestructiveIdempotent
Delete only the explicitly listed element IDs, not pages or entire boards. 仅删除明确给出的元素 ID。不会删除页面或整个白板。
Inputs: ids (required), boardId, expectedVersion. Returns: board, error, boards, pageId, +8 more
whiteboard_duplicateC
Duplicate all pages and content of a board, preserving image and file references. 复制白板的全部页面与内容;图片和文件引用保留。
Inputs: title (required), boardId (required), expectedVersion. Returns: board, error, boards, pageId, +8 more
whiteboard_export导出白板快照ARead-only
Export a snapshot and .moki download URL (requires the HTTP API). With includeArchive=true, return a self-contained Base64 ZIP with images/files, up to 8 MiB; use app or HTTP export for larger boards. 返回完整快照和 .moki ZIP 下载地址(下载需要 API)。includeArchive=true 时直接返回含图片/文件的归档 Base64,无需 API;归档最多 8 MiB,较大白板请通过应用导出。
Inputs: boardId, includeArchive. Returns: board, error, boards, pageId, +8 more
whiteboard_get_thumbnailARead-only
Read the last saved board screenshot and its version. A thumbnail may be unavailable until the board has been opened and saved in the UI. 读取最后一次编辑保存的真实白板截图。尚未打开编辑的白板可能没有截图;返回截图版本和是否最新。
Inputs: boardId. Returns: board, error, boards, pageId, +8 more
whiteboard_inspect读取白板ARead-only
Inspect pages, element IDs, text, bounds, styles, version, and agent context. Read before and after editing. The default board is the most recently updated, not necessarily the board open in the UI. 读取页面、元素 ID、位置、尺寸、颜色和文本。修改前先调用此工具取得准确 ID。
Inputs: limit, pageId, boardId. Returns: board, error, boards, pageId, +8 more
whiteboard_list列出 MOKI 白板ARead-only
List local whiteboards. Start here to choose an explicit boardId before inspecting or editing. 列出可供 Agent 操作的所有白板文档。
Inputs: no named parameters. Returns: board, error, boards, pageId, +8 more
whiteboard_manage_page_groups管理白板页面分组BDestructive
List, create, rename, or delete page groups. Deleting a group preserves its pages as ungrouped. 创建、重命名、删除或列出页面分组;删除分组时页面会保留并回到未分组。
Inputs: action (required), name, boardId, groupId, +1 more. Returns: board, error, boards, pageId, +8 more
whiteboard_manage_pages管理白板页面BDestructiveIdempotent
List, rename, reorder, group, or delete pages. Deleting a page also deletes its content; at least one page must remain. 列出、重命名、移动到分组或删除页面。删除页面也会删除该页内容,且白板至少保留一页。
Inputs: action (required), name, index, pageId, +3 more. Returns: board, error, boards, pageId, +8 more
whiteboard_native_edit原生白板编辑操作B
Use the native canvas editor for properties, grouping, collapsing groups into virtual folders, expanding folders, and mind-map branches. Inspect/export exact IDs and records first. Rotation is in degrees. 直接调用与 UI 相同的 MOKI 原生编辑器。支持原生 props 编辑、分组/资料夹,以及真正的思维导图分支操作。先 whiteboard_inspect/whiteboard_export 获取准确 ID 和记录;rotation 使用角度。
Inputs: action (required), pageId (required), ids, text, +4 more. Returns: board, error, boards, pageId, +8 more
whiteboard_renameAIdempotent
Rename an explicit board. Supply expectedVersion from inspect for conflict protection. 重命名明确指定的白板;支持版本校验。
Inputs: title (required), boardId (required), expectedVersion. Returns: board, error, boards, pageId, +8 more
whiteboard_update_elements更新白板元素BIdempotent
Update text, position, size, color, or rotation by exact element IDs. 按准确元素 ID 批量修改文本、位置、尺寸、颜色或旋转角度。
Inputs: updates (required), boardId, expectedVersion. Returns: board, error, boards, pageId, +8 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Most tools target distinct board, page, or element operations, but whiteboard_native_edit is very broad and overlaps with whiteboard_update_elements, whiteboard_add_elements, and whiteboard_manage_page_groups. The boundary between whiteboard_manage_pages (which can group pages) and whiteboard_manage_page_groups is also somewhat unclear. Descriptions help, but an agent may still hesitate between native editing and targeted element/page tools.
Every tool uses the whiteboard_ prefix and snake_case, with a predictable verb_noun or resource_action pattern. Variations like whiteboard_delete_board vs. whiteboard_delete_elements are still readable and consistent within the board-level naming domain.
At 16 tools, the surface is slightly above the ideal 3-15 range but remains reasonable for a whiteboard server covering boards, pages, groups, elements, thumbnails, and export. Each tool appears to earn its place, though some consolidation could reduce overlap.
The set covers board CRUD, page management, page groups, element creation/update/alignment/deletion, inspection, thumbnail retrieval, native editing, and export. Minor gaps remain, such as explicit page duplication or dedicated element grouping, but core lifecycle workflows are well covered.
Maintenance
Related MCP Connectors
Real-time collaborative whiteboard — AI agents and humans edit the same board live over MCP.
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Shared memory for your agents. Grok, Claude, and Muse write into one canvas you own.
An infinite canvas where people and AI agents edit boards together. Every edit is undoable.
Related MCP Servers
- 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.4,642 npm8MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI clients to read and write local infinite canvas data via MCP protocol, with support for image generation and web visualization.MIT
- AlicenseNot gradedqualityDmaintenanceLocal-first visual workspace and MCP server for canvases built by people and agents, with a polished editor, extensions, and SQLite persistence.1,132 npmMIT
- AlicenseNot gradedqualityCmaintenanceA local-first whiteboard MCP server that enables AI agents to create, inspect, and update canvas diagrams and shapes collaboratively via 13 semantic tools.6MIT

