Skip to main content

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.

Metadata

Release files for hermes-pen-bridge 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hermes-pen-bridge 0.1.1
File Size Uploaded Provenance
hermes_pen_bridge-0.1.1.tar.gz 12.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for hermes-pen-bridge 0.1.1
File Interpreter ABI Platform
hermes_pen_bridge-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 23.7 kB

Release files / hermes_pen_bridge-0.1.1.tar.gz

Download URL hermes_pen_bridge-0.1.1.tar.gz
Size 12.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9eea4fae823009a61e1e99e992865171f031e71d1605cccdf6625b0a0cbee347
BLAKE2b-256 checksum
How to use checksums
c2ccd1c4d7a504394d3f8bfd5457ef8bb077ec54eea127d09ffe34a7c3be527b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / hermes_pen_bridge-0.1.1-py3-none-any.whl

Download URL hermes_pen_bridge-0.1.1-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
64be36c99c0e0409766593298cd073f9a17f7db1c4c5f2579f3959562877a36c
BLAKE2b-256 checksum
How to use checksums
1b414a8ba080e9f5aa2505456efac5537a95b0d63dab753ac067bb60b1833de6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Security for hermes-pen-bridge 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page