03. ์ํ โ Framelink MCP
์ํ 1: URL ๊ธฐ๋ฐ ์ปดํฌ๋ํธ ๋ณํ
ํ๋กฌํํธ
๋ค์ Figma ๋์์ธ์ React + Tailwind ์ปดํฌ๋ํธ๋ก ๋ง๋ค์ด์ค.
ํ์ผ์ src/components/PricingCard.tsx๋ก ์ ์ฅ.
<https://www.figma.com/design/abcXYZ/Design-System?node-id=42-128>
Plain Text
๋ณต์ฌ
MCP ํธ์ถ
get_figma_data(
fileKey="abcXYZ",
nodeId="42:128",
depth=4
)
Plain Text
๋ณต์ฌ
๋ฐํ ์์ (์์ฝ)
{
"name": "PricingCard",
"type": "FRAME",
"layout": { "direction": "column", "padding": 24, "gap": 16 },
"fills": [{ "color": "#FFFFFF" }],
"cornerRadius": 12,
"children": [
{ "type": "TEXT", "text": "Pro", "fontSize": 18, "fontWeight": 700 },
{ "type": "TEXT", "text": "$29/mo", "fontSize": 32, "fontWeight": 800 },
...
]
}
JSON
๋ณต์ฌ
๊ฒฐ๊ณผ ์ฝ๋
type PricingCardProps = {
plan: string
price: string
features: string[]
}
export function PricingCard({ plan, price, features }: PricingCardProps) {
return (
<div className="flex flex-col gap-4 rounded-xl bg-white p-6 shadow-md">
<p className="text-lg font-bold text-gray-900">{plan}</p>
<p className="text-3xl font-extrabold text-gray-900">{price}</p>
<ul className="flex flex-col gap-2">
{features.map(f => <li key={f} className="text-sm text-gray-600">{f}</li>)}
</ul>
</div>
)
}
TypeScript
๋ณต์ฌ
์ํ 2: ์ด๋ฏธ์ง/์์ด์ฝ ๋ค์ด๋ก๋
ํ๋กฌํํธ
๋ค์ Figma ๋
ธ๋์ ์์ด์ฝ๋ค์ SVG๋ก src/assets/icons์ ์ ์ฅํด์ค.
<https://www.figma.com/design/abcXYZ/Icons?node-id=10-1>
Plain Text
๋ณต์ฌ
MCP ํธ์ถ
download_figma_images(
fileKey="abcXYZ",
nodes=[
{ nodeId: "10:1", fileName: "search.svg" },
{ nodeId: "10:2", fileName: "user.svg" },
...
],
localPath: "src/assets/icons"
)
Plain Text
๋ณต์ฌ
๊ฒฐ๊ณผ
โข
src/assets/icons/search.svg
โข
src/assets/icons/user.svg
โข
...
์ํ 3: ํ์ด์ง ๋ ์ด์์ ๋ถ์
ํ๋กฌํํธ
์ด Figma ํ์ด์ง์ ๋ ์ด์์ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ๊ณ ,
Next.js App Router ํด๋ ๊ตฌ์กฐ๋ฅผ ์ ์ํด์ค. ์ฝ๋๋ ๋ง๋ค์ง ๋ง๊ณ ๊ตฌ์กฐ๋ง.
<https://www.figma.com/design/abcXYZ/Web?node-id=1-2>
Plain Text
๋ณต์ฌ
๊ฒฐ๊ณผ (์)
app/
โโโ layout.tsx # Header + Sidebar (๋ชจ๋ ํ์ด์ง ๊ณตํต)
โโโ page.tsx # ๋๋ฉ
โโโ dashboard/
โ โโโ page.tsx # ๋ฉ์ธ ๋์๋ณด๋
โ โโโ [id]/page.tsx # ์์ธ
โโโ settings/
โโโ page.tsx
Plain Text
๋ณต์ฌ
์ํ 4: ๋์์ธ ์์คํ ํ ํฐ ์ถ์ถ
ํ๋กฌํํธ
๋ค์ Figma ํ์ผ์ ์์/ํ์ดํฌ ์์คํ
์ ๋ถ์ํด์
Tailwind config์ theme.extend ํํ๋ก ๋ง๋ค์ด์ค.
<https://www.figma.com/design/abcXYZ/Tokens>
Plain Text
๋ณต์ฌ
๊ฒฐ๊ณผ
export default {
theme: {
extend: {
colors: {
brand: {
50: '#EFF6FF',
500: '#2563EB',
900: '#1E3A8A',
},
},
fontSize: {
h1: ['32px', { lineHeight: '40px', fontWeight: '700' }],
body: ['14px', { lineHeight: '20px' }],
},
},
},
}
JavaScript
๋ณต์ฌ
์ํ 5: ๋์์ธ ๊ฒํ ์์ฒญ
ํ๋กฌํํธ
์ด Figma ๋์์ธ์ด ์ ๊ทผ์ฑ(WCAG AA) ๊ด์ ์์ ๋ฌธ์ ๊ฐ ๋ ๋งํ ๋ถ๋ถ์ ์ฐพ์์ค.
๋๋น, ํฐํธ ํฌ๊ธฐ, ํฐ์น ํ๊ฒ ํฌ๊ธฐ ์์ฃผ๋ก.
<https://www.figma.com/design/abcXYZ/Mobile?node-id=5-10>
Plain Text
๋ณต์ฌ
ํ์ฉ
โข
MCP๊ฐ ๋
ธ๋ ํธ๋ฆฌ์์ ์์/ํฐํธ ํฌ๊ธฐ/๋
ธ๋ ํฌ๊ธฐ ์ถ์ถ
โข
LLM์ด WCAG ๊ธฐ์ค์ ๋น์ถ์ด ์๋ฐ ํญ๋ชฉ ๋ณด๊ณ
์ง๊ธ๊ณผ์ผ
์์ฑ
#figma-developer-mcp
https://www.figma.com/design/hdNt0fB7dYvAZEAwLbW2GG/%EC%A0%9C%EB%AA%A9-%EC%97%86%EC%9D%8C?node-id=1-2&t=TeMJyK8XD9niZx91-11
E:\ALOHA-CLASS\FIGMA-MCP\02.Figma
MCP\02.Framelink MCP\Sample\์ง๊ธ๊ณผ์ผ
์ด ๊ฒฝ๋ก์ index.html css/style.css js/script.js
์์ฑํด์ ์ฝ๋ ์์ฑํด์ค
Markdown
๋ณต์ฌ
๋ณด์
<!-- ์ข์ธก: ๋ก๊ทธ์ธ + ํ์๊ฐ์
์น์
-->
<!-- ์ฐ์ธก: ๋น ๋ฅธ ๋ฉ๋ด -->
์ข์ธก ์ฐ์ธก์ด ์๋๋ผ
์๋จ ํ๋จ์ผ๋ก ์์ ํด์ฃผ๊ณ
์๋จ์๋ ์ผ์ชฝ ๋ก๊ทธ์ธ ์ค๋ฅธ์ชฝ ํ์๊ฐ์
์น์
์ด์ผ
Markdown
๋ณต์ฌ





