Skip to main content

Hermes-first MCP bridge for the Pencil design tool — proxies the bundled MCP server and adds .pen file utilities

Project description

hermes-pen-bridge

Unofficial. Community MCP bridge for the Pencil design tool, built primarily for Hermes but compatible with any MCP client. Not affiliated with or endorsed by High Agency, Inc. "Pencil" is their trademark; this project uses the name descriptively only.

A hybrid MCP server that spawns Pencil's bundled MCP binary and layers extra developer tools on top — file validation, design-token extraction, layer trees, structural diffs, and batch export.

Pencil already ships an MCP server out of the box. This project doesn't replace it — it proxies all 13 native tools through unchanged and adds 7 utility tools that are convenient when scripting against .pen files from outside the app.

Architecture

[MCP client] ─stdio MCP─► [hermes-pen-bridge] ─stdio MCP─► [Pencil's bundled binary] ─WS─► [Pencil app]
                              │
                              └── 7 custom local tools (file utils)
  1. Spawns Pencil's own MCP binary (mcp-server-darwin-arm64) as a subprocess
  2. Forwards all standard MCP tool calls (batch_get, batch_design, get_editor_state, …)
  3. Handles 7 custom tools locally
  4. Relies on Pencil's stored credentials — no extra auth setup

Why "for Hermes"?

Hermes (Nous Research's local agent) is the primary audience — it's where this was first used. The server itself is provider-agnostic standard MCP and works fine with Claude Desktop, Cursor, Claude Code, and any other MCP client. The "Hermes-first" framing is about who we're solving for, not a technical lock-in.

Native tools (proxied)

batch_design, batch_get, export_nodes, find_empty_space_on_canvas, get_editor_state, get_guidelines, get_screenshot, get_variables, open_document, replace_all_matching_properties, search_all_unique_properties, set_variables, snapshot_layout

Custom tools

Tool Purpose
pencil_version Show binary path and server status
pencil_list_recent_files List recent .pen files from Pencil's config
pencil_validate_file Validate a .pen file's structure
pencil_extract_design_tokens Extract colors, fonts, spacing, variables
pencil_list_layers Hierarchical tree of all elements
pencil_diff_files Structural diff between two .pen files
pencil_batch_export Batch export to PNG/SVG

(Tool names retain the pencil_ prefix because they operate on .pen files — descriptive, not a brand claim.)

Installation

Prerequisites

  • macOS (Pencil ships an arm64 binary)
  • Pencil installed at /Applications/Pencil.app with a valid account/license
  • Python 3.11+

Install

From PyPI:

pip install hermes-pen-bridge

Or zero-install with uv:

uvx hermes-pen-bridge --pencil-binary /Applications/Pencil.app/Contents/Resources/app.asar.unpacked/out/mcp-server-darwin-arm64

Or from source:

git clone https://github.com/devvgwardo/hermes-pen-bridge
cd hermes-pen-bridge
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

MCP client configs

Hermes (~/.hermes/config.yaml)

mcp_servers:
  pen-bridge:
    command: hermes-pen-bridge
    args:
      - --pencil-binary
      - /Applications/Pencil.app/Contents/Resources/app.asar.unpacked/out/mcp-server-darwin-arm64
    tools: all

Claude Desktop / Cursor / Claude Code

{
  "mcpServers": {
    "pen-bridge": {
      "command": "hermes-pen-bridge",
      "args": ["--pencil-binary", "/Applications/Pencil.app/Contents/Resources/app.asar.unpacked/out/mcp-server-darwin-arm64"]
    }
  }
}

Restart the client. All 20 tools (13 native + 7 custom) appear automatically.

Usage

pencil_version
pencil_list_recent_files
pencil_validate_file --path "/path/to/file.pen"
pencil_extract_design_tokens --path "/path/to/file.pen"
pencil_list_layers --path "/path/to/file.pen" --max_depth 10
pencil_diff_files --path_a "v1.pen" --path_b "v2.pen"
pencil_batch_export --paths '["a.pen","b.pen"]' --format png --scale 2

Open-source alternative

If you want a fully open-source design tool with built-in MCP (no closed-source binary in the loop), see OpenPencil or ZSeven-W/openpencil.

License & disclaimers

  • Wrapper code: MIT (see LICENSE)
  • Pencil's binary and .pen file format: proprietary to High Agency, Inc. This project does not redistribute Pencil's binary, source, or assets. Users must install Pencil themselves and comply with pencil.dev's Terms of Use.
  • This is an independent community project. No affiliation with or endorsement by High Agency, Inc.

Related: the design pattern

The proxy approach used here is documented as a generic skill at desktop-app-mcp-proxy-pattern — applies to any Electron app that bundles its own MCP binary.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_pen_bridge-0.1.1.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hermes_pen_bridge-0.1.1-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file hermes_pen_bridge-0.1.1.tar.gz.

File metadata

  • Download URL: hermes_pen_bridge-0.1.1.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for hermes_pen_bridge-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9eea4fae823009a61e1e99e992865171f031e71d1605cccdf6625b0a0cbee347
MD5 0232ee56c5341aba7b462be4799473c5
BLAKE2b-256 c2ccd1c4d7a504394d3f8bfd5457ef8bb077ec54eea127d09ffe34a7c3be527b

See more details on using hashes here.

File details

Details for the file hermes_pen_bridge-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for hermes_pen_bridge-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 64be36c99c0e0409766593298cd073f9a17f7db1c4c5f2579f3959562877a36c
MD5 7eaa62d817d28b27c19dc09220e900ad
BLAKE2b-256 1b414a8ba080e9f5aa2505456efac5537a95b0d63dab753ac067bb60b1833de6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page