
Font Lab
io.github.jmg698Published by GitHub account jmg698v1.0.0Updated Oct 24, 2026
A decision surface for typography: curate font directions on your real site, ship next/font code.
Overview
Font Lab lets an assistant curate font pairings, preview them on your real site, and write reversible next/font or @font-face code for the one you pick.
- What you can do
- Analyze a project's stack and report which preview and auto-ship paths apply
- Compose curated font directions (display, body, mono) with rationales, rejecting generic AI defaults
- Preview directions on real pages: a live in-app panel on Next.js, headless screenshots elsewhere, or a portable specimen sheet
- Edit page copy in place and show change receipts
- Ship the chosen direction as next/font plus Tailwind or self-hosted @font-face code, with undo and a finish step that strips the dev scaffolding
- When to use it
- Useful when an AI-built site has fallen back to default fonts like Inter or Geist and you want to compare real alternatives on your own pages before committing. Also handy for tightening page copy while choosing typography.
- Requirements
- Runs locally as an npm package (npx font-lab install) over stdio; desktop only. Needs a project with a CSS seam and, for screenshots, a dev server, which the tool can start itself bound to 127.0.0.1. No accounts, keys or environment variables are declared.
Installation
In SourceWeft
- Open Font Lab in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Font Lab
[npm version] [npm provenance] [license: MIT]
Pick the fonts. Fix the words. Your agent does the work.
[Font Lab — flipping font directions live on a real running site]
Font Lab is a real-time typography and text editor for AI-built sites. Your agent installs it, composes curated font directions Google fonts and distinctive open-foundry faces, and renders them live on your real site. You can toggle between the fonts and pick the one you like. The agent then finishes it up— next/font + Tailwind on Next.js, self-hosted @font-face everywhere else — reversibly.
Most AI-built sites ends up with generic fonts, like Inter or Geist, because the agent just uses defaults. Font Lab brings the human choose from options the agents curates based on some intake questions. It also allows you to edit text to make it sound like you wrote it.
copy-able prompt here: https://www.jack-mcgovern.com/fontlab
Install
Inside your project — use this prompt:
Works with: Claude Code · Cursor · VS Code · Codex · Windsurf · Gemini CLI For: any framework with a CSS seam — Next.js gets the full live-panel experience; everything else ships through the same engine (see the matrix below).
Install auto-detects which agents you have and wires them all — skill, MCP server, config, each in the right format. On a stack with no seam at all, Font Lab refuses to half-apply and hands you the generated code with a clear reason instead.
Newly registered MCP tools load on the next session reload — but the agent never has to wait: every tool also runs as a one-shot CLI, npx font-lab run <tool> '<json-args>' (same tool table, same JSON out), so the loop starts the moment install finishes. That's also the fallback whenever an MCP server drops mid-session.
Frameworks — what ships where
The taste engine, shippability gate, portable preview, and screenshots work on every stack. What varies is the preview surface and how the pick lands in your code — font-lab analyze prints the exact verdict for your project:
Every auto-ship path is fenced, idempotent, and reversible (font-lab undo). Agents: read capabilities + shipNote from font_lab_analyze — a non-Next stack is a different route through the same loop, never a reason to stop.
Upgrading
Always use upgrade, not bare npm install.
Font Lab lives in two places: the npm package and the panel code stamped into your project (app/_fontlab/). A bare npm install font-lab@latest updates the package but leaves the panel on the old version — which shows a "stale version" warning. upgrade moves everything together in one command: package, panel re-stamp, MCP re-pin, and stale-endpoint shutdown.
How it works
- Ask. Font Lab asks what you're going for — what feeling, how bold a departure, a brand to evoke or avoid — so the directions are tailored to you, not a generic default.
- Compose. Your agent composes a small set of font directions (display + body + mono, each with a rationale), reaching past the overexposed AI defaults. A built-in anti-generic rubric rejects menus that are all Inter/Geist/Space Grotesk.
- Pick. You compare them on your own site — screenshots in chat (works on web or phone) or a live flip/mix/compare panel locally. You always make the pick.
- Ship. The agent writes the real code for your stack —
next/font+ Tailwind on Next.js; self-hosted@font-facewired through Tailwind's theme, v3 utilities, or your own CSS font variables elsewhere. Every change is reversible. - Finish clean. Click done ✓ (or say so) and the agent runs
font_lab_finish: the dev-panel scaffolding comes out, and you get a git-verified commit plan — your copy edits and font change with ready-to-run commands, nothing of Font Lab's mixed in. The scaffolding and state are self-ignoring in git the whole session, sogit statuswas never noisy to begin with.
The panel
The Font Lab panel sits on top of your running site — your real pages, your real content — and lets you change fonts and words in real time.
- Flip through directions with arrow keys — see each pairing on your actual content across multiple routes
- Mix roles — heading from one direction, body from another — and save the mix as its own direction
- Before/after — hold
Bto peek at your current fonts; tapspaceto snap between your two finalists - Inspect — hover any text to see its role, typeface, size, and how many elements share it
- Edit words — double-click any text, retype it, and it saves straight to your source files
- Change receipts — see exactly what changed across the page after every edit
- Undo everything — every modification ships with a reversal command
- Done ✓ — one click ends the session cleanly: your agent strips the dev tooling and hands you the exact commit plan
The panel runs headless too: the agent screenshots your site in each direction and shows you the images in chat — a chat-sized hero shot per direction, with the full-page capture behind it. Works on a phone, on the web, anywhere your agent runs.
The live panel is Next-only — but the real-site preview isn't. On every other framework, Font Lab paints your actual running pages in each direction (the same render-first census machinery the panel flips with, injected headlessly — no scaffolding, no source writes; preview fonts cache in self-ignored state, so your git status stays clean until you actually ship). If no dev server is running, the screenshot tool starts your project's own dev command itself — bound to 127.0.0.1, health-checked, stopped after the capture — which is what makes the loop work unattended in cloud/container agents (Claude Code on the web, and friends) where the human can't reach the agent's localhost. With no dev server possible at all, the fallback is the portable preview: a self-contained HTML specimen sheet (fonts embedded, opens offline) on your own palette and copy — clearly labeled as specimen cards, never passed off as your pages.
Honesty
Font Lab's core promise is preview == ship: what you see in the panel is what the codegen writes.
- Guaranteed fidelity for every font the gate admits — or an honest "may render slightly differently" badge when it can't be byte-for-byte.
- Auto-ships only where the stack has a real seam; anywhere else it hands you the generated code with a clear reason rather than guessing. Never a half-applied change — that's the contract.
- Text sourced externally triggers an explicit notice, never a silent edit.
- The human's pick overrides everything.
Contributing & testing
Testers are the point — especially "it did the wrong thing on my repo" reports. The analyzer output is the most useful thing you can include.
- Issue forms — bugs and "support my stack" requests
CONTRIBUTING.md— code contributions and how to run the testsSECURITY.md— security issues
Going deeper
cli/README.md— the full user guide: install flags, the agent loop, every keyboard shortcut, the CLI referencedocs/CONCEPT.md— the vision and the core beliefdocs/ARCHITECTURE.md— how the choosing moment works and theselection.jsoncontractdocs/SHIP-SPEC.md— how a pick becomes real, reversible codedocs/PRODUCT.md·docs/PANEL-VISION.md— product and brand context
Open source · MIT · Published with npm provenance — every release is traceable to this repo and commit. Built and dogfooded on jack-mcgovern.com.
Source: README.md at commit 53066a5
Tools
0Version history
1- v1.0.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts