mcp.film

mcp.film / Story & Pre-Production / PenShot (story-shot-agent)

PenShot (story-shot-agent)

Communityby Community (neopen)freeverified Aug 15, 2026

Breaks screenplays into shot lists and generates Sora/Veo/Runway-ready video prompts.

What it does

An LLM-powered agent that parses scripts in any format, performs shot-by-shot breakdowns, and emits coherent text-to-video prompts with cross-shot character consistency. Runs as an MCP server, Python SDK, REST API, or LangGraph node — the missing link between a screenplay and a generation pipeline.

Connect

Claude Code
claude mcp add penshot -- python -m penshot.mcp_server
Claude Desktop (claude_desktop_config.json)
{
  "mcpServers": {
    "penshot": {
      "command": "python",
      "args": [
        "-m",
        "penshot.mcp_server"
      ]
    }
  }
}
Cursor (.cursor/mcp.json)
{
  "mcpServers": {
    "penshot": {
      "command": "python",
      "args": [
        "-m",
        "penshot.mcp_server"
      ]
    }
  }
}
Auth: api_key — Bring your own LLM API key for the underlying agent (per its docs)

Tools you'll see

breakdown_scriptget_task_statusget_task_resultcancel_taskget_queue_status

Field notes

Growing: 139 stars, PyPI 0.3.6 shipped 23 Jul 2026, MIT. Setup is heavier than the one-line install suggests — it wants an LLM endpoint, an embedding model, and a Redis URL in .env before the MCP server is useful, and the maintainers state it is optimized for Chinese scripts with full English support still on the roadmap. Async is the sane mode: submit with breakdown_script, poll get_task_status, collect get_task_result. Directory finding, still true: no dedicated MCP exists for Final Draft, Celtx, WriterDuet, or Fountain — script writing itself is best done with your agent directly (Fountain is plain text), stored via the Notion or Google Drive MCPs.

Pairs well with