Deterministic photo-to-crochet-chart engine: stitch counts, 5 techniques, yarn estimates.
The deterministic photo-to-crochet-chart engine behind crochetpatterngen.com — packaged as a Python library, CLI, and MCP server so AI agents (Claude Desktop, Cursor, etc.) can turn photos into crochet charts with exact stitch counts.
Deterministic, not generative. There is no AI image generation here — just resize, median-cut color quantization, and confetti cleanup. Same input, same chart, same stitch counts, every time. No hallucinated rows.
graph, c2c, tapestry, mosaic, filet.rembg extra for background removal.pip install crochetpatterngen-engine # core
pip install crochetpatterngen-engine[mcp] # + MCP server
pip install crochetpatterngen-engine[rembg] # + background removal
from PIL import Image
from crochet_chart_engine import generate_chart, render_design, estimate_yarn
png_bytes, meta = generate_chart(
Image.open("photo.jpg"),
technique="c2c", # graph | c2c | tapestry | mosaic | filet
grid_w=60, # 20..120
n_colors=8, # 2..16
)
# meta: {"grid_w", "grid_h", "colors": [{"hex", "count"}],
# "total_stitches", "technique", "warning"}
yarn = estimate_yarn(meta, weight="worsted")
# {"total_yards": ..., "colors": [{"hex", "count", "yards"}], ...}
png_bytes, meta = render_design("designs/frog.txt") # ASCII design -> chart
crochet-chart chart photo.jpg out.png --technique c2c --grid-w 60 --colors 8
crochet-chart design designs/frog.txt frog.png
crochet-chart yarn photo.jpg --technique graph --weight worsted
Add to claude_desktop_config.json:
{
"mcpServers": {
"crochet": {
"command": "uvx",
"args": ["--from", "crochetpatterngen-engine[mcp]", "crochetpatterngen-mcp"]
}
}
}
Or with a regular pip install:
{
"mcpServers": {
"crochet": {
"command": "python",
"args": ["-m", "crochet_chart_engine.mcp_server"]
}
}
}
Tools exposed (stdio transport):
| Tool | What it does |
|---|---|
photo_to_chart | Local image path → chart PNG (base64 or saved to output_path) + per-color stitch counts JSON |
render_ascii_design | ASCII design file → chart PNG + stitch counts |
estimate_yarn_tool | Stitch counts → per-color yardage for one yarn weight or all |
See designs/frog.txt and designs/dragon.txt:
# comment
palette: G=#58A05C, W=#FFFFFF, .=#FAFAF7
title: Frog Face
technique: graph
---
..GGGG..........GGGG....
.GGWWGG........GGWWGG...
One character per stitch; . is the background/padding color. Rows are padded to the longest row.
pip install -e .[dev,mcp]
pytest tests/
MIT — see LICENSE.
Free web tool + pattern library at crochetpatterngen.com.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx crochetpatterngen-engineMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-dengyu123456-crochet-engine": {
"command": "uvx",
"args": [
"crochetpatterngen-engine"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencecrochetpatterngen-enginepypiio.github.dengyu123456/crochet-engine works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.