magic-mcp
21st-dev/magic-mcp加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
产品经理把 Figma 设计稿交给 AI 编码助手,助手十分钟产出一堆能跑的 React 组件——按钮是方的、间距全靠猜、颜色完全不在设计系统里。这不是模型不够聪明,而是模型手里根本没有设计系统的组件库。21st-dev/magic-mcp 解决的正是这个断点。

项目背景
这是 21st.dev 团队的 TypeScript 项目(ISC 协议,约 6300 star、509 fork),最初定位是 Magic MCP:为 Cursor、Claude Code、Windsurf 等 AI 编码助手提供上万套 React/Tailwind 组件的检索与界面生成能力。但仓库现状已转折:README 明确写着「Magic MCP 已并入 21st MCP」,原 magic.21st.dev 后端被统一端点取代,旧 API Key 全部作废。这个仓库现在只作为兼容代理层保留,让历史上写进无数 agent 配置的旧安装命令仍然可用。
把它想成坐在 AI 助手与设计系统之间的翻译官。真正的组件库和生成能力都在 21st.dev 的云端 SaaS 里,而这个仓库只做两件事:把标准输入上的 JSON-RPC 消息转成 HTTP 请求转发给统一端点,再把响应写回标准输出。因此它更接近「反向代理 + 协议适配器」,而不是可独立运行的组件数据库。
代码层面印证了这一点:src/index.ts 只有一个文件,用 Node 的 readline 逐行读取输入,串行队列保证初始化握手先落地,把会话标识头回传以维持能力协商,并同时处理 JSON 与事件流两种响应格式。
API_KEY=xxx、--API_KEY=xxx、/API_KEY:xxx(Windows 风格)、-API_KEY xxx(分离参数),另支持三个环境变量名。21st_magic_component_builder、21st_magic_component_inspiration、21st_magic_component_refiner、logo_search 等旧名并做翻译,新名则是 generate、get_inspiration、search_logo。服务端实际能力远超这四个:目录检索、付费代码获取、书签、团队库、界面生成变体等。推荐路径是执行 npx @21st-dev/cli@latest init --client cursor(或 claude、vscode、windsurf、codex),也可在 MCP 配置中直接写远端地址与 x-api-key 请求头,密钥从 21st.dev/mcp 获取。老配置依然有效,但转发的是同一个服务端。
仓库提供了 Dockerfile(基于 node 22 alpine 镜像,安装依赖、编译 TypeScript、启动产物),但那只是给托管平台用的构建说明,真正的运行形态仍是「本地 npm 包 + 远端 SaaS」。
第一,本地没有任何组件数据,所有检索与生成都依赖远端服务,仓库的「可用性」与 21st.dev 的商业存续强绑定——开源的是壳,不是能力。第二,密钥必须外传给第三方 SaaS,这对处理内部设计系统的团队是实打实的数据边界问题。第三,生成类工具属于托管 AI 能力,需要账号开通并消耗额度,未开通时调用会返回订阅缺失错误,README 明确提示不要重试。第四,作为代理层,它无法离线工作,也没有单元测试与质量门禁,代码质量依赖单人维护。
magic-mcp 标记了 MCP 生态的转折点——协议标准化之后,竞争焦点从「谁实现协议」转向「谁掌握后端数据与生成能力」。当所有编辑器都支持 MCP,插件本身几乎不再构成壁垒,组件库、生成模型、团队资产才是护城河。它的兼容代理层设计同样值得学习:为了不打断存量用户的自动化流程,宁可保留一个几百行的转发器,也不强迫迁移。这正是大规模开发者工具演进时应有的克制。