原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

noddle draw

作者:noddle-dev版本 1.0.0i★ –i在你的电脑上运行
注册名称dev.noddle/draw

安装

概览

作者提供的说明(英文原文)

Read, create and edit open-source noddle draw diagram boards, browse versions and comment.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 设计、图片与音频
  • 你需要填写:NODDLE_AI_KEY

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 需要你自己填写: NODDLE_BASE_URL, NODDLE_AGENT_NAME, NODDLE_AI_PROVIDER, NODDLE_AI_KEY, NODDLE_AI_MODEL

标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

下载作者的 .mcpb 文件

链接指向作者自己的文件;我们不托管也不重新打包它。打开文件后,Claude Desktop 会进行安装。

在终端中运行这条命令

运行前请先填写空着的值。

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • NODDLE_BASE_URL env
    http(s) origin of the noddle draw instance. Set it to your own origin when self-hosting.
  • NODDLE_AGENT_NAME env
    Display name on the agent's comments and version snapshots (max 40 chars).
  • NODDLE_AI_PROVIDER env
    Optional bring-your-own-key provider for generate_diagram.
  • NODDLE_AI_KEY 机密 env
    Optional AI provider key, sent only to NODDLE_BASE_URL per call and never stored.
  • NODDLE_AI_MODEL env
    Optional model override for generate_diagram.

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月9日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过域名 noddle.dev 验证(注册中心会核实域名所有权)

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“设计、图片与音频”中的其他服务器比较i

  • 星标数多于此分类中其他 2801 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 2801 个服务器的 42% 更新
  • 基础检查结果等于或优于此分类中其他 2801 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

noddle draw 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

你需要填写:NODDLE_AI_KEY

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(1.0.0)于36天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 MCPB。

有什么可以替代它?

同一分类中有:Figma Context MCP, Claude Real Video, Figma MCP Server

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Figma Context MCP

Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.

作者:GLips广泛使用↓ 16.1万/周★ 1.6万5个月前更新

在你的电脑上运行

Claude Real Video

Let any LLM watch a video locally — and search everything it has ever watched.

作者:HUANGCHIHHUNGLeo广泛使用↓ 1106/周★ 22842个月前更新

在你的电脑上运行

Figma MCP Server

The Figma MCP server brings Figma design context directly into your AI workflow.

作者:figma广泛使用★ 215213个月前更新

在云端运行✓ mcp.figma.com

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

noddle draw MCP server

Lets an AI agent (Claude Code, Claude Desktop, or any MCP client) work on a board alongside you: read, create and edit boards, browse version history, and comment like any other collaborator.

noddle draw is anonymous. There are no accounts and no tokens. A board id (12 hex chars) or a board URL is the capability. The agent can open any board you give it, and anyone holding the link of a board the agent creates can open it too. The agent signs its comments and version snapshots with NODDLE_AGENT_NAME.

  • Stdlib-only Python ≥ 3.9 (urllib + json), so there is nothing to install.
  • stdio transport: one JSON-RPC 2.0 message per line. stdout carries only protocol messages, and logs go to stderr.
  • MCP protocol, dual-era:
  • 2026-07-28 (modern, stateless): every request carries _meta["io.modelcontextprotocol/protocolVersion"] + clientCapabilities. The server implements server/discover, and sets resultType and _meta["io.modelcontextprotocol/serverInfo"] on every result, plus ttlMs/cacheScope on list/read results. An unsupported version returns -32022 UnsupportedProtocolVersion.
  • Legacy `initialize` handshake: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05. The server answers with the client's version when it supports it, and otherwise with 2025-11-25. ping works in this mode. JSON-RPC batches are accepted only for 2025-03-26, the only revision that allowed them.

1. Register

Claude Code (from the repo root; an absolute script path is more robust):

claude mcp add noddle -- python3 mcp/noddle_mcp.py

a self-hosted instance instead of draw.noddle.dev:

claude mcp add noddle --env NODDLE_BASE_URL=http://127.0.0.1:8000 -- python3 mcp/noddle_mcp.py

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json) or a project .mcp.json use the same shape:

{

"mcpServers": { "noddle": { "command": "python3", "args": ["/absolute/path/to/noddle-draw/mcp/noddle_mcp.py"], "env": { "NODDLE_BASE_URL": "https://draw.noddle.dev" } } } }

MCP Bundle (one-click install in Claude Desktop and other MCPB clients): download noddle-draw.mcpb from the latest mcpb-v* release and open it. It needs only Python 3.10+ (standard library, no install step).

From a checkout (pyproject.toml here):

uvx --from ./mcp noddle-draw-mcp       # or: pipx install ./mcp && noddle-draw-mcp

The server is listed in the official MCP Registry as dev.noddle/draw (see Releasing).

EnvDefault
NODDLE_BASE_URLhttps://draw.noddle.devhttp(s) origin of the noddle draw instance. A non-http(s) value exits with code 2
NODDLE_AGENT_NAMEMCP agentdisplay name on comments and version history (max 40 chars)
NODDLE_TIMEOUT30seconds per board API call
NODDLE_AI_TIMEOUT180seconds for generate_diagram
NODDLE_AI_PROVIDER—optional BYOK for generate_diagram: claude, openai, gemini, openrouter or custom
NODDLE_AI_KEY—your AI provider key. It is sent only to NODDLE_BASE_URL, as the same X-AI-* headers the web app uses, and never stored. Unset means the instance's shared pool is used, if it has one
NODDLE_AI_MODEL—optional model override
NODDLE_AI_BASE—OpenAI-compatible base URL (provider custom only)

CLI: --help, --version, --list-tools (prints the tool definitions as JSON). Exit codes: 0 when stdin closes (normal shutdown), 2 for bad configuration.

2. Tools

Every tool returns structuredContent that conforms to its outputSchema, plus the same JSON as a text block. Board tools also return a resource_link to noddle://board/{id} (revisions ≥ 2025-06-18). Wherever a tool takes doc_id, you can pass either the 12-hex id or the board URL ({base}/d/{id} or /embed/{id}). A URL on a different origin than NODDLE_BASE_URL is refused.

ToolreadOnlydestructiveidempotentopenWorldWhat it does
get_board✓✗Name, url, my_role (editor/viewer), updated_at, page summary and diagram JSON. Optional page_id and include_svg
create_board✗✗✗✗New board, with optional diagram JSON. Anyone with its url can edit it
update_board✗✓✓✗Replace the WHOLE diagram (fetch → edit → send back). A version snapshot is kept. expected_updated_at turns a concurrent edit into a conflict error instead of an overwrite
rename_board✗✗✓✗Rename
list_versions✓✗Version-history snapshots, newest first
get_version✓✗One snapshot's diagram. To restore it, pass it to update_board
list_comments✓✗Comment threads
add_comment✗✗✗✗Pin to ONE of node_id / edge_id / parent_id (reply) / point x,y (+ page_id). Works on view-only links too
generate_diagram✓✓Turns prose or Mermaid into diagram JSON through the instance's AI (your BYOK key or its shared pool). It saves nothing, so pass the result to create_board/update_board

There is deliberately no `list_boards` and no delete: the API has neither. Link access is not discovery, and an anonymous board has no owner who could be trusted to delete it. Writes to a board whose link is view-only fail with a 403 tool error.

Diagram payloads are pass-through. The server checks only the envelope ({pages:[{id,nodes,edges}]} or legacy {nodes,edges}, with string ids). Node and edge fields are forwarded untouched, so new editor fields (e.g. the freedraw kind with points, or curved routing) work without a server update. See DiagramNode / DiagramEdge in contracts/openapi.yaml.

Errors:

  • Bad arguments, API failures (400/403/404/413/422/429/503) and conflicts come back as isError: true tool results that the model can act on.
  • Protocol errors use standard JSON-RPC codes: unknown tool or invalid params -32602, unknown method -32601, malformed JSON -32700, invalid request -32600.

3. Resources & prompts

  • Resources: resources/list lists the boards this session has created, read or edited, as noddle://board/{id} (application/json, lastModified). It starts empty, because the API has no listing. resources/templates/list exposes noddle://board/{doc_id}, so a client can read any board by id. resources/read returns the same JSON as get_board. An unknown board returns -32602.
  • Prompts:
  • design_board(topic, notes?): generate → sanity-check → create_board → reply with the url.
  • review_board(doc_id): embeds the board as a resource and asks for a critique posted as anchored comments.

4. Example (Claude Code)

> Create a board "Payment flow" with Client → API Gateway → Payment Service → Database,

then comment on the Database node reminding the team to review indexes.

Claude: generate_diagram(text="Client -> API Gateway -> Payment Service -> Database") → create_board(name="Payment flow", diagram=…) → add_comment(doc_id, body="Please review indexes for the payments table", node_id="db") → returns https://draw.noddle.dev/d/{id}

Comments reach an open board in realtime. A diagram written with update_board shows up when the board is reloaded.

5. Tests

python3 -m pytest mcp -q        # or: python3 -m unittest discover mcp

test_noddle_mcp.py runs the real server over stdio against a fake in-process REST backend. It covers version negotiation (modern and legacy), schema validity, read and write tools, board-URL ids, view-only links, resources, prompts, BYOK header forwarding and error paths. It also asserts that stdout carries only JSON-RPC, that no request ever carries an Authorization header, and that a BYOK key never leaks into output or logs.

Releasing

mcp/server.json is the registry listing (dev.noddle/draw); it points at the MCP Bundle attached to a GitHub release. The dev.noddle/* namespace is verified over HTTP: noddle.dev serves the publisher's ed25519 public key at /.well-known/mcp-registry-auth.

  1. Bump the version everywhere, all equal: __version__ in noddle_mcp.py, version in mcpb/manifest.json, version in pyproject.toml, and version in server.json. Registry versions are immutable; a metadata-only fix uses a suffix such as 1.0.0-1.
  2. Build the bundle: mcp/build_mcpb.sh → mcp/dist/noddle-draw.mcpb (prints its SHA-256).
  3. Create the release with that exact file: gh release create mcpb-v mcp/dist/noddle-draw.mcpb --title "MCP server ".
  4. In server.json, set the package identifier to the release download URL and fileSha256 to the printed hash, then publish with the namespace key holder's mcp-publisher login http --domain noddle.dev --private-key … and mcp-publisher publish mcp/server.json.

Notes

  • update_board keeps the stored SVG preview. The preview refreshes on the next save in the editor.
  • Cross-origin HTTP redirects are refused, so a BYOK key is never forwarded to another host. A BYOK key over plain http to a non-loopback host logs a warning.
  • generate_diagram sends text to an AI provider. Never pass customer PII, credentials or account numbers.
问 PopNx