经 AI Skill Hub 精选评估,无限画布 获评「强烈推荐」。这款MCP工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 8.0 分,适合有一定技术背景的用户使用。
无限画布 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
无限画布 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/shlokkhemani/rabbithole
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"----": {
"command": "npx",
"args": ["-y", "rabbithole"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 无限画布 执行以下任务... Claude: [自动调用 无限画布 MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"____": {
"command": "npx",
"args": ["-y", "rabbithole"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
An infinite canvas for learning. Open a document, select any text, ask a question — and the answer opens as a fully-rendered child document. Recurse as deep as you like. Every hole is saved and revisitable.
Rabbithole has two ways in: a local MCP server for terminal agents, and a static browser app for humans who want to bring their own model key. In the MCP path, your agent (Claude Code, Codex, or any MCP client) does the answering and Rabbithole gives it a canvas in your browser. Everything in that path runs locally: no account, no API keys, nothing leaves your machine.
- Reader mode (default): fullscreen reading, branches sidebar, breadcrumbs; selections become inline marks (pending → ready); hover a ready mark for a peek preview; child docs carry a FROM strip that jumps back to the exact origin. - Streamed answers: words appear live with a breathing caret — in the reader, the thread, and the canvas card. - Rich Markdown: answers can use math, highlighted language code fences, show diagrams, URL-based resolution for relative links/images, and local image assets via asset:name.png; source stays as Markdown for copy/export, while frozen snapshots inline assets into the HTML. - Lenses: one-tap presets on the ask popup — Explain · ELI5 · Example · Go Deeper (keys 1–4). - Follow-up chat: a composer under each document asks about the doc as a whole; answers render inline and are branchable like any other text. - Canvas mode: infinite pan/zoom, draggable/resizable cards, edges that attach to the exact selected text in the parent, collapse, auto-layout. - Navigation: j/k walk marks, ↵ opens, ⌫ jumps back up, ⌘K searches the whole hole. - Share/export: copy any trail or document as Markdown; use Download snapshot for a share/read-anywhere interchange .html; use Export Rabbithole for a .rabbithole backup or device transfer; or ask the agent for a synthesis of the whole journey. - Durable asks: questions asked while the agent is away are saved and re-queued on resume — the agent answers them first thing. - Persistence: holes auto-save as JSON under ~/.rabbithole/; resuming restores the doc, scroll position, mode, and canvas framing.
The MCP host stores each hole as a JSON file directly under ~/.rabbithole/ (RABBITHOLE_DIR overrides the base directory) and assets under the matching asset directory. The web .rabbithole file is the same persisted hole JSON wrapped as { format: "rabbithole", format_version: 1, hole, assets }, with assets base64-encoded into the single JSON file for portability.
Requires Node 18+ and a browser. Pick your agent:
Claude Code
claude mcp add rabbithole -- npx -y github:shlokkhemani/rabbithole
Claude Code's default stdio MCP timeout is already long enough for Rabbithole's blocking wait. If you manage .mcp.json manually, this optional per-server field is also fine:
{
"mcpServers": {
"rabbithole": {
"command": "npx",
"args": ["-y", "github:shlokkhemani/rabbithole"],
"timeout": 3600000
}
}
}
Codex
codex mcp add rabbithole -- npx -y github:shlokkhemani/rabbithole
Then add the timeout field in ~/.codex/config.toml:
[mcp_servers.rabbithole]
command = "npx"
args = ["-y", "github:shlokkhemani/rabbithole"]
tool_timeout_sec = 600
codex mcp add cannot set tool_timeout_sec; edit the config file directly.
Any other MCP client — add this to its MCP config:
{
"mcpServers": {
"rabbithole": {
"command": "npx",
"args": ["-y", "github:shlokkhemani/rabbithole"]
}
}
}
Then start a new agent session and say:
open this document in rabbithole
A browser tab opens. Select any text on the page, ask a question (or tap a lens — Explain · ELI5 · Example · Go Deeper), and the answer streams in as a new document. Keep going.
<details> <summary><strong>Prefer running from a local clone?</strong> (faster startup, easier hacking)</summary>
git clone https://github.com/shlokkhemani/rabbithole.git
cd rabbithole && npm install
claude mcp add rabbithole -- node "$(pwd)/bin/mcp-server.js"
</details>
Follow these steps exactly:
1. Check Node: node --version must be ≥ 18. 2. Register the server with the one-liner above that matches the agent you are running inside (claude mcp add … for Claude Code, codex mcp add … for Codex, or write the JSON block into the client's MCP config file). The npx -y github:shlokkhemani/rabbithole form needs no clone and no install step — npx fetches this repo and runs bin/mcp-server.js over stdio. For Codex, also add tool_timeout_sec = 600 under [mcp_servers.rabbithole] in ~/.codex/config.toml; codex mcp add cannot set that field. 3. Verify: after the client reconnects, four tools should be available — open_rabbithole, answer_branch, ingest_pdf, list_rabbitholes. (In Claude Code, claude mcp list should show rabbithole as connected. The server itself also responds to a standard MCP initialize with server name rabbithole.) 4. Tell your human what to do next: they should start a session and say "open <some document> in rabbithole" — you then call open_rabbithole with { title, content } (or { title, file_path }; add base_url when the markdown came from a URL or repo; add assets for local images referenced as asset:name.png), which blocks until they select text and ask. Answer with answer_branch (stream chunks with partial: true, finish with a titled final call) and keep looping until status='session_closed'. If a long wait returns status='keep_listening', immediately call open_rabbithole with the returned { hole_id } and do not re-send content.
Notes for you: the tool call blocks by design (long-poll) — that is normal, not a hang. First npx run takes ~15–30s while it fetches the repo; later runs are cached. If the browser must not auto-open (headless), set RABBITHOLE_NO_BROWSER=1 in the server's env.
| Env var | Effect |
|---|---|
RABBITHOLE_DIR | Override the storage directory (default ~/.rabbithole/). |
RABBITHOLE_NO_BROWSER=1 | Don't auto-open the browser (headless/testing). |
RABBITHOLE_MAX_BLOCK_MS | Max time for one blocking MCP wait before returning keep_listening (default 240000). |
高质量MCP工具,实现无限画布学习体验
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
AI Skill Hub 点评:无限画布 的核心功能完整,质量优秀。对于Claude Desktop / Claude Code 用户来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | rabbithole |
| Topics | mcpjavascript学习工具 |
| GitHub | https://github.com/shlokkhemani/rabbithole |
| License | MIT |
| 语言 | JavaScript |
收录时间:2026-07-11 · 更新时间:2026-07-11 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端