loading…
Search for a command to run...
loading…
Automates OpenArt.ai character and video workflows using Playwright, exposing tools to list, create characters, generate videos, and check render status.
Automates OpenArt.ai character and video workflows using Playwright, exposing tools to list, create characters, generate videos, and check render status.
MCP server + Claude skill for OpenArt.ai. OpenArt has no public API, so this drives their web UI as a logged-in user via Playwright.
src/) — exposes 5 tools that automate OpenArt character + video workflowsskills/openart/SKILL.md) — tells Claude when and how to call the MCP tools| Tool | Purpose |
|---|---|
openart_list_characters |
List every character in your OpenArt account |
openart_get_character |
Get details for one character by ID |
openart_create_character |
Create a new character from a local image |
openart_generate_video |
Generate a video of a character speaking a script |
openart_get_video_status |
Check render status + URL of a generated video |
git clone https://github.com/jbertus/openart-mcp.git
cd openart-mcp
npm install
npx playwright install chromium
npm run build
npm run login # opens browser, log in to OpenArt, press Enter when done
The login step saves a Playwright storageState JSON to ~/.openart-mcp/auth.json (or %USERPROFILE%\.openart-mcp\auth.json on Windows). The server reuses that session for every subsequent tool call.
Claude Code / Claude Desktop — add to your MCP config (~/.claude/mcp.json or equivalent):
{
"mcpServers": {
"openart": {
"command": "node",
"args": ["<absolute-path-to-cloned-repo>/dist/index.js"]
}
}
}
Other MCP clients — point to node <repo>/dist/index.js with stdio transport.
npx skills add https://github.com/jbertus/openart-mcp --skill openart
The skill teaches Claude when to call which tool and how to format arguments. Without it, Claude can still use the MCP but you'll have to spell out intent more explicitly.
Environment variables (all optional):
| Var | Default | Purpose |
|---|---|---|
OPENART_STORAGE_STATE |
~/.openart-mcp/auth.json |
Path to Playwright session JSON |
OPENART_HEADLESS |
true |
Set to false to see the browser during automation |
The tools in src/tools.ts ship with placeholder DOM selectors marked TODO. OpenArt's UI changes over time, so the selectors need to be captured against the live site:
npx playwright codegen https://openart.ai/suite/characters-and-worlds
Click through the UI for each tool's flow. Playwright generates real selectors. Paste them into the TODO spots in src/tools.ts, rebuild (npm run build), and the tools work.
If the selectors break later (OpenArt redesigns), repeat this step.
npm run login when prompted.npm run inspect # launches MCP Inspector against the server
PRs welcome. If OpenArt's UI changes and the selectors break, open an issue with the new selectors and a brief description of which tool flow needs updating.
MIT — see LICENSE.
Run in your terminal:
claude mcp add openart-mcp -- npx