About WPConvert MCP
WPConvert MCP is an MCP server for converting a project folder into a WordPress theme, for developers using AI clients such as Cursor or Claude Code. It guides conversion jobs from quota checks through preview or download, with guest previews and account-based purchase flows.
Key features
- 01Convert a folder into a theme
- 02Check conversion status and failures
- 03Preview themes in WordPress Playground
- 04Download completed theme ZIPs
- 05Review quotas, plans, and checkout
Use cases
- 01Convert a website workspace into a WordPress theme
- 02Preview a conversion before obtaining a download
- 03Check plan availability before starting a conversion
MCP support
Exposes conversion, status, preview, download, quota, account-connection, plan, and checkout tools to MCP clients. It can run as a local server and uses the WPConvert API.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.wpconvert.ai/mcpclaude mcp add --transport http ai-wpconvert https://mcp.wpconvert.ai/mcp{"mcpServers":{"ai-wpconvert":{"type":"http","url":"https://mcp.wpconvert.ai/mcp"}}}Open in Cursor{"servers":{"ai-wpconvert":{"type":"http","url":"https://mcp.wpconvert.ai/mcp"}}}Open in VS Code{"mcpServers":{"ai-wpconvert":{"type":"http","url":"https://mcp.wpconvert.ai/mcp"}}}{"mcpServers":{"ai-wpconvert":{"serverUrl":"https://mcp.wpconvert.ai/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
6| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | No | Project name (defaults to folder name). |
| path | string | Yes | Absolute or relative path to the folder to convert. |
| type | enum | No | Export type. Only "theme" is supported right now.theme |
| includeEnv | boolean | No | DANGER: include .env / secret files (default false). |
| maxAssetSizeMB | number | No | Exclude individual files larger than this many MB. |
| idempotency_key | string | No | Leave blank for a new intentional conversion. If a prior call may have timed out or returned an ambiguous network error, retry with the exact idempotency_key returned by that prior call. Do not reuse a key for changed files, options, or a deliberate new conversion. |
Details
From the project README@wpconvert/mcp
A Model Context Protocol server for WPConvert.ai. It lets an AI agent (Cursor, Claude Code, Claude Desktop, etc.) convert the current workspace folder into a WordPress theme — no manual zipping required.
It's a thin wrapper over the same HTTP API and smart-zip logic as the wpconvert CLI.
Requires Node.js >= 18. No API key is needed to start: the agent can give you a link for a few free guest previews (one quick human check in the browser, no account), or for signing in. Downloads need Starter, Pro, Agency or pay-as-you-go credits, which you can buy from the same conversation.
Tools
| Tool | Purpose |
|---|---|
wpconvert_convert_folder | Zip a folder (excluding node_modules, build output, secrets) and start a conversion. Returns a jobId. |
wpconvert_check_status | Poll a job's status. Persisted values follow the OpenAPI ConversionStatus enum (queued, pipeline stages, done, failed). The tool-layer bucket processing means still in progress — not a persisted API value. |
wpconvert_download_result | Download a completed conversion to disk. |
wpconvert_create_preview | Get a WordPress Playground URL to view the theme in a live in-browser WordPress. The link expires after about ten minutes and is sensitive — open it in a browser. |
wpconvert_explain_failure | Return the failure reason for a failed job. |
wpconvert_quota | Show quota, capabilities, and recommended_next. Call before converting. For a guest session, shows free previews left. |
wpconvert_connect | Start a browser link: kind: "guest" (free previews, no account) or kind: "login" (sign in; saves a new API key locally). Returns a link and code for you to open — the agent never opens it. |
wpconvert_connect_status | Check whether you finished the link (waits ~20s), and how WPConvert is connected now. |
wpconvert_plans | Every option with what it includes and today's price: Starter (one theme), Pro, Agency (monthly/yearly), pay-as-you-go packs. Pass jobId for options to unlock that conversion. |
wpconvert_checkout | A Stripe checkout link for the option you picked. Needs a signed-in account. You open and pay; the agent never pays. |
Configure (Claude Code)
claude mcp add wpconvert --scope user -- npx -y @wpconvert/mcp
--scope user makes the server available in every project. Confirm with claude mcp list (wpconvert … ✔ Connected) or /mcp inside a session. Then ask the agent to convert a folder; it will offer a guest link or a sign-in link.
To use an existing API key instead, add it before the --, after the server name: claude mcp add wpconvert --scope user -e WPCONVERT_API_KEY=wpc_live_xxx -- npx -y @wpconvert/mcp (-e accepts several values, so put the name first).
Configure (Cursor / Claude Desktop)
{
"mcpServers": {
"wpconvert": {
"command": "npx",
"args": ["-y", "@wpconvert/mcp"]
}
}
}
Optional env: WPCONVERT_API_KEY (an existing key; it takes precedence over a key saved by sign-in) and WPCONVERT_API_BASE (a non-default API host, for testing).
Sign-in and guest sessions are saved in ~/.wpconvert/config.json (mode 0600), shared with the wpconvert CLI. Tool results never include the key, the guest token or the link's device code.
Typical agent flow
Quota-first (recommended):
wpconvert_quota→ reviewcapabilities(conversion mode,can_start, download availability) andrecommended_nextwpconvert_convert_folder { "path": "./my-site", "type": "theme" }→jobId+idempotency_key+recommended_nextwpconvert_check_status { "jobId": "..." }(repeat untildone; followrecommended_next— usually poll every ~15s)- When
recommended_next.tooliswpconvert_download_result→ download the theme.zip - When preview-only or download locked →
wpconvert_create_previewfor a WordPress Playground URL (no ZIP)
If conversion is blocked (can_start: false), wpconvert_convert_folder returns a structured denial before zipping or submitting. Call wpconvert_quota to review recommended_action.
No key yet (guest):
wpconvert_convert_folder→recommended_next: wpconvert_connect { "kind": "guest" }wpconvert_connect { "kind": "guest" }→ the agent shows you a link and code; you open it and confirm you're humanwpconvert_connect_status→connected, with free previews leftwpconvert_convert_folder,wpconvert_check_status, thenwpconvert_create_previewto see it in WordPress Playground (guest uploads up to 50MB zipped; never retried automatically, since each upload uses a preview)
Buying (download a theme, or a plan):
wpconvert_plans { "jobId": "..." }→ every option and price; the agent asks you which one- Not signed in?
wpconvert_connect { "kind": "login" }, thenwpconvert_connect_status, thenwpconvert_plansagain wpconvert_checkoutwith your choice'scheckout_arguments→ a Stripe link you open and paywpconvert_check_status→ once paid,recommended_nextiswpconvert_download_result. Guest themes you buy move to your account.
Capabilities and structured responses
Tools return human-readable prose plus a trailing JSON block (same ok() / fail() pattern as before). Key fields:
| Field | Where | Meaning |
|---|---|---|
quota | wpconvert_quota | Full backend quota body (unknown future fields preserved) |
summary | quota, denials | Projected can_start, mode, consumes, download_available |
capabilities_available | quota | false on legacy backends without capabilities.conversion |
recommended_next | all tools | { tool, reason, retry_after_seconds? } — which MCP tool to call next |
next_action | convert success | String (unchanged) — human guidance for agents |
idempotency_key | convert | Omitted on preflight denial (no key generated) |
Status recommended_next rules:
queued, pipeline stages, or tool-layerprocessing→wpconvert_check_status(poll)done+ downloadable →wpconvert_download_resultdone+ preview-only / download locked →wpconvert_create_preview(never download); the reason nameswpconvert_plansfor unlockingdone+ guest (guest: true,remaining_previews) →wpconvert_create_preview, thenwpconvert_plansto buyfailed→wpconvert_explain_failure
Idempotency recovery
- Leave
idempotency_keyblank for a new intentional conversion. - If a prior
wpconvert_convert_foldercall timed out or returned an ambiguous network error, retry with the exactidempotency_keyfrom that call — do not omit it and do not invent a new one. - Do not reuse a key for changed files, options, or a deliberate new conversion.
- Preflight runs after path/plan validation but before key generation (when omitted), ZIP build, and submit — so blocked accounts never upload.
Preview-only / download locked
Free developer previews and guest previews are preview-only (Playground, no ZIP download). When download_available is false or preview_only is true, status and download tools recommend wpconvert_create_preview, wpconvert_plans or wpconvert_quota — not download retry.
Dependency pin
This package pins [email protected] exactly for shared capability helpers (resolveConvertPreflight, quota formatters).
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.