{"id":"f81072e6-2ebf-4ee0-83dd-450c9f1491c9","slug":"seamagic","kind":"skill","name":"seamagic","summary":"A Rust image design toolkit with CLI and MCP server","owner":"Diogenesoftoronto","repoUrl":"https://github.com/Diogenesoftoronto/seamagic","license":"MIT","licenseTier":"permissive","trust":"community","stars":4,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-05-10T23:58:16.000Z","addedAt":"2026-10-21T17:21:05.477Z","logoUrl":"https://avatars.githubusercontent.com/u/87236699?u=67967278cee3f6675d92d3ad3cfbafef3372badc&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["design-media","cloud-infra"],"tags":[],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-26T23:35:39.930Z","sample":false,"url":"https://conduits.dev/tools/seamagic","language":"Rust","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# seamagic\n\n<p align=\"center\">\n  <img src=\"seamagic_logo.png\" alt=\"seamagic logo\" width=\"200\">\n</p>\n\nA Rust image design toolkit with both a CLI and an MCP (Model Context Protocol) server. Think of it as giving your AI — or yourself — a Canva-like toolkit for image manipulation.\n\n> \"The computer programmer is a creator of universes for which he alone is the lawgiver.\"\n> — Joseph Weizenbaum\n\n## Installation\n\n```bash\ncargo install --git https://github.com/diogenesoftoronto/seamagic\n```\n\nOr build from source:\n\n```bash\ngit clone https://github.com/diogenesoftoronto/seamagic\ncd seamagic\ncargo build --release\n```\n\nBinary: `target/release/seamagic`\n\n## Getting Started\n\n### As a CLI Tool\n\nEdit a single photo with one command:\n\n```bash\nseamagic blur photo.png -o blurred.png --sigma 3.0\nseamagic vignette photo.png -o dark-edges.png --strength 0.6\nseamagic draw-text photo.png -o captioned.png --text \"Hello\" --color \"#ff0000\" --size 48\n```\n\nGenerate images from nothing:\n\n```bash\nseamagic canvas -o black.png --width 1080 --height 1080 --color \"#000000\"\nseamagic gradient -o sunset.png --width 1920 --height 1080 --start \"#ff7e5f\" --end \"#feb47b\" --angle 135\n```\n\nChain operations with a Scheme script (Steel DSL):\n\n```bash\ncargo run --example run_example -- scheme \\\n  photo.jpg examples/cyberpunk_glitch.scm output.png\n```\n\n### As an MCP Server\n\n```bash\n# Start the server\nseamagic\n\n# Or explicitly\nseamagic mcp\n```\n\nThen use any MCP client (Claude, Cursor, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"seamagic\": {\n      \"command\": \"/path/to/seamagic\"\n    }\n  }\n}\n```\n\n### MCP-to-CLI (via unmcp / mcp2cli)\n\nUse MCP server tools directly from your terminal. No AI context overhead, just lean CLI access to the same tools.\n\n**unmcp** (`uvx unmcp`)  \n**mcp2cli** (`uvx mcp2cli --mcp-stdio`)\n\n```bash\n# unmcp — initialize once, then call by name\n# Add seamagic to .unmcp/.mcp.json, then:\nuvx unmcp clt init seamagic\nuvx unmcp seamagic edit_image \\\n  --image \"$(base64 -w0 photo.png)\" \\\n  --operation blur --sigma 2.5 \\\n  --output_file blurred.png\n\n# mcp2cli — ad-hoc, no config file\nuvx mcp2cli --mcp-stdio \"/path/to/seamagic\" --list\nuvx mcp2cli --mcp-stdio \"/path/to/seamagic\" edit_image \\\n  --image \"$(base64 -w0 photo.png)\" \\\n  --operation blur --sigma 2.5 \\\n  --output_file blurred.png\n\n# Get image dimensions\nuvx mcp2cli --mcp-stdio \"/path/to/seamagic\" get_info \\\n  --image \"$(base64 -w0 photo.png)\"\n\n# Create a canvas\nuvx mcp2cli --mcp-stdio \"/path/to/seamagic\" create_image \\\n  --type canvas --width 1080 --height 1080 \\\n  --color \"#1a1a2e\" --output_file bg.png\n\n# Run a full Scheme pipeline\nuvx mcp2cli --mcp-stdio \"/path/to/seamagic\" run_steel \\\n  --inputImage \"$(base64 -w0 portrait.jpg)\" \\\n  --script '(define result (image-posterize (image-scanlines (image-chromatic-aberration (image-glitch (image-warp \"input\" \"wave\" 15.0 0.08) \"rgb_split\" 0.7 42) 8.0 #t) 3 0.25 1) 6))' \\\n  --output_file cyberpunk.png\n\n# Compare two images side-by-side\nuvx mcp2cli --mcp-stdio \"/path/to/seamagic\" view_diff \\\n  --mode side_by_side \\\n  --originalImage \"$(base64 -w0 original.png)\" \\\n  --editedImage \"$(base64 -w0 edited.png)\" \\\n  --output_file comparison.png\n```\n\n## CLI Usage\n\n### Quick Examples\n\n```bash\n# Get image info\nseamagic info photo.png\n\n# Resize\nseamagic resize photo.png -o thumb.png --width 300 --height 300 --mode fit\n\n# Apply filters\nseamagic grayscale photo.png -o bw.png\nseamagic blur photo.png -o blurred.png --sigma 5.0\nseamagic brightness photo.png -o bright.png --value 30\n\n# Creative effects\nseamagic glitch photo.png -o glitched.png\nseamagic kaleidoscope photo.png -o trippy.png --segments 8\nseamagic liquify photo.png -o melted.png --mode bulge\nseamagic scanlines photo.png -o retro.png\n\n# Draw shapes and text\nseamagic canvas -o bg.png --width 1080 --height 1080 --color \"#1a1a2e\"\nseamagic gradient -o grad.png --width 1080 --height 1080 --start \"#667eea\" --end \"#764ba2\"\nseamagic draw-text bg.png -o labeled.png --text \"HELLO\" --x 200 --y 200 --color \"#e94560\" --size 64\n\n# Overlay images\nseamagic overlay base.png top.png -o composite.png --x 100 --y 100 --blend-mode multiply\n\n# Pipeline from JSON config\nseamagic pipeline photo.png -o out.png --config effects.json\n```\n\n### Full Command List\n\n| Command | Description |\n|---|---|\n| `info` | Get image dimensions |\n| `crop` | Crop to region |\n| `crop-center` | Center crop |\n| `smart-crop` | Aspect-ratio aware crop |\n| `resize` | Resize (exact/fit/fill/scale) |\n| `thumbnail` | Create thumbnail |\n| `rotate` | Rotate by degrees |\n| `flip` | Horizontal/vertical flip |\n| `blur` | Gaussian blur |\n| `brightness` | Adjust brightness |\n| `contrast` | Adjust contrast |\n| `grayscale` | Convert to grayscale |\n| `tint` | Color tint overlay |\n| `vignette` | Darken edges |\n| `duotone` | Two-color effect |\n| `noise` | Add grain/color/monochrome noise |\n| `liquify` | Bulge/pinch/swirl distortion |\n| `warp` | Wave/fisheye/spherical warp |\n| `glitch` | RGB split/slice shift/datamosh |\n| `scanlines` | CRT-style scanlines |\n| `halftone` | Dot-based newspaper effect |\n| `posterize` | Reduce color levels |\n| `edge-detect` | Sobel edge detection |\n| `emboss` | Emboss filter |\n| `solarize` | Invert above threshold |\n| `chromatic` | Chromatic aberration |\n| `pixel-sort` | Sort pixels by brightness |\n| `kaleidoscope` | Mirror into sectors |\n| `overlay` | Composite with blend modes |\n| `draw-text` | Overlay pixel text |\n| `draw-rect` | Draw rectangle |\n| `draw-circle` | Draw circle |\n| `canvas` | Create solid color image |\n| `gradient` | Create gradient image |\n| `mask` | Apply shape mask |\n| `pipeline` | Chain ops from JSON config |\n| `mcp` | Start MCP stdio server |\n\n### Pipeline Config Format\n\nCreate a JSON file with an array of operations:\n\n```json\n[\n  { \"op\": \"grayscale\" },\n  { \"op\": \"blur\", \"sigma\": 2.0 },\n  { \"op\": \"vignette\", \"strength\": 0.6, \"radius\": 1.2 },\n  { \"op\": \"text\", \"text\": \"SEAMAGIC\", \"x\": 100, \"y\": 100, \"color\": \"#ff0000\", \"fontSize\": 48 }\n]\n```\n\n```bash\nseamagic pipeline input.png -o output.png --config pipeline.json\n```\n\n## As an MCP Server\n\nWhen invoked without arguments, `seamagic` runs as an MCP stdio server with five tools:\n\n### `view_diff`\nCompare images visually. Modes: `side_by_side`, `grid`, `pixel_diff`.\n\n### `run_steel`\nExecute a Steel Scheme script for complex multi-step image editing. Input via base64, all operations exposed.\n\n### `edit_image`\nApply a single operation directly: blur, brightness, contrast, grayscale, tint, vignette, duotone, crop, resize, rotate, flip, draw text/shapes, noise, drop shadow. Faster than Scheme for one-shot edits.\n\n### `create_image`\nGenerate images from scratch: solid canvas, linear gradient, or framed canvas. No input needed.\n\n### `get_info`\nGet dimensions and basic metadata from a base64 image.\n\n### Config\n\n```json\n{\n  \"mcpServers\": {\n    \"seamagic\": {\n      \"command\": \"/path/to/seamagic\"\n    }\n  }\n}\n```\n\n## Steel Scheme Scripting\n\nChain operations using embedded [Steel Scheme](https://github.com/mattwparas/steel). The input image is bound as `\"input\"`; assign the final result to `result`:\n\n```scheme\n(define bg (image-canvas 1080 1080 \"#1a1a2e\"))\n(define grad (image-gradient 1080 1080 \"#667eea\" \"#764ba2\" 135.0))\n(define v (image-vignette grad 0.3 1.0 #f))\n(define result (image-draw-text v \"HELLO WORLD\" 200 445 \"#e94560\" 72))\n```\n\n## Capabilities\n\n- **Transforms**: crop, resize, rotate, flip\n- **Filters**: blur, brightness, contrast, grayscale, tint, vignette, duotone\n- **Distortions**: liquify, warp, glitch, chromatic aberration, pixel sort, scanlines, halftone, posterize, noise, kaleidoscope, emboss, edge detect, solarize\n- **Drawing**: text (ab_glyph with system fonts), rectangles, circles, lines, gradients, canvas\n- **Compositing**: overlay with blend modes, drop shadows, shape masks\n- **AI**: SAM-2 segmentation, background removal, fal.ai image editing\n- **Parallel**: Pixel-level filters (tint, duotone, vignette) use rayon for multi-threading\n\n## License\n\nMIT\n\n## Author\n\nDio the Debugger — me@dio.computer\n"}