April 2026
How to use MCP image generation in Claude Desktop
Claude Desktop reads images. It does not generate them. With one config edit and a restart, AgentFramer fills the gap and Claude can produce stills, video, and voiceover without leaving the chat.
What you are wiring up
Claude Desktop speaks the Model Context Protocol. Any compliant server can plug in and expose tools the model can call inline. AgentFramer is a hosted, URL-based MCP server, so there is no daemon to run and no Node binary to install. After setup, Claude gains a handful of tools: generate_image, generate_video, generate_audio, get_generation, get_credits, list_recent_generations, list_workspaces, and switch_workspace. The whole set is documented in the MCP tools reference.
Step 1: get your MCP URL or sign in with OAuth
You have two ways to authenticate. The fastest is the workspace URL: sign up at agentframer.com, open the dashboard, and copy the MCP URL. The token is embedded in the path, so the URL itself is the credential, treat it like one.
The second option is OAuth. Claude Desktop now supports OAuth discovery for remote MCP servers: point it at https://agentframer.com/api/mcp with no token, and on first connection Claude opens a browser window, you sign in, pick a workspace, and Claude Desktop stores the resulting token in its own keychain entry. Use OAuth if you do not want a long-lived token sat inside a JSON file, or if you expect to rotate workspaces often.
Step 2: find the config file for your OS
Claude Desktop reads MCP servers from a single JSON file. Quit the app fully before editing, otherwise it will overwrite your changes on exit.
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
If the file does not exist yet, create it. The folder will already be there once you have launched Claude Desktop at least once. On Windows you can paste the path straight into Explorer's address bar.
Step 3: write the config
Here is a complete config showing AgentFramer alongside two other servers. The shape matters more than the contents, AgentFramer is happy to coexist with any other stdio or URL-based MCP server you already use.
{
"mcpServers": {
"agentframer": {
"url": "https://agentframer.com/api/mcp/wsk_live_8a2c...your-token-here"
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/you/Projects"
]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."
}
}
}
}For the OAuth flow, drop the token segment and let Claude Desktop handle discovery:
{
"mcpServers": {
"agentframer": {
"url": "https://agentframer.com/api/mcp"
}
}
}Save the file, then fully quit Claude Desktop. On macOS that means Cmd+Q or right-click the dock icon and pick Quit, closing the window is not enough. On Windows, right-click the tray icon and pick Exit. Relaunch the app.
Step 4: confirm the connection
Open a new chat. The plug icon below the message input now lists connected MCP servers. Click it and you should see "agentframer" with a green dot and the eight tools listed underneath. If you used OAuth, the first click triggers the browser flow, you authenticate, and the tools appear once Claude Desktop receives the token.
A quick smoke test: ask Claude how many credits you have. It should call get_credits and return a number. If you see the tool fire and return a value, you are wired up correctly.
Step 5: a real prompt sequence
The pattern that gets the best results is generate, verify, re-prompt. Try this verbatim:
"Generate a 1200x630 OG image for a blog post titled 'Async media pipelines'. Black background, single thin orange line forming an abstract waveform across the middle, small white serif title bottom left. Render it, then look at the result and tell me where it misses."
Claude calls generate_image, polls get_generation until the job completes, displays the image inline, and because you asked for a critique it actually reads the image back as input. From there: "Tighten the waveform amplitude and move the title up 40px" produces a follow-up generation that inherits the prompt context. For longer-running jobs like video, Claude returns the generation id and you can ask it to check back later. More patterns are listed in the tool call patterns guide.
Working across multiple workspaces
If you keep separate workspaces for client work, personal projects, and a team account, you do not need three config entries. Ask Claude to call list_workspaces, then switch_workspace with the id you want. The switch is session-scoped, so subsequent generations bill against the new workspace until you switch again or restart the app. This keeps credits, asset libraries, and team permissions cleanly separated without juggling tokens.
Troubleshooting
Most setup issues fall into four buckets, and they look almost identical from the chat side: the plug icon shows nothing, or shows AgentFramer with a red dot.
- Typo in the URL. The token is part of the path, a single missing character means a 404. Copy the URL from the dashboard with the copy button rather than selecting it by hand.
- Partial restart. Closing the window does not unload the MCP runtime. Quit fully, then relaunch.
- JSON syntax errors. Trailing commas after the last entry break the parse. Run the file through a linter or paste it into a JSON validator before saving.
- Wrong path for the OS. Linux users in particular often try the macOS path first. Double check against the list above.
When in doubt, read the logs. Claude Desktop writes per-server MCP logs to a known location:
- macOS:
~/Library/Logs/Claude/mcp-server-agentframer.log - Windows:
%APPDATA%\Claude\Logs\mcp-server-agentframer.log
A healthy startup looks like this:
[info] Initializing server "agentframer"
[info] Connecting to https://agentframer.com/api/mcp/...
[info] Server "agentframer" connected, capabilities: tools
[info] Discovered 8 tools: generate_image, generate_video,
generate_audio, get_generation, get_credits,
list_recent_generations, list_workspaces, switch_workspace
[info] Server "agentframer" readyA 401 in the log means the token is wrong or revoked. A 404 means the URL is malformed. ECONNREFUSED or DNS errors point at a corporate proxy or VPN intercepting the request. You can also enable Developer mode from the Help menu to expose MCP traffic in the devtools console. The full troubleshooting checklist lives in the MCP help section.
When Claude Desktop is the wrong client
Claude Desktop is great for ideation, one-off assets, and visual iteration where you want to see the result and react to it. It is the wrong client for two scenarios.
If you are working inside a repo, Cursor and Claude Code understand your file tree, can write generated assets straight to public/, and can wire image paths into JSX without you copy-pasting URLs. The same MCP URL works there, the difference is context, the IDE clients see your code and can act on it.
If you are running a batch, say two hundred product shots from a CSV, or generating thumbnails on every CMS publish, drive AgentFramer programmatically instead. The REST API and SDK skip the chat layer entirely, support concurrency, and let you handle retries and storage on your own terms. Pricing for both paths is the same per generation, see the pricing page.
You are done
Two minutes of config, one full restart, and Claude Desktop turns into a media workstation. The chat that used to read screenshots can now produce them, iterate on them, and check your credit balance before the next batch. Open a new chat, ask for an image, and watch the plug icon do its job.