manga_mcp
manga_mcp
An MCP server that lets Claude generate original, English-dialogue manga in a configurable Japanese art style — with a story-craft layer designed to stop output from reading like generic AI "slop."
How it avoids slop
Writer's pass first.
manga_generate_scriptasks Claude (via your own Anthropic API key) to break your story prompt into a real script — capped at 10 panels total (fewer = higher quality per panel), with genre rules baked in:romance_bittersweet— the core conflict must actually resolve, but at least one thread stays unresolved. No saccharine endings, no pure tragedy.action_mystery— a planted clue must pay off, stakes must escalate panel-over-panel, exactly one misdirection.
Character consistency. The script includes one
character_sheetparagraph, reused verbatim in every panel's image prompt.Text is never left to the diffusion model. Dialogue/captions/SFX are drawn on top by the compositor (
manga_compose_page), in real English text — not the garbled lettering diffusion models produce.
Project layout
manga_mcp/
server.py # MCP tool registrations (the entrypoint)
story_engine.py # Story prompt -> panel script (Anthropic API)
image_backend.py # Panel script -> panel art (Replicate API)
compositor.py # Panel art + dialogue -> finished page (Pillow)
styles.py # Art-direction presets ("our own style" lives here)
models.py # Shared Pydantic schemas
config.py # Env var loading
requirements.txt
.env.exampleSetup
Install dependencies (Python 3.10+):
pip install -r requirements.txtGet your API keys:
Anthropic: https://console.anthropic.com/ → API Keys
Replicate: https://replicate.com/account/api-tokens
Copy
.env.exampleto.envand fill in both keys.Pick an art model. Browse https://replicate.com/collections/generate-anime, open a model you like (e.g. an Animagine XL / Pony-style / NoobAI-XL checkpoint), copy its
owner/name:versionstring from the API tab, and paste it intoreplicate_model_versionfor each profile instyles.py. This is the main knob for "our own style" — tweakart_direction/negative_promptper profile to push the look further.Run it standalone to sanity-check:
python -m manga_mcp.serverConnect it to Claude — two ways:
A) Local, via Claude Desktop. Add to
claude_desktop_config.json:{ "mcpServers": { "manga_mcp": { "command": "python", "args": ["-m", "manga_mcp.server"], "cwd": "/absolute/path/to/manga_mcp", "env": { "ANTHROPIC_API_KEY": "sk-ant-...", "REPLICATE_API_TOKEN": "r8_..." } } } }Restart Claude Desktop and the five
manga_*tools show up as available tools in chat. Requires the Desktop app to be running.B) Remote, no Desktop needed — works from Claude mobile too. Custom connectors connect to a server reachable over the public internet, from any Claude client (web, mobile, Desktop). Fastest path using the included
render.yamlblueprint:Push this folder to a GitHub repo (
git init && git add . && git commit -m init, create an empty repo on GitHub,git push).On render.com (free account): New + → Blueprint → connect that repo. Render reads
render.yamland configures the service automatically.It'll prompt you for the two secret values it can't guess:
ANTHROPIC_API_KEYandREPLICATE_API_TOKEN. Paste those in.Deploy. You get a URL like
https://manga-mcp-xxxx.onrender.com. Free tier cold-starts after idling — fine for testing, a $7/mo tier removes that.In Claude: Settings → Connectors → Add custom connector → paste
https://manga-mcp-xxxx.onrender.com/mcp. Now usable from any chat, phone included.
Tools
Tool | Purpose |
| Story prompt → panel-by-panel script (≤10 panels) |
| One panel's art via Replicate |
| Panel art + dialogue → finished page PNG |
| Runs all three end-to-end for a whole story |
| Lists configured art styles |
Known gaps / next steps
Character consistency is prompt-only right now. It's driven entirely by reusing the
character_sheettext — good enough for a prototype, but true cross-panel consistency needs image-to-image referencing (e.g. an IP-Adapter / ControlNet reference pass, or generating a character turnaround once and feeding it back into every panel call).Layouts are template-based (
compositor.py: LAYOUT_TEMPLATES), not yet driven bypanel_size_weight— a splash panel currently doesn't visually dominate the page yet.No caching — re-running
manga_generate_full_storyre-generates every image from scratch (costs add up on Replicate).
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Shdaowfish066/First_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server