Connects Claude and other MCP clients to MarkItUp's AI image generation API. Exposes five tools: check your credit balance, generate three marketing-visual variations from a screenshot (with templates like glassmorphic, bold_marketing, or dark_professional), regenerate a single variation, outpaint an image to a new aspect ratio, and remove backgrounds via Photoroom's HD model. Each generation or transformation costs one credit. You pass in either a public URL or base64-encoded image, pick a template and aspect ratio, and get back polished visuals with marketing copy. Useful when you're automating screenshot workflows, building landing pages, or need programmatic access to annotated product images without leaving your editor.
MCP (Model Context Protocol) server for MarkItUp — AI-powered image annotation and marketing-visual generation. Lets Claude Code, Claude Desktop, Cursor, ChatGPT-with-MCP, and other MCP-compatible clients call MarkItUp directly.
Five tools available: markitup_credit_balance, markitup_generate, markitup_regen, markitup_extend, markitup_remove_background.
npx doesn't require a local Node.js if your MCP client bundles one).Add to your MCP config (~/.claude/mcp.json or project-scoped .mcp.json):
{
"mcpServers": {
"markitup": {
"command": "npx",
"args": ["-y", "markitup-mcp-server"],
"env": {
"MARKITUP_API_KEY": "mk_live_..."
}
}
}
}
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"markitup": {
"command": "npx",
"args": ["-y", "markitup-mcp-server"],
"env": {
"MARKITUP_API_KEY": "mk_live_..."
}
}
}
}
Cursor uses the same JSON shape. Settings → MCP → Add Server:
{
"mcpServers": {
"markitup": {
"command": "npx",
"args": ["-y", "markitup-mcp-server"],
"env": { "MARKITUP_API_KEY": "mk_live_..." }
}
}
}
markitup_credit_balanceReturns the current credit balance and subscription status.
No arguments. Use it to verify your API key works and to check credits before calling generation tools.
markitup_generateGenerates 3 polished marketing-visual variations from a screenshot. Costs 1 credit.
| Argument | Type | Required | Description |
|---|---|---|---|
description | string | yes | What the image shows and what to highlight |
template_id | string | yes | One of glassmorphic, clean_minimal, bold_marketing, dark_professional, documentation (and more) |
image_url | string | one-of | Public HTTPS URL of the source image |
image_base64 | string | one-of | Base64-encoded image bytes (no data: prefix) |
image_mime_type | string | no | MIME type when supplying image_base64. Default: image/png |
aspect_ratio | string | no | One of 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 |
image_size | string | no | 1K, 2K, or 4K |
Returns: the marketing copy (headline, sub-headline) plus 3 generated image variations as base64 image content blocks. The full structured response is also available under structuredContent.
Example prompt (in Claude Code):
Use markitup_generate with the screenshot at https://example.com/dashboard.png — highlight the export button and pitch it for a marketing landing page using the bold_marketing template.
markitup_regenRegenerate one variation from a previous markitup_generate call. Costs 1 credit by default (charge_credit: false to skip).
The LLM must pass back the text_analysis object from the previous generate's structuredContent.text so the regenerated visual stays on-brand with the same headline / sub-headline. variation_index selects which slot (0–2).
markitup_extendAI outpaint — extend an image to a larger canvas / different aspect ratio. Costs 1 credit.
| Argument | Type | Required | Description |
|---|---|---|---|
image_url / image_base64 | string | one-of | Source image |
aspect_ratio | string | yes | Target ratio (16:9, 9:16, etc.) |
target_width / target_height | number | yes | Output pixel dimensions |
image_size | string | no | 1K, 2K, or 4K |
markitup_remove_backgroundRemove the background from an image via Photoroom's HD model. Returns a transparent PNG. Costs 1 credit (free for active Pro/Power subscribers).
| Argument | Type | Required | Description |
|---|---|---|---|
image_url / image_base64 | string | one-of | Source image |
| Var | Required | Description |
|---|---|---|
MARKITUP_API_KEY | yes | API key from your MarkItUp dashboard |
MARKITUP_API_BASE | no | Override the API base URL. Default: https://markitup.app/api/v1. Useful for testing against staging. |
git clone https://github.com/markitup/mcp-server.git
cd mcp-server
npm install
npm run build
# Point your MCP client config at the local build:
{
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": { "MARKITUP_API_KEY": "mk_test_..." }
}
MARKITUP_API_KEY to source control.The server surfaces clean human-readable errors for the common cases:
Invalid or missing MARKITUP_API_KEY — set or rotate the key.Out of MarkItUp credits — top up at https://markitup.app/credits.Rate limit exceeded — wait briefly and retry.MIT
MARKITUP_API_KEY*secretAPI key minted at https://markitup.app/dashboard/. Required.
MARKITUP_API_BASEOverride the API base URL. Default: https://markitup.app/api/v1