Skip to main content

Command set

This is the canonical tool reference for the server shipped in this repo. The site navbar links to the current release/version; avoid copying the full command table into README or promotional pages.

The active tool list can be smaller than this page when the Read-only profile is selected in Edit -> Glyphs MCP Server. Reconnect your MCP client after changing profiles so it fetches the current tools/list.

Glyphs MCP supports both Glyphs 3 and Glyphs 4 from main. See Glyphs 3 compatibility for the known Glyphs 3 limits around sidebearings and export edge cases.

Most used tools

  • get_server_info: confirm runtime identity and open-font source-format metadata.
  • list_open_fonts: list open fonts, their source format, and pick a font_index.
  • get_font_masters: find master IDs.
  • get_selected_font_and_master: confirm current font, master, and selection.
  • review_spacing / apply_spacing: review, dry-run, and apply spacing changes.
  • generate_kerning_tab: open a kerning proof/worklist tab.
  • review_kerning_bumper / apply_kerning_bumper: audit and apply conservative collision fixes.
  • review_italic_first_pass / apply_italic_first_pass: preview and apply a guarded roman-to-italic first pass.
  • render_glyph_review_image: render a read-only PNG proof image for visual LLM review.
  • add_glyph_annotation / clear_glyph_annotations: place and remove MCP-managed native Glyphs annotations.
  • docs_search / docs_get: fetch focused Glyphs docs on demand.

Discovery and inspection

Glyph and layer inspection responses may include Glyphs show links:

  • showUrl: native glyphsapp://show/ URL.
  • showHttpUrl: local bridge URL.
  • showMarkdown: Markdown link form suitable for agent responses.
  • showUrlUnavailableReason: returned when an unsaved font cannot produce a stable link.
ToolDescription
get_server_infoReturn runtime identity, Glyphs reachability, and open-font summaries including formatVersion and lastSavedAppVersion.
list_open_fontsList open fonts and source metadata, including formatVersion and lastSavedAppVersion.
get_font_glyphsReturn glyph list and key attributes for a font, including show links when available.
get_font_mastersReturn detailed master information, including italicAngle from Glyphs Font Info Metrics and legacy slantAngle from the separate postscriptSlantAngle custom parameter.
get_font_instancesList instances and interpolation data.
get_glyph_detailsReturn glyph details, shape-type counts, component metadata, grouping/styling diagnostics, compatibility warnings, and show links.
list_style_setsList ss01-ss20 features, source/replacement glyphs, and group links.
get_glyph_componentsInspect components, including traverseAnchors, shape diagnostics, and compatibility warnings.
get_selected_glyphsInspect glyphs currently selected in the UI.
get_selected_font_and_masterInspect current font, master, and selection snapshot.
get_selected_nodesInspect selected nodes with per-master mapping for edits.
get_glyph_pathsExport pathDataVersion: 2 JSON with raw node metadata, shape indices, non-path counts, and compatibility warnings.
get_glyph_annotationsInspect native Glyphs annotations for a layer, including MCP ownership metadata when available.
get_glyph_annotation_groupsInspect MCP-managed linked annotation groups on a layer.
render_glyph_review_imageRender selected or named glyph layers to a PNG image with optional metrics, sidebearing, bounds, node, handle, anchor, and guide overlays.
review_collinear_handlesReview curve nodes that should be smooth based on handle collinearity.

Codex feedback panel

These tools share the versioned ui://glyphs-mcp/feedback-v1.html MCP App resource. Non-UI clients receive the same information as concise text plus structured output. The panel is a review and feedback surface, not an editor.

ToolDescription
show_glyphs_statusShow server, Glyphs, and open-font status.
show_font_feedbackShow bounded, read-only information for an open font.
show_glyph_feedbackShow glyph metadata, dimensions, sidebearings, anchors, components, layers, and warnings without outline paths.
show_opentype_featuresShow OpenType feature state, warnings, line counts, and parsed stylistic-set substitutions; code is omitted unless requested.
preview_spacing_feedbackRun spacing with dry_run=true and create a short-lived reviewed plan.
preview_kerning_feedbackRun kerning bumper analysis with dry_run=true and create a short-lived reviewed plan.
preview_handle_smoothing_feedbackRun collinear-handle smoothing with dry_run=true and create a short-lived reviewed plan.
apply_feedback_planFrom the app, re-run the dry run, compare its canonical change-set hash, consume the plan, and apply only after explicit confirmation.
open_feedback_targetFrom the app, open only resolved glyph/layer objects belonging to an already open font.

Feedback plans expire after ten minutes, are capped at 64 process-local plans, and are never persisted. Every apply attempt consumes its plan before mutation. Stale state, partial results, failure, or an uncertain transport outcome requires a new dry run. None of these tools saves a font.

Kerning

ToolDescription
get_font_kerningReturn kerning pairs for a master.
generate_kerning_tabGenerate and open a kerning review proof tab.
review_kerning_bumperMeasure collisions or near-misses and compute deterministic bumper suggestions.
apply_kerning_bumperApply bumper suggestions as glyph-glyph exceptions; supports dry_run and requires confirm=true to mutate.
set_kerning_pairSet or remove a specific kerning pair.

Spacing

ToolDescription
review_spacingReview spacing and suggest sidebearing/width changes without mutation.
apply_spacingApply spacing suggestions; supports dry_run and requires confirm=true to mutate.
set_spacing_paramsSet spacing parameters as font/master custom parameters; no auto-save.
set_spacing_guidesAdd or clear glyph-level guides visualizing the spacing measurement model; no auto-save.

Compensated tuning

ToolDescription
review_master_stem_metricsReview master stem metrics required by Cursivy and related filters.
set_master_stem_metricsCreate or update master stem metrics; supports dry_run and requires confirm=true to mutate.
measure_stem_ratioMeasure the stem ratio between two masters for compensated tuning.
review_compensated_tuningPreview compensated-tuned outlines for one glyph without mutation.
apply_compensated_tuningApply a two-master compensated scaling transform; supports dry_run, requires confirm=true, and can create backup layers.

Editing and outlines

Italic first-pass tools use the Glyphs source/Transformations angle convention: positive angle values lean Latin outlines to the right. The default is 12.0, chosen as a modern common working default. Exported OpenType/UFO metadata uses the opposite sign convention, so a Glyphs +12 degree source angle corresponds to about -12 in post.italicAngle or an OpenType slnt axis value.

ToolDescription
review_italic_first_passPreview a roman-to-italic layer copy and slant workflow without mutation.
apply_italic_first_passApply a guarded first-pass italic/oblique workflow; supports dry_run, requires confirm=true, and can create backup layers.
set_master_italic_angleSet a master's Glyphs Font Info Metrics italicAngle; supports dry_run and requires confirm=true to mutate.
create_glyphAdd a new glyph.
delete_glyphRemove a glyph.
update_glyph_propertiesChange unicode, category, export flags, metrics keys, groups, or similar glyph properties.
copy_glyphDuplicate outlines or components from one glyph to another.
update_glyph_metricsAdjust width and sidebearings.
add_component_to_glyphAppend a component to a glyph layer.
add_anchor_to_glyphAdd an anchor to a glyph layer.
add_glyph_annotationAdd a native Glyphs annotation and store MCP ownership metadata in layer userData.
add_glyph_annotation_groupAdd linked annotations, such as a circle or arrow plus a text note, under one MCP group ID.
update_glyph_annotationUpdate a native annotation by MCP annotation ID or explicit layer annotation index.
delete_glyph_annotationDelete one native annotation by MCP annotation ID or explicit layer annotation index.
clear_glyph_annotationsClear MCP-managed annotations by default, or all annotations with scope="all".
add_corner_to_all_mastersAdd a _corner.* corner hint at selected nodes across all masters.
set_glyph_pathsAccept legacy or version-2 path JSON; preserve metadata and mixed-shape order, reject unsafe raw-node rewrites before mutation, and roll back failed verification.
apply_collinear_handles_smoothSet smooth flags for reviewed collinear-handle curve nodes; supports dry_run and requires confirm=true to mutate.

Docs helpers

ToolDescription
docs_searchSearch the official Glyphs ObjectWrapper, version 3/4 format specifications, and regular schemas; results include source kind, format version, and URL.
docs_getFetch a bundled docs page by id/path with paging and official source metadata.
docs_enable_page_resourcesRegister each documentation page as a separate MCP resource; optional and noisy.

Prefer docs_search plus docs_get over registering every page as a resource.

Export and execution

ToolDescription
ExportDesignspaceAndUFOExport UFO masters and designspace documents with structured logs and errors.
execute_codeExecute arbitrary Python in the Glyphs context.
execute_code_with_contextExecute Python with injected helper objects such as font, glyph, and layer.
save_fontSave the active font without requesting format conversion; reports format version before and after.

Execution notes:

  • Prefer dedicated tools when they fit.
  • Prefer execute_code_with_context for glyph-scoped scripts.
  • Use snippet_only=true when you want a Macro Panel snippet instead of automatic execution.
  • Bound large outputs with max_output_chars and max_error_chars.
  • Avoid exit(), quit(), and sys.exit().
  • Large glyph edits should use Glyphs undo/change wrappers inside the script.

Safe starter prompts

Health check

Call list_open_fonts and tell me how many fonts are open.
If you see an error, quote it verbatim.

Spacing review

Review spacing for my current selection.
Rules: read first, do not auto-save, and do not mutate without a dry run.

1. Call review_spacing with {"font_index":0}
2. Call apply_spacing with {"font_index":0,"dry_run":true,"clamp":{"maxDeltaLSB":80,"maxDeltaRSB":80,"minLSB":-50,"minRSB":-50}}
3. Stop and wait for approval before using confirm=true.

Kerning collision review

Review kerning collisions or near-misses in my current font/master.
Rules: do not mutate anything.

Call review_kerning_bumper with {"font_index":0,"min_gap":5,"relevant_limit":2000,"include_existing":true,"scan_mode":"two_pass","dense_step":10,"bands":8,"result_limit":200}
Summarize the 20 worst findings and likely next steps.

Focused docs lookup

Search the bundled Glyphs docs for "GSLayer bounds".
Call docs_search first, then docs_get for the best match.
Summarize only the details needed for this task.