MCP Servers

模型上下文协议服务器、框架、SDK 和模板的综合目录。

F
Framer Design MCP Server
作者 @superprat

MCP server for designing web pages in Framer via the Framer Server API.

创建于 4/22/2026
更新于 about 4 hours ago
Repository documentation and setup instructions

framer-design-mcp-server

An MCP server that lets an LLM design web pages in a Framer project via the Framer Server API (currently in open beta).

Scoped to page-design operations — create pages, frames, text, components, styles, and code files; screenshot the result. CMS and publishing workflows are intentionally excluded (see "Out of scope" below).

Install

npm install
npm run build

Node.js version

framer-api uses the global WebSocket constructor, which is built in on Node.js ≥ 22. On Node 20 you must launch with --experimental-websocket.

# Node 22+
node dist/index.js

# Node 20 — flag required, else tools fail with "rr is not a constructor"
node --experimental-websocket dist/index.js

The Claude Desktop config in the next section includes the flag for Node 20 compatibility; remove it if you're on Node 22+.

Configure

The server reads a single-project configuration from environment variables:

| Variable | Required | Description | |---|---|---| | FRAMER_PROJECT_URL | yes | e.g. https://framer.com/projects/Sites--aabbccddeeff | | FRAMER_API_KEY | yes | Generate in Framer → Site Settings → General. The key is bound to this one project. | | FRAMER_LOG_LEVEL | no | error | warn | info | debug (default warn). Logs go to stderr. |

One server instance serves one project. Run multiple instances with different env files to target multiple projects.

Run

Add to an MCP client (e.g. Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "framer-design": {
      "command": "/absolute/path/to/node",
      "args": ["--experimental-websocket", "/absolute/path/to/framer-design-mcp-server/dist/index.js"],
      "env": {
        "FRAMER_PROJECT_URL": "https://framer.com/projects/Sites--aabbccddeeff",
        "FRAMER_API_KEY": "ap_..."
      }
    }
  }
}

Or inspect interactively:

FRAMER_PROJECT_URL=... FRAMER_API_KEY=... npm run inspect

Tool catalogue

27 tools prefixed framer_. All open a fresh Framer connection per call (via withConnection), retry transient SDK errors, and return structured JSON.

| Group | Tools | |---|---| | Inspection (read-only) | get_project_info, get_current_user, get_canvas_root, list_pages, get_node, get_node_children, get_node_parent, get_node_rect, find_nodes_by_type, find_nodes_by_attribute | | Pages | create_web_page, create_design_page | | Nodes | create_frame, create_text_node, create_component_node, add_component_instance, set_node_attributes, set_text, set_parent, clone_node, remove_node, add_svg | | Assets | upload_image, add_image, upload_file | | Styles | list_color_styles, create_color_style, list_text_styles, create_text_style, list_fonts | | Code | list_code_files, get_code_file, create_code_file, typecheck_code | | Visual | screenshot_node, export_svg |

Design-feedback loop

framer_screenshot_node returns PNG/JPEG as inline MCP image content — an agent can call it after every design edit to visually verify the result before continuing.

Out of scope

These Framer Server API surfaces are not exposed by this server:

  • CMS — getCollections, addItems, createCollection, field management
  • Publishing — publish, deploy, getChangedPaths, getChangeContributors
  • Redirects, localization

If you need them, a separate tools/cms.ts / tools/publishing.ts module can be added; all would share the existing withFramer wrapper.

Evaluation

See evals/framer-design-eval.xml for 10 Q/A pairs that validate this server against a seeded test project. The eval questions assume a fixture Framer project — read the comment at the top of the eval file for seed requirements.

References

快速设置
此服务器的安装指南

安装包 (如果需要)

npx @modelcontextprotocol/server-framer-design-mcp-server

Cursor 配置 (mcp.json)

{ "mcpServers": { "superprat-framer-design-mcp-server": { "command": "npx", "args": [ "superprat-framer-design-mcp-server" ] } } }