Make visual text content just work. An MCP server that fixes, validates, and generates diagrams, tables, and box-drawing art for AI coding assistants.
Project description
aifmt
Make visual text content just work.
An MCP server that fixes, validates, and generates visual text content for AI coding assistants.
LLMs can't count visual columns. len("📦") returns 1, but it renders wider. Every AI-generated box, table, and tree diagram ends up misaligned. aifmt fixes it.
Install
pip install aifmt
Configure
Add to your MCP client (Copilot CLI, Claude Code, Cursor, VS Code, Windsurf, Gemini CLI):
{
"mcpServers": {
"aifmt": {
"command": "uvx",
"args": ["aifmt"]
}
}
}
Tools
| Tool | Description |
|---|---|
fix |
Repair misaligned boxes, tables, bars, and tree diagrams |
validate |
Check for alignment issues without modifying |
generate |
Create diagrams via Mermaid or PlantUML |
targets |
List rendering profiles (GitHub, terminal, custom) |
Key Insight
GitHub renders emoji at 2.5 monospace columns — not 2.0. aifmt uses rendering-profile-aware width calculation to handle this. Read how we discovered it →
Documentation
- Getting Started — Install and configure
- Tools Reference — fix, validate, generate, targets
- Python API — Use the library directly
- The 2.5 Discovery — Fractional emoji width story
- Contributing — Development setup and guidelines
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aifmt-0.1.0a1.tar.gz.
File metadata
- Download URL: aifmt-0.1.0a1.tar.gz
- Upload date:
- Size: 44.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fba3389afb3cb61b98b8dc89a3ca83de91caf75f3c57e4fe984b2ff1a9a87a2f
|
|
| MD5 |
0596f7ed52bf8705ecd6b533a4421e40
|
|
| BLAKE2b-256 |
edbaf4a197f2a95a4f2e700d93278d2cd6a9c3fb69608a409679760af0a093d9
|
Provenance
The following attestation bundles were made for aifmt-0.1.0a1.tar.gz:
Publisher:
publish.yml on ericchansen/aifmt
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aifmt-0.1.0a1.tar.gz -
Subject digest:
fba3389afb3cb61b98b8dc89a3ca83de91caf75f3c57e4fe984b2ff1a9a87a2f - Sigstore transparency entry: 1166053813
- Sigstore integration time:
-
Permalink:
ericchansen/aifmt@a8343370b62fe7c3e81a2b441baf167ab1909ef2 -
Branch / Tag:
refs/tags/v0.1.0a1 - Owner: https://github.com/ericchansen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a8343370b62fe7c3e81a2b441baf167ab1909ef2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file aifmt-0.1.0a1-py3-none-any.whl.
File metadata
- Download URL: aifmt-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
821754f3e249b18d66f5dbac23894c141450ce217e38744e14813c46d5615b3c
|
|
| MD5 |
3a8f8dd29890b3cdc43393ada76de88e
|
|
| BLAKE2b-256 |
c87f4a31a8140bd4c603890a67620fae3997f1dc55317ae2be0264ff61fc860d
|
Provenance
The following attestation bundles were made for aifmt-0.1.0a1-py3-none-any.whl:
Publisher:
publish.yml on ericchansen/aifmt
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aifmt-0.1.0a1-py3-none-any.whl -
Subject digest:
821754f3e249b18d66f5dbac23894c141450ce217e38744e14813c46d5615b3c - Sigstore transparency entry: 1166053875
- Sigstore integration time:
-
Permalink:
ericchansen/aifmt@a8343370b62fe7c3e81a2b441baf167ab1909ef2 -
Branch / Tag:
refs/tags/v0.1.0a1 - Owner: https://github.com/ericchansen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a8343370b62fe7c3e81a2b441baf167ab1909ef2 -
Trigger Event:
release
-
Statement type: