glyphs-info-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@glyphs-info-mcpsearch handbook for 'kerning groups'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
English | 繁體中文
Glyphs info MCP
⚠️ Maintenance Mode — New Users Please Use the Plugin
This MCP server is in maintenance mode as of 2026-05. The same Glyphs documentation and API queries are available as a faster, lighter Claude Code plugin:
glyphs-reference.Why migrate? The plugin uses Claude's Skills system with progressive disclosure — token usage drops by ~98%, and queries feel instant compared to the MCP's eager-loaded approach. See Why Skills over MCP?
Existing users: This MCP will keep working. Bug fixes only, no new features. PyPI live for at least 12 months from this notice.
A unified MCP server integrating Glyphs handbook queries and API reference lookups for Glyphs font design software.
Related MCP server: mintlify-mcp
🚀 Quick Start
Requirements
Python 3.10+
uv package manager - MCP officially recommended
Claude Desktop - For running the MCP server
macOS
Installation
Method 1: Using uvx (Recommended)
Step 1: Install uv
curl -LsSf https://astral.sh/uv/install.sh | shStep 2: Configure Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"glyphs-info": {
"command": "uvx",
"args": ["glyphs-info-mcp"]
}
}
}Restart Claude Desktop and you're ready to go!
Method 2: Install from Source (Developers)
Prerequisites: uv installed (see Method 1 Step 1)
# Clone with submodules
git clone --recursive https://github.com/yintzuyuan/glyphs-info-mcp.git
cd glyphs-info-mcp
# Install dependencies
uv syncConfigure Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"glyphs-info-mcp": {
"command": "uv",
"args": [
"--directory",
"/Users/username/glyphs-info-mcp",
"run",
"glyphs-info-mcp"
]
}
}
}Replace/Users/username/glyphs-info-mcp with your actual absolute path.
Verify Installation
uv run glyphs-info-mcpYou should see:
✅ Glyphs info MCP Server initialized with 8 unified tools✨ Features
🔍 Unified Search - Smart query routing with automatic content type detection
🌏 Multilingual UI Terms - Support for Glyphs UI terminology in 14 languages
📚 Complete Handbook - All Glyphs official handbook content
🔌 Full API Reference - Python and Objective-C API documentation
🧠 Smart Cross-referencing - Automatic linking of related content
🛠️ MCP Protocol Compatible - Standardized tool interface
📦 Plugin Templates as Resources - Python and Xcode templates for plugin development
🎁 MCP Resources
MCP resources provide direct access to plugin development templates through Claude Desktop.
Python Plugin Templates (Issue #33)
8 Python templates for converting scripts to plugins:
glyphs://plugin-template/filter_without_dialog- Filter without UIglyphs://plugin-template/filter_dialog_with_vanilla- Filter with Vanilla UIglyphs://plugin-template/filter_dialog_with_xib- Filter with XIB UIglyphs://plugin-template/reporter_without_dialog- Reporter pluginglyphs://plugin-template/palette_with_vanilla- Palette with Vanillaglyphs://plugin-template/general_without_dialog- General pluginglyphs://plugin-template/fileformat- File format pluginglyphs://plugin-template/selecttool- SelectTool plugin
Xcode Plugin Templates (Issue #34)
7 Xcode templates for native Objective-C plugin development:
glyphs://xcode-template/reporter- Reporter plugins (.glyphsReporter)glyphs://xcode-template/filter- Filter plugins (.glyphsFilter)glyphs://xcode-template/palette- Palette plugins (.glyphsPalette)glyphs://xcode-template/tool- Tool plugins (.glyphsTool)glyphs://xcode-template/file_format- File format pluginsglyphs://xcode-template/plugin- General pluginsglyphs://xcode-template/plugin_base- Base template
Access Methods:
Via Claude Desktop: Resources automatically appear in the MCP resources list
Via Tools:
Python:
sdk(action='list_python_templates')andsdk(action='get_python_template', template_id='...')Xcode:
sdk(action='list_xcode_templates')andsdk(action='get_xcode_template', template_id='...')
Placeholder Formats:
Python:
____PluginClassName____,____PluginName____,____PluginMenuName____Xcode:
___PACKAGENAMEASIDENTIFIER___,___FILENAME___,___PACKAGENAME___,___FULLUSERNAME___
Python Plugin Samples (Issue #37)
6 complete Python plugin examples with source code:
glyphs://python-sample/callback_for_context_menu- Context menu callback exampleglyphs://python-sample/document_exported- Document export hookglyphs://python-sample/multipletools- Multiple tools in one pluginglyphs://python-sample/plugin_preferences- Plugin preferences handlingglyphs://python-sample/plugin_with_window- Plugin with custom windowglyphs://python-sample/smiley_panel_plugin- Panel plugin example
Xcode Plugin Samples (Issue #37)
4 complete Xcode/Objective-C plugin examples:
glyphs://xcode-sample/custom_parameter_ui- Custom parameter UIglyphs://xcode-sample/inspector_demo- Inspector panel demoglyphs://xcode-sample/photo_font- PhotoFont pluginglyphs://xcode-sample/plugin_with_window- Plugin with window
Access Methods for Samples:
Via Claude Desktop: Resources automatically appear in the MCP resources list
Via Tools:
Python:
sdk(action='list_python_samples')andsdk(action='get_python_sample', sample_name='...')Xcode:
sdk(action='list_samples')andsdk(action='get_sample', sample_name='...')
📋 Feature Overview
Operating Requirements
Module | Out-of-box | Network | Glyphs Required |
Handbook | ✅ | First cache build | - |
API (Python) | ✅ | - | - |
API (Obj-C Headers) | - | - | ✅ |
SDK Documentation | ✅ | - | - |
mekkablue Scripts | ✅ | - | - |
Light Table API | ✅ | - | - |
Vocabulary | - | - | ✅ |
Plugins (Local) | - | - | ✅ |
Plugins (Official) | - | ✅ | - |
News/Tutorials | - | ✅ | - |
Out-of-box: Uses bundled GlyphsSDK submodule data, no extra setup needed. Network: Handbook only needs network for initial cache, then works offline. Glyphs Required: Reads from local Glyphs app (Headers from GlyphsCore.framework).
MCP Tools (8 Unified Entry Points)
The server provides 8 unified tools with action-based routing, reducing context token cost by ~85%:
handbook - Glyphs Handbook operations
vocabulary - UI terminology translation (14 languages)
api - Python and Objective-C API reference
plugins - Local and official plugin management
scripts - mekkablue script collection (358+)
sdk - SDK documentation and Xcode templates
news - Forum, tutorials, and news search
lighttable - Light Table version control API
handbook
Action | Description |
| Search handbook content |
| Get chapter content by filename |
| Get table of contents |
| Get chapter children |
| Get custom parameter details |
| List all custom parameters |
| Cache management (info/update) |
vocabulary
Action | Description |
| Translate UI term |
| Search UI terms |
| Get multi-locale translations |
| List vocabulary categories |
api
Action | Description |
| Search Python API |
| Get Python class info |
| Get class member info |
| Search Obj-C headers |
| Get Obj-C header content |
| List plugin protocols |
| Get protocol methods |
| Convert Obj-C to Python name |
| Convert Python to Obj-C name |
| Identify method type |
| Get method implementation template |
| Search Vanilla UI components |
| Get Vanilla UI component |
| List all Vanilla UI components |
| Get class hierarchy |
| Get class relationships |
| Navigate class structure |
plugins
Action | Description |
| Search local plugins |
| Search official registry |
| Get plugin details |
| Scan repositories directory |
| List plugin categories |
scripts
Action | Description |
| Search scripts |
| Get script details |
| List script categories |
| List scripts in category |
sdk
Action | Description |
| Search SDK content |
| Get SDK file content |
| List Xcode templates |
| Get Xcode template |
| List Python templates |
| Get Python template |
| List Xcode samples |
| Get Xcode sample |
| List Python samples |
| Get Python sample |
news
Action | Description |
| Search forum discussions |
| Search tutorials |
| Fetch tutorial content |
| Fetch forum post |
| Search news posts |
| Fetch news content |
lighttable
Action | Description |
| Search Light Table API |
| Get enum details |
| List all enums |
| List all API items |
📖 Usage Guide
Usage Examples
# Handbook queries
handbook(action="search", query="kerning")
handbook(action="get", filename="anchors.md")
# API queries
api(action="search_python", query="GSFont")
api(action="get_class", class_name="GSGlyph")
# UI terminology
vocabulary(action="translate", term="Cancel", target="zh-Hant")Search Best Practices
Use core English terminology words
Prefer single concept keywords
Utilize automatic query type detection
Refer to the terminology reference for translations
🛠️ Development
Setup
# Install development dependencies
uv sync --extra dev
# Install test dependencies
uv sync --extra testCode Quality
uv run black src/ tests/ # Formatting
uv run ruff check src/ --fix # Linting
uv run mypy src/ # Type checkingTesting
uv run pytest # All tests
uv run pytest tests/test_specific.py # Specific tests
uv run pytest --cov=src/glyphs_info_mcp # Coverage📚 Background
Development Approach
This project was largely built using Vibe Coding iterative development, focusing on rapid feature implementation and practicality.
Data Sources
API Reference: Converted from Glyphs official GitHub SDK code
Handbook Content: Scraped from Glyphs official handbook using an internal parser
Terminology Translation: Extracted from Glyphs app localization string files (.strings)
Recommended Model
After testing, this project works best with Claude models. We recommend using it in the Claude Desktop environment for the best experience.
❓ FAQ
Restart your terminal, or run source ~/.zshrc
Ensure the path is an absolute path (not relative or using
~)Check for JSON syntax errors
Restart Claude Desktop
uv sync --reinstall
python --version # Requires 3.10+⚙️ Configuration
Environment Variables
All paths are auto-detected. Only set these if using non-standard locations:
# export GLYPHS_APP_PATH=/Applications/Glyphs 3.app
# export GLYPHS_APP_HEADERS_PATH=/Applications/Glyphs\ 3.app/Contents/Frameworks/GlyphsCore.framework/Versions/A/Headers
# export GLYPHS_REPOSITORIES_PATH=~/Library/Application\ Support/Glyphs\ 3/RepositoriesOr use the env field in Claude Desktop configuration:
{
"mcpServers": {
"glyphs-info": {
"command": "uvx",
"args": ["glyphs-info-mcp"],
"env": {
"GLYPHS_APP_PATH": "/Applications/Glyphs 3.app"
}
}
}
}Module Enable/Disable
By default, all modules are enabled. To control specific modules, use environment variables:
Available modules: vocabulary, handbook, api, glyphs_plugins, glyphs_news, glyphs_sdk, light_table_api, mekkablue_scripts
Whitelist mode (enable only specified modules):
{
"mcpServers": {
"glyphs-info": {
"command": "uvx",
"args": ["glyphs-info-mcp"],
"env": {
"GLYPHS_ENABLED_MODULES": "handbook,api"
}
}
}
}Blacklist mode (disable specified modules):
{
"mcpServers": {
"glyphs-info": {
"command": "uvx",
"args": ["glyphs-info-mcp"],
"env": {
"GLYPHS_DISABLED_MODULES": "glyphs_news,glyphs_plugins"
}
}
}
}If both whitelist and blacklist are set, whitelist takes precedence.
🔗 Resources
📄 License
MIT License - see LICENSE file.
Glyphs info MCP - Making Glyphs knowledge queries simple and powerful
Last updated: 2026-01-05
Available Tools
2 toolshandbookB
[HANDBOOK] Glyphs Handbook operations
Actions:
- search: Search handbook content (query, search_scope, max_results)
- get: Get chapter content (filename)
- toc: Get table of contents (chapter)
- children: Get chapter children (chapter)
- parameter: Get custom parameter details (name)
- list_parameters: List all custom parameters
- cache: Cache management (operation: info|update, force)
Args:
action: Operation to perform
query: Search keywords (for search action)
filename: Chapter filename (for get action)
chapter: Chapter name (for toc/children action)
name: Parameter name (for parameter action)
search_scope: Search scope - titles, content, all (default: all)
max_results: Maximum results (default: 5)
force: Force cache update (for cache action)
operation: Cache operation - info or update (default: info)
Examples:
handbook(action="search", query="interpolation")
handbook(action="get", filename="anchors.md")
handbook(action="toc", chapter="Interpolation")
handbook(action="parameter", name="ascender")
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| force | No | ||
| query | No | ||
| action | Yes | ||
| chapter | No | ||
| filename | No | ||
| operation | No | info | |
| max_results | No | ||
| search_scope | No | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should fully disclose behavioral traits. It mentions cache management and a force parameter, implying some mutability. But it does not clarify whether operations are read-only (except cache update), authentication requirements, or error behavior. This is insufficient for a tool with 9 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with sections (Actions, Args, Examples) but is somewhat verbose, repeating the action list in both free text and examples. Could be more concise while retaining clarity. Adequate but not optimized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given high complexity (9 params, no output schema, no annotations), the description covers actions and parameters but lacks details on return values, error handling, and usage contexts for specific actions. It is sufficient for basic use but incomplete for nuanced decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It lists all parameters with brief explanations (e.g., 'filename: Chapter filename (for get action)'). This adds meaningful context beyond the schema. Defaults are mentioned but not all implications are clear, so 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it provides 'Glyphs Handbook operations' and lists distinct actions (search, get, toc, children, etc.). This clearly identifies the tool's purpose, but does not differentiate from the sibling tool 'vocabulary', which may also be a reference tool. Thus a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples for common actions, giving concrete usage. However, it does not specify when to use this tool versus the sibling 'vocabulary' or when to prefer one action over another. Usage guidance is implicit but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vocabularyA
[VOCABULARY] Glyphs UI terminology translation
Actions:
- translate: Translate UI term (term, target)
- search: Search UI terms (term, locale)
- mapping: Get multi-locale translations (term, source_locale, target_locales)
- categories: List vocabulary file categories
Args:
action: Operation to perform
term: Term to translate or search
target: Target locale for translation (default: auto -> English)
locale: Search locale (default: zh-Hant)
source_locale: Source locale for mapping (default: en)
target_locales: Comma-separated target locales (default: zh-Hant)
Examples:
vocabulary(action="translate", term="取消")
vocabulary(action="search", term="Cancel", locale="zh-Hant")
vocabulary(action="mapping", term="Cancel", target_locales="zh-Hant,ja,ko")
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | ||
| action | Yes | ||
| locale | No | zh-Hant | |
| target | No | auto | |
| source_locale | No | en | |
| target_locales | No | zh-Hant |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains actions and parameters, but since no annotations are provided, it carries full burden. It does not disclose whether the tool is read-only, idempotent, or has side effects. The examples suggest it is query-oriented, but behavior beyond parameter descriptions is sparse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a header, bulleted actions, parameter list, and examples. It is slightly verbose but efficiently conveys necessary information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with multiple actions and six parameters, no output schema, and no annotations, the description covers actions and parameters thoroughly. It lacks details about return format and potential errors, but is sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates fully by explaining each parameter (action, term, target, locale, source_locale, target_locales), providing defaults, and showing usage via examples. This adds significant meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Glyphs UI terminology translation' and lists four specific actions (translate, search, mapping, categories) with distinct functions. It distinguishes the tool from its sibling 'handbook' by focusing on translation tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Examples provide typical usage scenarios, but there is no explicit guidance on when to use this tool versus the sibling 'handbook' or when not to use it. The description implies usage through action definitions but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v1.4.0- First observed
handbook - First observed
vocabulary
TDQS
The two tools serve entirely distinct purposes: handbook for accessing the Glyphs Handbook content, and vocabulary for UI terminology translation. There is no overlap in functionality or intent.
Both tool names are single, descriptive nouns (handbook, vocabulary), which is consistent. However, they do not follow a verb_noun pattern; the actions inside each tool use verbs (search, get, translate), which is clear but slightly inconsistent in style across levels.
With only 2 tools, the server feels thin for a general 'glyphs-info' purpose. While each tool is well-featured, the scope might benefit from additional tools covering other info domains, though the current count is not unreasonable for a focused info server.
The handbook tool covers a wide range of operations (search, get, TOC, parameters, cache) and the vocabulary tool covers translation and search. However, missing potential areas like glyph specifications or font metadata suggest the set is not fully complete for all Glyphs information needs.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
- GlideOAuthdev.glideapps
Glide's official MCP server — build, manage, and operate GlideOS apps, data, and workflows.
- LovableOAuthdev.lovable
Official MCP server for Lovable, the AI-powered full-stack app builder.
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceAn MCP server that enables Claude to generate, search, and manage documentation for codebases using vector embeddings and semantic search, providing tools for creating user guides, technical documentation, code explanations, and architectural diagrams.6-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables users to query any Mintlify-powered documentation site directly from Claude. It leverages Mintlify's AI Assistant API to provide RAG-based answers and code examples for various platforms like Agno, Resend, and Upstash.1318MIT
- AlicenseCqualityCmaintenanceA comprehensive MCP server that enables Claude to read, create, edit, and generate code from Figma designs. Supports design tokens, code generation to multiple frameworks, and accessibility checks.1004MIT
- AlicenseCqualityFmaintenanceSingle MCP server providing over 500 developer tools for Claude Code, covering security, testing, documentation, and more.500503MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/yintzuyuan/glyphs-info-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server