FontLab MCP 服务器
一个模型上下文协议(MCP)服务器,提供对FontLab的PythonQt API的程序化访问,使Claude和其他AI助手能够与FontLab进行交互,以进行字体设计和操作。
概述
这款MCP服务器将模型上下文协议与FontLab强大的字体编辑功能相连接,使您能够:
- 查询字体元数据和字形信息
- 通过编程创建和修改字形
- 应用变换(缩放、旋转、平移)
- 将字体导出为多种格式
- 自动化字体设计工作流程
建筑
┌─────────────────┐
│ Claude/MCP │
│ Client │
└────────┬────────┘
│ MCP Protocol (stdio)
│
┌────────▼────────┐
│ FontLab MCP │
│ Server │
│ (Python) │
└────────┬────────┘
│ Script Execution
│
┌────────▼────────┐
│ FontLab │
│ Application │
│ (PythonQt API) │
└─────────────────┘服务器采用桥接模式在FontLab环境中执行Python脚本,通过临时文件和JSON序列化进行通信。
特点
资源(只读操作)
fontlab://font/current- 获取当前字体信息fontlab://font/current/glyphs- 列出所有字形fontlab://font/info- 获取详细的字体元数据fontlab://glyph/{name}- 获取特定字形的详细信息
工具(写入操作)
create_glyph- 使用自定义参数创建新字形modify_glyph_width- 调整字形宽度transform_glyph- 应用缩放、旋转和平移update_font_info- 修改字体元数据export_font- 导出为OTF、TTF、WOFF、WOFF2、UFO格式delete_glyph- 从字体中移除字形
安装
先决条件
- Python 3.10或更高版本
- 已安装 FontLab 7 或 8
pip包管理器
设置
- 克隆此仓库:
git clone https://github.com/dithilli/fontlab-mcp-server.git
cd fontlab-mcp-server- 创建一个虚拟环境(推荐):
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt- 安装该软件包:
pip install -e .配置
服务器会自动检测标准位置中的 FontLab 安装:
- macOS:
/Applications/FontLab 8.app或者/Applications/FontLab 7.app - 在桥接初始化时可以配置自定义路径
用法
运行服务器
使用stdio传输方式启动服务器:
python -m src.server或者使用已安装的命令:
fontlab-mcp-server克劳德桌面配置
添加到你的Claude桌面配置文件中(~/Library/Application Support/Claude/claude_desktop_config.json (在 macOS 上):
{
"mcpServers": {
"fontlab": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/path/to/fontlab-mcp-server"
}
}
}与Claude的示例用法
配置完成后,您可以要求Claude:
查询字体信息:
“FontLab中当前打开了哪些字体?”
创建字形:
“创建一个名为‘customA’的新字形,宽度为650”
修改字形:
“将‘A’字形在水平方向上按1.2倍缩放”
导出字体:
“将当前字体导出为OTF格式,保存到~/Desktop/myfont.otf”
API 参考文档
资源
获取当前字体
URI: fontlab://font/current
Returns: JSON with font metadata列出字形
URI: fontlab://font/current/glyphs
Returns: Array of glyph objects with names, unicodes, and widths获取字形详细信息
URI: fontlab://glyph/{name}
Parameters:
- name: Glyph name (e.g., "A", "space", "Agrave")
Returns: Detailed glyph information including bounds and contours工具
创建图形字符(或:生成字形)
{
"name": "glyph_name",
"unicode": 65, // optional
"width": 600 // optional, default 600
}修改字形宽度
{
"name": "glyph_name",
"width": 650
}转换字形
{
"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
}更新字体信息
{
"family_name": "My Font Family", // optional
"style_name": "Bold", // optional
"version": "1.0", // optional
"copyright": "Copyright 2025" // optional
}导出字体
{
"path": "/path/to/output.otf",
"format": "otf" // optional: otf, ttf, woff, woff2, ufo
}删除字形
{
"name": "glyph_name"
}发展
项目结构
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 file测试
运行测试:
pytest tests/做出贡献
欢迎投稿!请:
- 克隆仓库
- 创建一个特性分支
- 做出你的更改
- 如适用,请添加测试
- 提交拉取请求
限制与注意事项
- 服务器要正常运行,必须启动FontLab
- 脚本执行使用子进程通信,这可能会产生延迟
- 某些FontLab功能可能需要特定版本(7或8)
- 这座桥假设FontLab CLI能够接受
-script标志(可能需要调整)
路线图
未来的改进:
- \[ \] 支持组件操作
- \[ \] 字距表操作
- \[ \] OpenType 特性编辑
- \[ \] 批处理字形操作
- \[ \] 实时事件流
- \[ \] 更好的错误处理和验证
- \[ \] 支持多种开放字体
- \[ \] 撤销/重做功能
许可证
MIT 许可证 - 查看 许可证 文件详情请见附件/文件
致谢
- 建立在……之上 Anthropic的模型上下文协议
- 与……集成 FontLab的Python API
支持
如需咨询问题、提出疑问或贡献内容,请访问:
- GitHub:
- FontLab API 文档:
______________________________________________________________________
版本: 0.1.0 作者 大卫·萨尔津斯基 状态: Alpha - 最有价值球员(MVP)实施
