mcp-font-split
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., "@mcp-font-splitsplit ./fonts/Roboto-Regular.ttf into web fonts"
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.
mcp-font-split
English | API 参考 | English API | 行为说明
AI 生成代码声明
本项目由 AI 编程助理生成并持续维护。作者不对代码做任何保证,也不承担任何使用责任。代码按“原样”提供,不附带任何形式的担保。
项目状态:已正式发布 1.0.0。
稳定 MCP 工具、默认值、文档化错误类型和稳定响应字段现在作为兼容性契约维护。诊断字段仍可能增加或变得更精确;实验字段不属于稳定契约。使用或集成时请以当前仓库代码、实时 MCP schema、get_agent_guidance 返回值、API 文档和 release notes 为准。
一个 MCP (Model Context Protocol) 服务器,将 cn-font-split 封装为可由 AI agent 调用的字体分割、批量处理、目录整理和输出审计工具。
使用前请先阅读:工具完整行为说明(含高风险 / 非直觉行为)。README 只保留入口、常见工作流和关键风险;字段级细节以 API 参考 为准。
文档导航
你要解决的问题 | 建议先看 |
快速了解项目、安装和常见调用方式 | 当前 README |
查 MCP 工具参数、返回字段和字段语义 | API 参考;英文版见 API Reference |
判断批量去重、目录整理、fallback、输出审计等高风险行为 | |
让 AI agent 选择下一步工具和安全参数 | 先调用 |
维护项目、理解结构并验证改动 | 维护者结构指南; |
Related MCP server: SVG Converter Tools MCP
目录结构不匹配速查
如果字体来自多个网站、压缩包解包目录、vendor dump 或混合根目录,先不要直接写入批量输出。推荐顺序是:
用
inspect_font_inputs只读预检目录。查看
inputDirectoryDecision.directoryOrganizationSafety和sourceLayoutMismatchSummary。如果需要整理,先调用
organize_font_directory+workflowPreset: "safe-preview"。只有审查计划后才使用
reviewed-write;它仍然只是 copy-only 写入outputDir,不会移动、删除或重写源字体。对整理后的暂存目录重新执行
inspect_font_inputs,再进入split_font_batchsafe-preview 和最终输出审计。
非直觉点:organize_font_directory 的输出是“整理后的源目录暂存”,不是最终 web-font 拆分结果;最终结果仍必须由 split_font_batch 写出,并用 inspect_split_output 审计目录结构。
如果这个暂存目录里有 font-organization-manifest.json,inspect_split_output 会把它识别为 organized-font-source-staging,这时它仍然是暂存目录,不是最终拆分输出。
功能
将 TTF/OTF/TTC/OTC/WOFF/WOFF2 字体处理为 web-font 输出。
扫描、预检和批量处理字体目录。
在源目录混乱时生成整理计划,或非破坏性复制到暂存源目录。
使用 manifest 支持增量跳过和输出审计。
提供
get_agent_guidance,让 AI agent 用机器可读指南选择安全工作流。提供 MCP 文档 resources 和
safe-batch-workflowprompt,让客户端可以直接发现项目文档和安全批量流程。工具响应同时提供
structuredContent和兼容旧客户端的 JSON 文本内容。提供真实语料库 smoke suite,用复杂本地字体集合做代表性可靠性验证。
工具列表
工具 | 用途 |
| 返回面向 agent 的工作流指南、工具安全速查表、字段检查清单、目录/identity catalog 和推荐调用模板。 |
| 只读检查工作区、Node engine、包版本、平台和 WASM 可用性。 |
| 不写输出地扫描输入目录,报告字体计数、坏字体、忽略文件、目录布局和推荐第一步。 |
| 规划或 copy-only 整理源字体目录;默认 dry-run,不移动、不删除、不重写源字体。 |
| 处理单个字体,可能得到正常分片、单 WOFF2 fallback 或 copy-original 登记。 |
| 批量扫描、去重、命名、跳过已有输出并处理字体。 |
| 审计生成的拆分输出目录,检查目录角色、manifest 覆盖和结构问题。 |
MCP 资源和 Prompt
除工具外,服务还通过 MCP resources 暴露 README、API 和行为说明文档;通过 safe-batch-workflow prompt 提供“预检 → safe-preview → reviewed-write → 输出审计”的安全批量流程提示。支持 resources / prompts 的客户端可以直接从 MCP schema 发现这些入口。
常见工作流
1. 先让 agent 自我定位
{
"tool": "get_agent_guidance",
"arguments": {
"workflow": "batch",
"detailLevel": "compact"
}
}当目录形态、写入风险或下一步工具不确定时,先看 recommendedWorkflowPlan、nextToolDecisionSummary、toolSafetyQuickReference 和 responseFieldsToCheck。
2. 预检输入目录
{
"tool": "inspect_font_inputs",
"arguments": {
"inputDir": "fonts",
"maxFiles": 50000,
"includeFiles": false
}
}先看 inputCountGuide、inputDirectoryDecision、inputDirectoryDecision.directoryOrganizationSafety、unsupportedFileDecision、unsupportedFileSummary、layout 和 maxFilesHit。压缩包和非字体文件会被报告为忽略项,不会被自动解压、复制或拆分。
3. 批量 safe-preview
{
"tool": "split_font_batch",
"arguments": {
"inputDir": "fonts",
"outputRoot": "split-output",
"workflowPreset": "safe-preview",
"limit": 50000,
"maxFiles": 50000
}
}确认 dryRun: true、batchWarnings[]、dedupeDecisionSummary、batchPolicySummary、sourceSafetyDecision、recommendedNextActions[] 和 errors[] 后,再决定是否写入。
4. 审查后写入并审计输出
{
"tool": "split_font_batch",
"arguments": {
"inputDir": "fonts",
"outputRoot": "split-output",
"workflowPreset": "reviewed-write",
"limit": 50000,
"maxFiles": 50000
}
}写入后运行:
{
"tool": "inspect_split_output",
"arguments": {
"outDir": "split-output",
"maxFiles": 200000,
"includeFiles": false,
"includeFamilies": false
}
}只有输出目录审计明确通过、没有扫描截断,并且结构诊断确认这是合格的拆分输出时,才把结果视为完成。字段级判定请看 API 参考 和 行为说明。
5. 源目录需要整理时
{
"tool": "organize_font_directory",
"arguments": {
"inputDir": "fonts",
"workflowPreset": "safe-preview",
"includePlan": true,
"maxFiles": 50000
}
}整理工具默认只返回计划。即使 reviewed-write,也只是 copy-only 写入 outputDir;它的输出是源目录式暂存,不是最终拆分输出。先用 inspect_font_inputs 检查暂存目录,再用 split_font_batch safe-preview。
关键风险
ok: true只表示工具按所选策略完成,不代表一定发生了正常多子集分片;优先看resultType、outputMode、performedSplit、usedFallback、skipped和warnings。所有路径都限制在
FONT_SPLIT_ROOT内;工具响应里用.表示工作区根目录。写入类工具完成后,不要只看
ok;还要看sourceSafetyDecision、safetySummary、recommendedNextActions[]和必要时的inspect_split_output审计结果。inputDirectoryDecision.directoryOrganizationSafety是判断organize_font_directory是否可用、是否可能改动源文件的最短答案。organize_font_directory不移动、不删除、不重写源字体;它写出的outputDir只是 copy-only 暂存源目录。split_font_batch默认batchNamingMode: "numeric-suffix":先用裸名,只有真实冲突时才加-1、-2等稳定数字后缀。batchDedupeMode: "same-path"只是路径/stem 级去重;batchDedupeMode: "font-identity"会跨格式比较字体身份。font-identity会按字体身份跨格式收敛等价 OTF/TTF/WOFF 输入;具体 name table 回退规则和诊断字段请看 API / 行为文档。.woff/.woff2输入会先解压成 sfnt-like 数据,再进入处理流程。显式传入的无效配置会被拒绝,而不是静默回退;需要默认行为时请省略该选项。
如果
outputRoot位于inputDir内,真实写入仍会落在输入目录树里;描述“源目录树无写入”前必须检查writesSourceTree和outputTreeInsideInputTree。
常用参数速览
参数 | 入口级说明 |
|
|
|
|
|
|
|
|
|
|
|
|
| 控制批量规模和扫描上限;大目录通常需要显式调高。 |
| 大批量只需要摘要、warning 和错误时可设为 |
批量自定义速查
目标 | 最小参数起点 | 必须注意 |
保留每个源字体 |
| 不做 identity 去重;同名输出仍可能需要 |
按源目录分家族 |
| 适合来源目录本身有意义的字体包;目录结构混乱时先做 |
按字体 metadata 分家族 |
| 依赖字体内部 name 表;metadata 错乱时结果也会错。 |
快速扫大而杂的目录 |
| 适合先看规模和结构;字体解析被推迟时,identity 去重和坏字体判断会受限。 |
强制裸输出名 |
| 不自动加后缀,只在确认没有同名冲突或外部已处理冲突时使用。 |
保留错误报告继续跑 |
| 批量可能仍返回 |
完整参数、返回字段和错误形态请看 API 参考。
如何解释返回结果
工具 | 优先检查 |
|
|
|
|
|
|
|
|
| 输出角色判断、结构审计状态、阻塞原因、manifest 覆盖和输出结构摘要 |
这些字段是入口级阅读顺序,不替代 API 文档里的字段定义。
输出形态速查
看到的字段 | 含义 | 下一步 |
| 正常生成 web-font 分片。 | 真实写入后继续用 |
| 没有正常多分片,退化为单个 WOFF2。 | 向用户说明 fallback,并检查 |
| 没有生成 web-font 分片,只复制/登记原字体。 | 不要当成正常拆分结果;检查 manifest、 |
| 单字体处理主动绕过正常多分片,例如小字形 fallback 或 copy-original。 | 结合 |
| 批量 skip 逻辑接受了已有输出,或 dry-run 计划跳过该条目。 | 检查 |
| 批量按错误策略完成,但仍有单字体失败。 | 检查 |
安装
git clone https://github.com/WenZhimo/mcp-font-split.git
cd mcp-font-split
npm install依赖的 cn-font-split WASM 资源会通过 postinstall 脚本准备;也可以手动运行:
npm run install:wasm使用方式
作为 MCP Server
claude mcp add font-split -- node "/path/to/mcp-font-split/src/server.js"独立运行
npm start
npm run batch:run -- . split-output 50000 50000 --dry-runbatch:run 是给 agent 和维护者使用的安全批量入口。默认真实运行走 reviewed-write;--dry-run 或 FONT_SPLIT_DRY_RUN=true 会走 safe-preview。需要稳定 JSON 时用 --json 或 FONT_SPLIT_JSON=true。无效 preset、环境变量、位置参数或配置值会被拒绝;完整 CLI 参数和错误字段以 API 参考 为准。
验证
npm run check
npm run check:compact
npm run --silent check:compact -- --json
npm run smoke:api-docs
npm run smoke:behavior-docs
npm run smoke:real-corpus-suite -- <字体语料目录>npm run check 是推荐给 AI agent / CI 的入口。check:compact 用于快速看 syntax + smoke 是否都通过;smoke:real-corpus-suite 用真实语料做代表性可靠性门禁,不是逐字体或逐目录人工验收。真实语料 suite 会区分全库扫描数量和代表性抽样数量,并明确压缩包只作为忽略文件统计,不会被自动解压验证。
环境变量
变量名 | 说明 |
| 字体工作区根目录。未设置时默认使用 MCP Server 进程启动时的当前工作目录。 |
| 可选的自定义 |
致谢与来源
本项目封装并调用 cn-font-split,核心字体分割能力来自该项目。
许可证
本项目采用 Apache License 2.0。使用依赖项时也请遵守其各自许可证。
This server cannot be installed
Maintenance
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
- 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/WenZhimo/mcp-font-split'
If you have feedback or need assistance with the MCP directory API, please join our Discord server