FontLab MCP Server
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., "@FontLab MCP Serverlist all glyphs in the current font"
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.
FontLab MCP Server
A Model Context Protocol (MCP) server that provides programmatic access to FontLab's PythonQt API, enabling Claude and other AI assistants to interact with FontLab for font design and manipulation.
Overview
This MCP server bridges the Model Context Protocol with FontLab's powerful font editing capabilities, allowing you to:
Query font metadata and glyph information
Create and modify glyphs programmatically
Apply transformations (scale, rotate, translate)
Export fonts to various formats
Automate font design workflows
Architecture
┌─────────────────┐
│ Claude/MCP │
│ Client │
└────────┬────────┘
│ MCP Protocol (stdio)
│
┌────────▼────────┐
│ FontLab MCP │
│ Server │
│ (Python) │
└────────┬────────┘
│ Script Execution
│
┌────────▼────────┐
│ FontLab │
│ Application │
│ (PythonQt API) │
└─────────────────┘The server uses a bridge pattern to execute Python scripts within FontLab's environment, communicating via temporary files and JSON serialization.
Features
Resources (Read-Only Operations)
fontlab://font/current- Get current font informationfontlab://font/current/glyphs- List all glyphsfontlab://font/info- Get detailed font metadatafontlab://glyph/{name}- Get specific glyph details
Tools (Write Operations)
create_glyph- Create new glyphs with custom parametersmodify_glyph_width- Adjust glyph widthstransform_glyph- Apply scale, rotation, and translationupdate_font_info- Modify font metadataexport_font- Export to OTF, TTF, WOFF, WOFF2, UFOdelete_glyph- Remove glyphs from font
Installation
Prerequisites
Python 3.10 or higher
FontLab 7 or 8 installed
pippackage manager
Setup
Clone this repository:
git clone https://github.com/dithilli/fontlab-mcp-server.git cd fontlab-mcp-serverCreate a virtual environment (recommended):
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtInstall the package:
pip install -e .
Configuration
The server automatically detects FontLab installations in standard locations:
macOS:
/Applications/FontLab 8.appor/Applications/FontLab 7.appCustom paths can be configured in the bridge initialization
Usage
Running the Server
Start the server using stdio transport:
python -m src.serverOr use the installed command:
fontlab-mcp-serverClaude Desktop Configuration
Add to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"fontlab": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/path/to/fontlab-mcp-server"
}
}
}Example Usage with Claude
Once configured, you can ask Claude to:
Query font information:
"What fonts are currently open in FontLab?"
Create glyphs:
"Create a new glyph called 'customA' with a width of 650"
Modify glyphs:
"Scale the 'A' glyph by 1.2x horizontally"
Export fonts:
"Export the current font as an OTF to ~/Desktop/myfont.otf"
API Reference
Resources
Get Current Font
URI: fontlab://font/current
Returns: JSON with font metadataList Glyphs
URI: fontlab://font/current/glyphs
Returns: Array of glyph objects with names, unicodes, and widthsGet Glyph Details
URI: fontlab://glyph/{name}
Parameters:
- name: Glyph name (e.g., "A", "space", "Agrave")
Returns: Detailed glyph information including bounds and contoursTools
create_glyph
{
"name": "glyph_name",
"unicode": 65, // optional
"width": 600 // optional, default 600
}modify_glyph_width
{
"name": "glyph_name",
"width": 650
}transform_glyph
{
"name": "glyph_name",
"scale_x": 1.2, // optional, default 1.0
"scale_y": 1.0, // optional, default 1.0
"rotate": 45, // optional, default 0 (degrees)
"translate_x": 10, // optional, default 0
"translate_y": 0 // optional, default 0
}update_font_info
{
"family_name": "My Font Family", // optional
"style_name": "Bold", // optional
"version": "1.0", // optional
"copyright": "Copyright 2025" // optional
}export_font
{
"path": "/path/to/output.otf",
"format": "otf" // optional: otf, ttf, woff, woff2, ufo
}delete_glyph
{
"name": "glyph_name"
}Development
Project Structure
fontlab-mcp-server/
├── src/
│ ├── __init__.py # Package initialization
│ ├── server.py # Main MCP server
│ ├── fontlab_bridge.py # FontLab communication bridge
│ ├── resources.py # Resource handlers
│ ├── tools.py # Tool handlers
│ └── utils/ # Utility functions
├── scripts/ # FontLab executor scripts
├── tests/ # Unit tests
├── pyproject.toml # Package configuration
├── requirements.txt # Python dependencies
└── README.md # This fileTesting
Run tests:
pytest tests/Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
Limitations & Notes
FontLab must be running for the server to function
Script execution uses subprocess communication, which may have latency
Some FontLab features may require specific versions (7 or 8)
The bridge assumes FontLab CLI accepts
-scriptflag (may need adjustment)
Roadmap
Future enhancements:
Support for component manipulation
Kerning table operations
OpenType feature editing
Batch glyph operations
Real-time event streaming
Better error handling and validation
Support for multiple open fonts
Undo/redo functionality
License
MIT License - See LICENSE file for details
Acknowledgments
Built on Anthropic's Model Context Protocol
Integrates with FontLab's Python API
Support
For issues, questions, or contributions, please visit:
FontLab API Docs: https://fontlabcom.github.io/fontlab-python-docs/
Version: 0.1.0 Author: David Szarzynski Status: Alpha - MVP Implementation
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/Dithilli/fontlab-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server