MCP server for storyset.com — search, download, and recolor free illustrations directly from Claude Code (or any MCP client).
Cross-platform: works on Linux, macOS, and Windows. Python 3.10+.
| Tool | Purpose |
|---|---|
search(query, limit=20) |
Search illustrations. Returns {title, slug, style, page_url, preview_url} per result. |
get_illustration(slug, style="amico") |
Resolve canonical PNG + SVG asset URLs for one illustration. |
download(asset_url, output_dir?, filename?, recolor?) |
Save an asset to disk. Optional SVG recolor map. Only accepts stories.freepiklabs.com URLs. |
extract_palette(source, top=12) |
List dominant hex colors in an SVG (URL or local file), sorted by frequency. |
recolor_svg(source, mapping, output_path?) |
Rewrite hex colors inside an SVG and save the modified copy. |
search_and_download(query, limit=5, style?, format="svg", output_dir?, recolor?) |
One-shot: search → resolve → save top N (with optional recolor). |
Styles: amico, bro, cuate, pana, rafiki.
- Python 3.10 or newer (
python3 --version) pip(python3 -m ensurepip --upgradeif missing)- Outbound HTTPS to
storyset.comandstories.freepiklabs.com
Clone or copy this repo, then from the project root:
Linux / macOS (bash, zsh, fish):
git clone https://github.com/ReverserID/MCP-STORYSET.git mcp-storyset
cd mcp-storyset
python3 -m venv .venv
source .venv/bin/activate
pip install -e .Windows (PowerShell):
git clone https://github.com/ReverserID/MCP-STORYSET.git mcp-storyset
cd mcp-storyset
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .Using pipx (Linux/macOS/Windows) — installs into an isolated env and exposes the mcp-storyset command globally:
pipx install .The server speaks MCP over stdio. From an activated venv:
mcp-storyset
# or
python -m mcp_storysetIt blocks waiting for an MCP client on stdin/stdout — that is expected. Ctrl+C to stop.
claude mcp add storyset -- python -m mcp_storysetIf you installed inside a venv, pass the venv's interpreter so Claude Code does not need the venv activated:
Linux / macOS:
claude mcp add storyset -- /absolute/path/to/mcp-storyset/.venv/bin/python -m mcp_storysetWindows:
claude mcp add storyset -- C:\absolute\path\to\mcp-storyset\.venv\Scripts\python.exe -m mcp_storysetEdit ~/.claude.json (user-level) or project .mcp.json:
Linux / macOS:
{
"mcpServers": {
"storyset": {
"command": "/home/youruser/projects/mcp-storyset/.venv/bin/python",
"args": ["-m", "mcp_storyset"],
"env": {
"STORYSET_DOWNLOAD_DIR": "/home/youruser/Downloads/storyset"
}
}
}
}Windows:
{
"mcpServers": {
"storyset": {
"command": "C:\\Users\\You\\projects\\mcp-storyset\\.venv\\Scripts\\python.exe",
"args": ["-m", "mcp_storyset"],
"env": {
"STORYSET_DOWNLOAD_DIR": "C:\\Users\\You\\Downloads\\storyset"
}
}
}
}If mcp-storyset is installed via pipx (or globally), "command": "mcp-storyset" with "args": [] also works.
Restart Claude Code, then verify with /mcp — storyset should be listed with 6 tools.
In Claude Code:
- "Find storyset illustrations about developers and download top 3 SVGs."
- "Get the rafiki style of the 'finance' illustration as PNG."
- "Search storyset for 'team meeting', show previews."
- "Show the color palette of this SVG and swap the primary color to
#2196F3." - "Download 'programmer / amico' SVG but recolor
#ba68c8→#10b981."
Storyset SVGs store colors as inline style="fill:#xxxxxx". The primary brand color is usually the most-frequent hex in the palette (often #ba68c8 purple). Workflow:
extract_palette(source=svg_url)→ see colors + counts.recolor_svg(source=svg_url, mapping={"#ba68c8": "#2196f3"})→ save remapped copy.- Or skip step 2 and pass
recolor={...}directly todownload/search_and_download.
| Var | Default | Purpose |
|---|---|---|
STORYSET_DOWNLOAD_DIR |
~/Downloads/storyset (Linux/macOS), %USERPROFILE%\Downloads\storyset (Windows) |
Default save directory for download. Created on first save. |
The default path is resolved with pathlib.Path.home() so ~ expands correctly on every OS.
python: command not found(Linux/macOS): usepython3instead, or install Python from your distro (sudo apt install python3 python3-venv python3-pipon Debian/Ubuntu,brew install pythonon macOS).claudecommand missing: install/upgrade Claude Code, or edit~/.claude.jsonmanually as shown above./mcpshows the server asfailed: run the command from the config in a terminal — any startup error (missing deps, wrong interpreter path) will print there.Permission deniedwriting to~/Downloads/storyseton Linux: setSTORYSET_DOWNLOAD_DIRto a writable directory (e.g./tmp/storyset).- Corporate proxy / TLS interception: set
HTTPS_PROXY/SSL_CERT_FILEin theenvblock of the MCP config —httpxhonors both.
# from project root, in an activated venv
pip install -e .
# quick stdio smoke test
python - <<'PY'
import asyncio, sys
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main():
params = StdioServerParameters(command=sys.executable, args=["-m", "mcp_storyset"])
async with stdio_client(params) as (r, w):
async with ClientSession(r, w) as s:
await s.initialize()
t = await s.list_tools()
print("tools:", [x.name for x in t.tools])
asyncio.run(main())
PYExpected output: tools: ['search', 'get_illustration', 'download', 'extract_palette', 'recolor_svg', 'search_and_download'].
- Storyset content is free under their license — credit required for free-tier use. See https://storyset.com/terms.
- This server scrapes public HTML. No API key.
- All file paths in tool arguments accept
~and are resolved withPath.expanduser().