ASCII Magic runs an MCP server. Point any MCP client at one URL and your agent can turn images into ASCII art, halftone, LEGO, voxel and 100+ other styles, without leaving the conversation. There is no API key and no SDK to wire up.
https://www.ascii-magic.com/mcp
That is the whole configuration. The server supports OAuth with dynamic client registration, so your client registers itself and asks you to sign in. You sign in with the same ASCII Magic account you use on the site.
Anyone with an ASCII Magic account. You do not need Pro to connect.
Your plan is read on every call, so upgrading takes effect immediately with no reconnection. Asking for a Pro style on a free account returns a clear lock message rather than quietly rendering something else.
claude mcp add --transport http ascii-magic https://www.ascii-magic.com/mcp
Then run claude, type /mcp inside it, pick
ascii-magic and choose Authenticate. The server is registered to the folder you
ran the add command in, so start Claude Code from that same folder.
Settings, then Connectors, then Add custom connector. Paste the URL and sign in when prompted. The connector appears in both the desktop app and the web app.
Settings, then MCP, then Add new MCP server. Or edit
~/.cursor/mcp.json directly:
{
"mcpServers": {
"ascii-magic": {
"url": "https://www.ascii-magic.com/mcp"
}
}
}
Restart Cursor and approve the sign-in prompt.
Any client that speaks streamable HTTP and OAuth works the same way: give it the URL. That includes VS Code, Windsurf and Zed.
Seven tools. You never call them by name, you just ask for what you want and the agent picks.
The server runs in the cloud and cannot see your disk, so a path like
~/Desktop/photo.jpg will never work. Pass an http or
https image URL. For a file on your machine the agent uses
create_upload and sends the bytes over your shell, which means local files
work in Claude Code and not in Claude Desktop, claude.ai or Cursor. Those clients have no
shell to run the upload with, and MCP gives a client no way to hand a file to a server. It is
a limit of the protocol, not something missing here.
The renderer sleeps when nobody is using it. The first request can take around 20 seconds while it wakes up. Everything after that is quick.
A finished render comes back as a link that is good for 24 hours. Uploaded source images are deleted within a day and are readable only from inside the renderer, never publicly.
A recipe code renders as encoded, with none of the automatic dressing applied. That is the point: it is how you get the same result twice, or hand a look to someone else.
Plain language works. Some examples:
https://example.com/photo.jpgIf a render is not quite right, ask for a different variant. Most styles carry several curated looks.
Images you send are used to produce your render and nothing else. Uploaded sources expire within a day, finished renders within 24 hours. We do not train on your images. The full detail is in the privacy policy.
list_styles to see what your account can render, or
upgrade.