hermes-pen-bridge
A hybrid MCP server that proxies Pencil's native design tools and adds utilities for .pen file management, enabling design token extraction, layer trees, diffs, and batch export.
README
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)
- Spawns Pencil's own MCP binary (
mcp-server-darwin-arm64) as a subprocess - Forwards all standard MCP tool calls (
batch_get,batch_design,get_editor_state, …) - Handles 7 custom tools locally
- 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.appwith 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
.penfile 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.