Reference
The Deframer MCP server. For any AI tool.
Any app that supports remote MCP servers with OAuth sign-in can use Deframer. Add the address below, sign in on deframer.co when the app asks, and ask it to convert your Framer site.
Connect
One address.
- In your app's MCP settings, add a remote (HTTP) server named deframer at
https://deframer.co/mcp. Leave headers and keys empty. - The app finds Deframer's sign-in by itself and opens deframer.co. Sign in and choose Allow.
- Ask it to convert your published Framer site.
Step-by-step for Claude, Claude Code, Cursor, VS Code (GitHub Copilot), Windsurf, Codex and Gemini CLI.
{
"mcpServers": {
"deframer": {
"url": "https://deframer.co/mcp"
}
}
}
Protocol
How it connects.
| Server | https://deframer.co/mcp |
| Transport | Streamable HTTP: one JSON-RPC message per POST, answered with JSON. No server-sent stream or session (GET answers 405). |
| Protocol versions | 2025-06-18, 2025-03-26 and 2024-11-05. |
| Authorization | OAuth 2.1 with PKCE (S256). A request without a token gets 401 with WWW-Authenticate: Bearer resource_metadata="https://deframer.co/.well-known/oauth-protected-resource/mcp". |
| Discovery | Protected resource metadata (RFC 9728) and authorization server metadata (RFC 8414). |
| Client registration | Dynamic (RFC 7591), public (none) or confidential (client_secret_post, client_secret_basic). Callbacks that can register: Claude's and ChatGPT's own, https://vscode.dev/redirect, loopback addresses on any port (http://localhost, 127.0.0.1, [::1]) and an app's private-use scheme (such as cursor://). Others are left out of the registration. |
| Scopes | account (read the account) and convert (check sites, start and follow conversions). No scope can unlock, download or pay. |
| Tokens | Access tokens are short-lived and refreshed with a rotating refresh token. Revoke any connection in Dashboard → Connected apps. |
Tools
Four tools. Annotated for your app.
| Tool | What it does | Parameters |
|---|---|---|
get_accountRead only | Your account's email, credit balance, and the ownership tag to paste into your Framer site. | None |
check_siteRead only | Whether a published site is a Framer site Deframer can convert, and whether it carries your ownership tag. | url (string, required): The published site's address: https://example.framer.website or its own domain. |
start_conversionWrite, not destructive | Starts a free conversion. Returns the conversion job: its id, status and stage. | url (string, required): The published site's address.framework (string): next (default), start, astro, react-router, vite, nuxt or html.includeAssets (boolean): true puts images, fonts and videos in the project; false (default) keeps them on Framer's CDN. |
get_conversionRead only | A conversion's stage, and when it's done, the deframer.co page where you preview and download it. | id (string, required): The conversion job's id. |
- A tool's failure comes back as its result with
isErrorand a message written for the user, such as a site that isn't published. - Every tool goes through Deframer's client API with the user's token: the same rate limits and ownership rules as the website.
- Questions or a client that won't connect: contact us with the app's name and version.