Safety model
Glyphs MCP is designed for human-controlled font editing. The server gives agents useful tools, but the workflow should keep you in charge of target selection, mutation, review, and saving.
Core rules
- Read before write: inspect current state before changing it.
- Confirm targets: name the font, master, glyph, layer, path, or selected nodes before mutation.
- Dry run before apply: preview changes when the tool supports
dry_run. - Confirm-gated mutations: use
confirm=trueonly after approval. - No auto-save: the plug-in does not save fonts unless
save_fontis called. - Prefer dedicated tools: use specific tools before free-form code.
For Tunni balancing, review the exact glyph/master/path first, then pass only
the approved curve end-node indices to apply_tunni_balance. The apply tool
resolves the target, snapshots and recomputes current geometry in the same
main-thread transaction, changes only eligible explicit handles, verifies the
complete path signature plus actual coordinate read-back, and restores every
original coordinate on failure. It refuses to write unless the layer exposes
both callable change-batch methods. Curvature review is read-only and provides
warnings rather than artistic approval. The native curvature Reporter changes
only global Glyphs display state: activation/deactivation runs on the main
thread, is verified through Glyphs.activeReporters, and requests a redraw.
Its drawing callback reads detached coordinate snapshots, is bounded by a
2,000-stroke frame cap, and never edits, dirties, or saves a font.
Path-targeted curvature diagnostics measure raw editable paths and explicitly
report components omitted from those segment measurements.
For outline changes, the normal workflow is a detached candidate session. Preview tools automatically enable View > Show Glyphs MCP Candidate and do not dirty the font. The Reporter draws only the source/candidate symmetric difference in warm golden yellow, turns it coral red when stale, and never paints a complete outline over the live layer. Curvature remains a separate Reporter. Multi-master and multi-glyph batches must use sessions. Materialize only when standard Glyphs editing is needed; the copied layer is owned by a namespaced manifest and never uses a background. Re-review after any manual edit. Acceptance requires a short-lived one-time token bound to both the source and candidate fingerprints, rechecks them on the main thread, writes only operation-approved fields, verifies every read-back, and removes candidate layers only after complete success. Clearing the Reporter is UI-only; deleting materialized candidates requires the explicit discard tool. None of these tools saves a font.
Safe prompt template
Use this when you want the agent to review first and mutate only after approval:
You are my Glyphs MCP assistant.
Rules:
- Read current state before any mutation.
- Confirm exact targets before changing anything.
- Never auto-save.
- Never mutate without a dry run first when the tool supports dry_run.
- Show me a short summary of proposed changes: counts, biggest deltas, and skipped items.
- Wait for me to reply exactly "apply" before calling any tool with confirm=true.
Task: <describe the goal>
1. Inspect current state with read-only tools.
2. Run the appropriate apply tool with dry_run=true.
3. Stop and wait for approval.
4. If I reply "apply", run the same call again with confirm=true.
5. If I reply "save", call save_font.
Local access
By default, Glyphs MCP binds to localhost and does not require authentication. Keep it local unless you understand the security implications of exposing it elsewhere.
Optional controls:
GLYPHS_MCP_AUTH_TOKEN: require a static token on requests.GLYPHS_MCP_ALLOWED_ORIGINS: restrict request origins by hostname allowlist.
See Settings for the exact environment variables.
What safety does not replace
Glyphs MCP can make repeatable tool calls, but it does not replace type-design judgement. Always proof kerning, spacing, feature behavior, and outline edits visually in Glyphs before saving or shipping.