GlyphPact MCP server
Run GlyphPact from the agent you already use
Install the full plugin in Claude Code or Codex, or add the same local stdio server to Antigravity, Cursor, JetBrains, VS Code, Zed, Windsurf, Gemini CLI, and other MCP clients.
- Plugin or manual
- Local stdio
- No API key
- Claude Code
- Codex
- Antigravity
- Cursor
- JetBrains
- VS Code
- Tools
- 4
- Schema resources
- 3
- SVG uploads
- 0
Install
Choose the part you want
Claude Code and Codex can install the complete plugin. Every client with local stdio MCP support can install the server by itself.
Claude Code + Codex
Full plugin
Includes the four MCP tools, the three schema resources, and thesync-flutter-svg-icons skill. The installed plugin starts the bundled server.
- No personal MCP entry
- Plugin-managed release updates
- Flutter wiring and rendered-verification guidance
Any local stdio host
MCP server only
Adds the same four tools and three resources through the published glyphpact[mcp] package. It does not add the plugin skill.
- One client config entry
- No source checkout or global GlyphPact install
- Version pinned until you update the entry
Recommended where available
Install the full plugin
Add the GlyphPact repository as a marketplace once, then install the plugin. It bundles the exact 1.0.1 release wheel.
claude plugin marketplace add omar-hanafy/glyphpact claude plugin install glyphpact@glyphpact
codex plugin marketplace add omar-hanafy/glyphpact codex plugin add glyphpact@glyphpact
Start a new session after plugin installation. Claude Code can also run /reload-plugins. Do not add a second manual GlyphPact MCP entry while the plugin is enabled.
Manual MCP setup
Pick your client and paste its native config
Every snippet launches the same pinned PyPI package. The outer JSON or TOML changes because MCP clients do not share one configuration file format.
- Runtime
- uvon
PATH; GlyphPact requires Python 3.10 or newer. - First start
- Network access while uv downloads the pinned package and MCP dependencies.
- Later starts
- uv reuses its local cache. SVG compilation itself stays local.
Merge, do not overwrite. If your config already has MCP servers, add the glyphpact entry beside them. The blocks below show complete wrappers so each one is safe to copy.
Antigravity / AgyGlobal or workspace JSON~/.gemini/config/mcp_config.json or .agents/mcp_config.json
- Open MCP Servers, choose Manage MCP Servers, then View raw config.
- Merge the glyphpact entry into the existing mcpServers object. Do not replace unrelated servers.
- Use Refresh in the IDE. In Agy CLI, open /mcp and reload the server.
{
"mcpServers": {
"glyphpact": {
"command": "uv",
"args": [
"tool",
"run",
"--quiet",
"--no-progress",
"--color",
"never",
"--no-config",
"--isolated",
"--from",
"glyphpact[mcp]==1.0.1",
"glyphpact-mcp"
]
}
}
}CursorGlobal or project JSON~/.cursor/mcp.json or .cursor/mcp.json
- Open Customize, select MCPs, and use the global or project configuration.
- Merge the glyphpact entry into mcpServers. Cursor requires type: stdio for this local process.
- Save the file, restart Cursor, and confirm that GlyphPact is enabled in the MCP list.
{
"mcpServers": {
"glyphpact": {
"type": "stdio",
"command": "uv",
"args": [
"tool",
"run",
"--quiet",
"--no-progress",
"--color",
"never",
"--no-config",
"--isolated",
"--from",
"glyphpact[mcp]==1.0.1",
"glyphpact-mcp"
]
}
}
}JetBrains AI AssistantIDE settingsSettings > Tools > AI Assistant > Model Context Protocol
- Choose Add, select STDIO, and paste the JSON configuration.
- Choose whether the server belongs to this project or every project. Working directory is a separate field.
- Select OK, then Apply. The Status column shows when the server is connected.
{
"mcpServers": {
"glyphpact": {
"command": "uv",
"args": [
"tool",
"run",
"--quiet",
"--no-progress",
"--color",
"never",
"--no-config",
"--isolated",
"--from",
"glyphpact[mcp]==1.0.1",
"glyphpact-mcp"
]
}
}
}VS Code / GitHub CopilotUser or workspace JSONMCP: Open User Configuration or .vscode/mcp.json
- Run MCP: Open User Configuration, or add the file under .vscode for one workspace.
- Merge the glyphpact entry into the top-level servers object. VS Code does not use mcpServers.
- Run MCP: List Servers to start, restart, inspect output, and confirm the connection.
{
"servers": {
"glyphpact": {
"type": "stdio",
"command": "uv",
"args": [
"tool",
"run",
"--quiet",
"--no-progress",
"--color",
"never",
"--no-config",
"--isolated",
"--from",
"glyphpact[mcp]==1.0.1",
"glyphpact-mcp"
]
}
}
}ZedAgent settingsSettings > AI > MCP Servers
- Choose Add Server, then Add Local Server, or open the raw settings file.
- Merge the glyphpact entry into context_servers. Zed uses this key instead of mcpServers.
- Return to MCP Servers and confirm that the status indicator is green.
{
"context_servers": {
"glyphpact": {
"command": "uv",
"args": [
"tool",
"run",
"--quiet",
"--no-progress",
"--color",
"never",
"--no-config",
"--isolated",
"--from",
"glyphpact[mcp]==1.0.1",
"glyphpact-mcp"
]
}
}
}Windsurf / Devin DesktopUser JSON~/.codeium/windsurf/mcp_config.json
- Open the MCPs panel in Cascade, or open Cascade > MCP Servers in Settings.
- Merge the glyphpact entry into mcpServers and save the configuration.
- Reopen the MCP panel and confirm that GlyphPact is connected.
{
"mcpServers": {
"glyphpact": {
"command": "uv",
"args": [
"tool",
"run",
"--quiet",
"--no-progress",
"--color",
"never",
"--no-config",
"--isolated",
"--from",
"glyphpact[mcp]==1.0.1",
"glyphpact-mcp"
]
}
}
}Gemini CLIUser or project JSON~/.gemini/settings.json or .gemini/settings.json
- Choose user scope for every project, or project scope for one trusted repository.
- Merge the glyphpact entry into mcpServers and save the file.
- Run /mcp reload, then gemini mcp list to check the connection.
{
"mcpServers": {
"glyphpact": {
"command": "uv",
"args": [
"tool",
"run",
"--quiet",
"--no-progress",
"--color",
"never",
"--no-config",
"--isolated",
"--from",
"glyphpact[mcp]==1.0.1",
"glyphpact-mcp"
]
}
}
}Claude Code, manual MCPUser-scoped CLIClaude Code user configuration
- Use this only when you want the MCP server without the GlyphPact plugin skill.
- Run claude mcp get glyphpact or open /mcp to confirm the registered server.
- Start a new Claude Code session after adding the manual configuration.
claude mcp add-json --scope user glyphpact '{"type":"stdio","command":"uv","args":["tool","run","--quiet","--no-progress","--color","never","--no-config","--isolated","--from","glyphpact[mcp]==1.0.1","glyphpact-mcp"]}'Codex, manual MCPCLI or TOML~/.codex/config.toml or a trusted project .codex/config.toml
- The CLI equivalent is: codex mcp add glyphpact -- uv tool run --quiet --no-progress --color never --no-config --isolated --from 'glyphpact[mcp]==1.0.1' glyphpact-mcp
- Use this only when you want the MCP server without the GlyphPact plugin skill.
- Run codex mcp list or open /mcp, then start a new Codex session.
[mcp_servers.glyphpact] command = "uv" args = ["tool", "run", "--quiet", "--no-progress", "--color", "never", "--no-config", "--isolated", "--from", "glyphpact[mcp]==1.0.1", "glyphpact-mcp"]
Other stdio MCP clientsGeneric JSONYour client's local MCP configuration
- Use this shape when your client documents a top-level mcpServers object and local stdio servers.
- If the client requires a type field, add "type": "stdio" beside command.
- Restart or reload the client, then confirm the four GlyphPact tools before running a build.
{
"mcpServers": {
"glyphpact": {
"command": "uv",
"args": [
"tool",
"run",
"--quiet",
"--no-progress",
"--color",
"never",
"--no-config",
"--isolated",
"--from",
"glyphpact[mcp]==1.0.1",
"glyphpact-mcp"
]
}
}
}Connection check
Confirm the server before asking it to build
Reload the client, find a server named GlyphPact, then compare its public surface with the lists below.
audit_icon_pack build_icon_font check_icon_font read_icon_report
glyphpact://schema/config glyphpact://schema/report glyphpact://schema/cli-result
Reload the client
Use the client-specific reload step above. A GUI client may need to restart after uv is installed so its process receives the updated
PATH.Check the public surface
Confirm all four tool names. Resource browsers should also show the three
glyphpact://schema URIs.Start with an audit
Use an absolute SVG or config path. Keep both fidelity policies at their strict defaults until you have reviewed every finding.
Approve writes deliberately
build_icon_fontpublishes files.check_icon_fontdoes not rewrite generated output, but it may create the output parent and sibling lock.
Use it
Give the agent an absolute path and a stopping point
These prompts keep the first action read only, require explicit policy decisions, and tell the agent when to release temporary audit state.
Inspect one file or a full pack
No project output is published.
Audit the SVG icon pack at /absolute/path/to/icons with GlyphPact. Keep lossy and unrepresentable policies strict. Page every audit finding from the returned snapshot, summarize them by classification, then release the snapshot. Do not change project files.
Audit, publish, then check
The agent stops for policy approval before a build.
Use the GlyphPact config at /absolute/path/to/icon_font.json. Audit it first. Ask before allowing any approximation or omission. If the audit is accepted, build the font, run check_icon_font, then summarize the published report.
Read an existing report
Large report collections stay paged.
Read /absolute/path/to/generated/iconfont.report.json with GlyphPact. Page the issues, glyphs, and skipped icons. Report counts, policy, approximations, omissions, and the generated font and Dart paths.
Tool reference
Four tools with different write boundaries
Each call returns bounded structured JSON. The inner build and check result is validated against GlyphPact's CLI-result schema; report reads are validated against the report schema.
audit_icon_pack
Compile one SVG, a directory, or a config into disposable storage. Review fidelity and safety findings before project files change.
- Inputs
- Exactly one absolute input_path or config_path. Policies default to lossy="error" and unrepresentable="error". Pages use offset and limit.
- Returns
- A structured audit summary, a bounded findings page, and a stable snapshot ID when findings exist.
Page the same snapshot with snapshot_id, then release it with release_snapshot=true. Do not rerun the audit for each page.
build_icon_font
Build and transactionally publish the artifacts declared by an existing GlyphPact config.
- Inputs
- An absolute config_path. adopt_output is false unless the user explicitly approves replacing a non-empty unowned directory.
- Returns
- The schema-validated CLI result, artifact paths on success, and a bounded first page of build findings.
A failed build without a published report can omit findings after the first 100. Fix the named failures and rerun instead of assuming the list was complete.
check_icon_font
Rebuild a candidate and compare it with committed output without rewriting the generated artifact set.
- Inputs
- An absolute config_path. The default timeout is 600 seconds.
- Returns
- Success when output is current, or state="stale" and exitCode=3 when generated files drift.
Check may create the output parent and leaves the persistent sibling coordination lock, so it is non-destructive but not read only.
read_icon_report
Validate and page a published iconfont.report.json without placing the entire report in the agent context.
- Inputs
- An absolute report_path, optional lossy or unrepresentable classification, and an offset and limit up to 500.
- Returns
- A report summary plus independently bounded pages for issues, glyphs, and skipped icons.
The workflow protects fidelity and codepoints
Audit with strict defaults
Provide one absolute SVG path, directory, or config path. Approximation and omission both start as errors.
Page and release the audit snapshot
Follow
findings.nextOffsetwith the returned snapshot ID. Release that snapshot after every page has been reviewed.Decide every fidelity exception
Ask before setting lossy conversion or unrepresentable skipping. Keep the decision in the checked-in config.
Preserve the existing lock
The lock is the codepoint ABI. Do not recreate it to make a migration or build pass.
Build, then run the staleness check
Publish only after policy is settled. A clean
check_icon_fontproves the generated artifacts match the current sources and config.Read the report and verify Flutter
Page the published report. The full plugin then guides exact font wiring, analysis, target build, launch, and rendered glyph comparison.
MCP resources
Three schemas describe the files inside the workflow
These resources describe config files, published reports, and the inner CLI result. They are not schemas for the outer MCP paging and snapshot envelope.
glyphpact://schema/config- JSON Schema for icon-font configuration files.
glyphpact://schema/report- JSON Schema for published iconfont.report.json files.
glyphpact://schema/cli-result- JSON Schema for the inner GlyphPact CLI build and check result.
Filesystem and privacy
Local transport, explicit paths, bounded temporary state
The MCP process runs on the same machine as the client. It has no API key, authentication flow, remote endpoint, or SVG upload path.
- Transport
- Local stdio. The client starts
glyphpact-mcpas a child process and exchanges MCP messages through standard input and output. - Path handling
- Tool paths must be absolute and must already exist. The compiler keeps its own canonical symlink, ownership, and unsafe-input checks.
- Audit state
- Findings live in private local snapshots. One snapshot is capped at 64 MiB; the store holds at most eight snapshots and 128 MiB total. Idle snapshots expire after 15 minutes and all snapshots expire within one hour.
- Published writes
- Build stages an atomic publication beside the configured output, then replaces only an owned output directory. Build and check use a persistent sibling
.glyphpact.lockcoordination file. - Report reads
- Reports must be stable regular files, are capped at 128 MiB, and are checked against the report schema before paging.
- Context limits
- Findings pages allow up to 500 items and 1 MiB. One oversized finding is replaced by a small identity summary instead of flooding the client context.
Troubleshooting
Fix the launcher before debugging the compiler
- The client cannot find
uv - Install uv, close the GUI client completely, and reopen it. GUI apps often keep the
PATHthey received at launch. If needed, replace"command": "uv"with uv's absolute executable path. - The first connection times out
- The first start downloads GlyphPact and its pinned MCP dependencies. Confirm network access, retry once, then inspect the client's MCP log. Later starts use uv's cache.
- GlyphPact appears twice
- The full plugin already registers the server. Remove or disable the duplicate manual entry, or uninstall the plugin if you only want MCP.
- A tool rejects a relative path
- Send an absolute existing path. The server may run outside the project directory, so relative paths are rejected rather than resolved against an uncertain working directory.
- An audit snapshot expired
- Run the audit once more, page the replacement snapshot, and release it when finished. Do not reuse an unknown or expired snapshot ID.
- A new GlyphPact release is available
- Marketplace users update the plugin. Manual users replace
==1.0.1in their config with the release they intend to run, then restart or reload the server.
Still blocked? Include the client name, GlyphPact version, MCP log, and the tool error in aGitHub issue.
FAQ
MCP questions
Does GlyphPact work offline?
Yes. GlyphPact is a command-line compiler that runs locally. Compiling a pack involves no network access: there is no website step, no project service, and no server that receives your artwork. Installation itself needs the network once, to fetch the package.
Does GlyphPact upload my SVG files anywhere?
No. Source SVGs are read from disk and all compilation happens in the local process. Nothing is transmitted, so unreleased or licence-restricted artwork never leaves the machine or the build runner.
Which coding agents can use the GlyphPact MCP server?
Any client that can start a local stdio MCP server can use GlyphPact. The documented setups cover Claude Code, Codex, Antigravity, Cursor, JetBrains AI Assistant, VS Code, Zed, Windsurf, and Gemini CLI. Clients use different JSON keys, TOML sections, and config locations, but each one launches the same published glyphpact-mcp process.
The server has four tools: audit an SVG file or directory and page a stable local findings snapshot, build the output declared by a config, check generated output for staleness without rewriting the artifact set, and page a published report. It also exposes the config, report, and inner CLI-result JSON Schemas as MCP resources.
Should I install the full plugin or configure MCP manually?
Use the full plugin in Claude Code or Codex when you want the MCP server plus the sync-flutter-svg-icons skill. The skill guides project inspection, codepoint compatibility, Flutter font wiring, analysis, target builds, launch, and rendered glyph comparison. The host starts the bundled MCP server after plugin installation.
Use manual MCP configuration in another stdio client, or when you only want the four MCP tools and three schema resources. A manual entry runs the published glyphpact[mcp] package and does not install the plugin skill.
Does a manual MCP configuration update automatically?
No. The manual snippets pin a specific GlyphPact release so the command keeps running the version you chose. When a new release is available, replace the version in the client configuration and restart or reload the server.
Marketplace plugin updates and manual MCP version changes are separate. Installing the full plugin in Claude Code or Codex keeps the MCP server inside the plugin update path; a pasted client configuration remains under the user's control.
Keep reading