MCP — Model Context Protocol — cho phép AI agent thực hiện các tool call runtime đến các dịch vụ bên ngoài. Figma cung cấp MCP server chính thức, và cộng đồng đã xây dựng thêm nhiều cái. Pitch: agent của bạn có thể hỏi Figma về dữ liệu thiết kế trực tiếp, theo yêu cầu, giữa cuộc trò chuyện. Không có bước xuất. Luôn luôn trực tiếp.
figmascope đặt cược kiến trúc ngược lại: xuất một lần, cung cấp bundle, không bao giờ kết nối lại. Đây là những lựa chọn thực sự khác nhau với các hệ quả khác nhau. Đây là những gì mỗi lựa chọn thực sự mất và nhận được.
Figma MCP server là gì
Model Context Protocol là chuẩn mở của Anthropic để kết nối AI agent với các công cụ bên ngoài qua server interface. Một MCP server hiển thị các công cụ có kiểu mà agent có thể gọi: "get_file," "get_node," "get_styles," v.v. Khi agent cần design context, nó gọi công cụ, MCP server gọi Figma API, và kết quả trở lại như context cho prompt hiện tại.
MCP server chính thức của Figma bao gồm đọc file, kiểm tra node, lấy component, và truy cập comment. Các MCP server cộng đồng (có nhiều cái trên GitHub) mở rộng điều này với các schema tùy chỉnh, các biến đổi bổ sung, hoặc phạm vi hẹp hơn được tối ưu hóa cho các quy trình agent cụ thể.
Để sử dụng bất kỳ Figma MCP server nào, bạn cấu hình nó trong agent client của bạn (Claude Desktop, Cursor, Continue, v.v.), cung cấp Figma PAT, và server chạy như một local process. Khi agent của bạn cần Figma context, nó gọi công cụ. Bạn không xuất bất cứ thứ gì một cách rõ ràng — agent lấy những gì nó cần khi cần.
Mô hình MCP trong thực tế
Một quy trình Figma được cung cấp bởi MCP điển hình trông như thế này: bạn mở Cursor, bắt đầu cuộc trò chuyện, nói "triển khai màn hình checkout từ file Figma này," và agent gọi get_file, lấy cây node, và có dữ liệu thiết kế trong context. Nếu bạn sau đó nói "designer đã cập nhật button token," agent có thể gọi lại và nhận dữ liệu mới.
Mô hình kết nối trực tiếp này là thực và hấp dẫn cho một số quy trình. Agent đang làm việc với dữ liệu hiện tại. Bạn không quản lý các artifact xuất. Không có bước thủ công giữa "designer đẩy thay đổi" và "agent có nó."
MCP thắng ở đâu
Dữ liệu trực tiếp, không có bước xuất. Agent lấy trạng thái hiện tại theo yêu cầu. Nếu thiết kế thay đổi mười phút trước, agent có thể thấy nó. figmascope yêu cầu xuất lại thủ công để nắm bắt thay đổi.
Khám phá thiết kế theo cuộc trò chuyện. "Màu của CTA button là gì?" "Bao nhiêu màn hình tham chiếu component này?" Với MCP, agent có thể trả lời những điều này bằng cách gọi Figma. Với bundle, câu trả lời chỉ tươi mới như lần xuất cuối cùng.
Chỉnh sửa Figma trực tiếp. Một số MCP server hiển thị các thao tác ghi — tạo node, cập nhật thuộc tính, đăng comment. Điều này chỉ có thể với kết nối trực tiếp. Bundle tĩnh không có đường dẫn ghi.
Không cần quy trình thủ công. Đối với developer đã sử dụng MCP-connected agent setup, không có bước xuất có nghĩa là ít thứ cần nhớ hơn. Quản lý context được ủy quyền cho agent.
MCP thua ở đâu
Mô hình kết nối trực tiếp có các chi phí kiến trúc dễ bị đánh giá thấp.
State bị ràng buộc với phiên. Các lời gọi MCP xảy ra trong context của một phiên trò chuyện. Dữ liệu agent lấy trong phiên A không có sẵn trong phiên B mà không cần lấy lại. Nếu bạn bắt đầu chat mới, agent bắt đầu từ đầu. Một bundle figmascope tồn tại qua các phiên, qua developer, và qua các công cụ — đó chỉ là các file.
Mờ đục với git. Không có artifact. Không có gì để commit. Context thiết kế đã cung cấp thông tin cho code của bạn không sống trong repository. Sáu tháng từ bây giờ, nếu bạn muốn hiểu thiết kế trông như thế nào khi một component được xây dựng, không có hồ sơ. Với bundle trong repo, bạn có lịch sử commit của design intent.
Yêu cầu kết nối. MCP cần server đang chạy, kết nối Figma API trực tiếp, và PAT có quyền truy cập. Mạng xuống, Figma API xuống, PAT hết hạn — agent không có context. Bundle hoạt động trên máy bay.
Retrieval phụ thuộc vào model. Những gì agent yêu cầu qua MCP phụ thuộc vào những gì nó quyết định yêu cầu. Nó có thể không lấy giá trị token. Nó có thể không lấy component inventory. Nó có thể chỉ yêu cầu subtree node mà nó nghĩ là cần, bỏ lỡ context không gian từ các node liền kề. Retrieval là xác suất, không phải xác định. figmascope lấy mọi thứ, mỗi lần, với schema cố định.
Khó kiểm tra và tái tạo hơn. "Agent của tôi đã xây dựng component này từ dữ liệu Figma này tại thời điểm này" không thể xác minh với MCP. Fetch là phù du. Với bundle, bạn có thể phát lại chính xác: cùng bundle, cùng agent, cùng prompt — output xác định. Điều này quan trọng cho việc debug, code review, và trách nhiệm release.
Áp lực cửa sổ context. Một lời gọi get_file ngây thơ trên file Figma phức tạp trả về một JSON tree khổng lồ. Các agent phải thực hiện các tool call có chọn lọc để ở trong ngân sách context. Điều này giới thiệu các heuristic và phán đoán có thể sai. figmascope xử lý trước cây thành IR có cấu trúc chỉ với những gì cần thiết, ở kích thước đã biết, bị chặn.
Mô hình bundle của figmascope: chụp một lần, cung cấp mãi mãi
figmascope xuất một .zip của các file đơn giản từ Figma REST API — không có plugin, không có server, chạy trong trình duyệt của bạn. Bundle chứa:
CONTEXT.md— thông số có thể đọc được bởi con người, có thể đọc được bởi agenttokens.json— design token có kiểu, cascading source: Figma variables → suy luận từ tần suất → không cóscreens/*.json— per-screen IR với ngữ nghĩa layout: stack, overlay, absolute, leaf;componentIdtrên INSTANCE node;stringRef.keytrên textscreens/*.png— ảnh chụp màn hình tham chiếu 2×components/inventory.json— chỉ mục component đầy đủstrings.json— tất cả nội dung văn bản, có khóa_meta.json— metadata xuất
Khi đã xuất, bundle là tự chứa và bất biến. Nó đi vào repo của bạn cùng với code nó mô tả. Bất kỳ agent, phiên, developer, hoặc CI job nào đều có thể đọc nó. Không cần kết nối với bất cứ thứ gì.
Diff có thể version: so sánh bundle như code
Đây là lập luận mạnh nhất của mô hình bundle. Vì output là JSON và Markdown có cấu trúc, bạn có thể diff nó.
Xuất bundle trước sprint thiết kế. Xuất bundle khác sau đó. Chạy diff trên tokens.json:
- "spacing.4": "16px"
+ "spacing.4": "14px"
Đó là thay đổi breaking trong thang spacing của bạn. Nó hiển thị, có thể xem xét, và có thể truy tìm đến một commit. Với MCP, cùng thay đổi xảy ra một cách thầm lặng — lần tiếp theo agent lấy, nó nhận giá trị mới, và không có hồ sơ nào rằng có gì đó đã thay đổi.
Bạn có thể chạy điều này như một PR gate: xuất bundle như một phần của design handoff, commit nó, yêu cầu designer và dev ký tắt vào diff trước khi triển khai bắt đầu. Đó là design-spec-as-code. MCP không có tương đương.
Lập luận về tính xác định
Cùng phiên bản file Figma + cùng bản xuất figmascope = cùng bundle. Mỗi lần. Schema IR là cố định. Logic nguồn token là xác định. Trích xuất khóa chuỗi dựa trên quy tắc.
Retrieval MCP không xác định. Agent quyết định những gì cần lấy. Các agent khác nhau, phát biểu prompt khác nhau, ngân sách context khác nhau — hành vi fetch khác nhau. Output phụ thuộc vào model.
Đối với production UI codegen, tính xác định quan trọng. Bạn muốn thông số tạo ra component có thể tái tạo. Bạn muốn có thể tái tạo component từ cùng đầu vào và nhận kết quả nhất quán. Bundle hỗ trợ điều này. Phiên MCP thì không.
So sánh
| Khía cạnh | Figma MCP | Bundle figmascope |
|---|---|---|
| Tươi mới dữ liệu | Luôn trực tiếp — lấy trạng thái Figma hiện tại | Snapshot — tươi mới như lần xuất cuối cùng |
| Yêu cầu bước xuất | Không | Có — một lần mỗi phiên bản thiết kế |
| Có thể version control | Không — không có artifact | Có — bundle là JSON + Markdown có thể diff |
| Tồn tại qua các phiên | Không — phải lấy lại mỗi phiên | Có — file tồn tại vô thời hạn |
| Hoạt động offline | Không | Có |
| Output xác định | Không — retrieval phụ thuộc vào model | Có — cùng đầu vào → cùng bundle luôn luôn |
| Áp lực cửa sổ context | Cao — JSON Figma thô lớn và không có cấu trúc | Thấp — IR đã được xử lý trước, kích thước bị chặn |
| Thao tác ghi trên Figma | Có (một số MCP server) | Không — xuất chỉ đọc |
| Thông số thiết kế trong lịch sử git | Không | Có — commit bundle, truy tìm lịch sử thiết kế |
| Yêu cầu thiết lập agent | Có — cấu hình MCP server mỗi agent client | Không — bất kỳ agent nào đọc file đều hoạt động |
| Khóa chuỗi i18n | Không có trong schema Figma MCP cơ bản | Có — stringRef.key trong IR + strings.json |
| IR không gian / layout | Cây node Figma thô (không có loại layout ngữ nghĩa) | IR có kiểu: stack / overlay / absolute / leaf |
| Nguồn token | Variables nếu được đặt; nếu không thì giá trị thô | Variables → suy luận từ tần suất → không có |
MCP tỏa sáng cho "chỉnh sửa Figma trực tiếp" — bundle tỏa sáng cho "xây dựng UI production"
Đây là tóm tắt trung thực. Nếu quy trình của bạn là khám phá thiết kế theo cuộc trò chuyện — "thay đổi component này," "chú thích màn hình này," "các color token trên frame này là gì" — kết nối trực tiếp của MCP là mô hình đúng. Agent là cộng tác viên trong quá trình thiết kế, và nó cần dữ liệu hiện tại để làm điều đó.
Nếu quy trình của bạn là xây dựng UI production từ thiết kế đã được hoàn thiện (hoặc gần hoàn thiện) — triển khai component, kết nối state, viết test — mô hình bundle tốt hơn. Bạn muốn thông số được neo trong repo của mình, có thể diff qua các vòng lặp thiết kế, có thể đọc bởi bất kỳ agent nào mà không cần cấu hình, và đủ xác định để xây dựng trên.
Hai mô hình bổ sung nhau. Sử dụng MCP khi thiết kế đang thay đổi và bạn đang lặp lại cộng tác. Xuất bundle figmascope khi thiết kế ổn định và bạn đang giao nó cho kỹ sư để triển khai. Bundle trở thành nguồn sự thật mà triển khai được xây dựng — có thể truy tìm, có thể xem xét, có thể tái tạo.