Figma Context MCP
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Vibo (vibodj.com) MCP — plan & manage event music: timeline, songs, ideas, questions, guests
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
VIBO_EMAIL, VIBO_PASSWORD, VIBO_ACCESS_TOKEN, VIBO_REFRESH_TOKEN, VIBO_UPLOAD_DIR, VIBO_SESSION_FILE, VIBO_API_URLค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"vibo": {
"command": "npx",
"args": [
"-y",
"vibo-mcp"
],
"env": {
"VIBO_EMAIL": "ใส่ค่าของคุณ",
"VIBO_PASSWORD": "ใส่ค่าของคุณ",
"VIBO_ACCESS_TOKEN": "ใส่ค่าของคุณ",
"VIBO_REFRESH_TOKEN": "ใส่ค่าของคุณ",
"VIBO_UPLOAD_DIR": "ใส่ค่าของคุณ",
"VIBO_SESSION_FILE": "ใส่ค่าของคุณ",
"VIBO_API_URL": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add vibo --env VIBO_EMAIL='ใส่ค่าของคุณ' --env VIBO_PASSWORD='ใส่ค่าของคุณ' --env VIBO_ACCESS_TOKEN='ใส่ค่าของคุณ' --env VIBO_REFRESH_TOKEN='ใส่ค่าของคุณ' --env VIBO_UPLOAD_DIR='ใส่ค่าของคุณ' --env VIBO_SESSION_FILE='ใส่ค่าของคุณ' --env VIBO_API_URL='ใส่ค่าของคุณ' -- npx -y vibo-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"vibo": {
"command": "npx",
"args": [
"-y",
"vibo-mcp"
],
"env": {
"VIBO_EMAIL": "ใส่ค่าของคุณ",
"VIBO_PASSWORD": "ใส่ค่าของคุณ",
"VIBO_ACCESS_TOKEN": "ใส่ค่าของคุณ",
"VIBO_REFRESH_TOKEN": "ใส่ค่าของคุณ",
"VIBO_UPLOAD_DIR": "ใส่ค่าของคุณ",
"VIBO_SESSION_FILE": "ใส่ค่าของคุณ",
"VIBO_API_URL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"vibo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"vibo-mcp"
],
"env": {
"VIBO_EMAIL": "ใส่ค่าของคุณ",
"VIBO_PASSWORD": "ใส่ค่าของคุณ",
"VIBO_ACCESS_TOKEN": "ใส่ค่าของคุณ",
"VIBO_REFRESH_TOKEN": "ใส่ค่าของคุณ",
"VIBO_UPLOAD_DIR": "ใส่ค่าของคุณ",
"VIBO_SESSION_FILE": "ใส่ค่าของคุณ",
"VIBO_API_URL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
VIBO_EMAIL envVIBO_UPLOAD_DIR envVIBO_SESSION_FILE envVIBO_API_URL envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub chrischall ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: VIBO_PASSWORD, VIBO_ACCESS_TOKEN, VIBO_REFRESH_TOKEN
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (2.6.0) เข้า registry วันนี้
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Figma Context MCP, Claude Real Video, Figma MCP Server
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Let any LLM watch a video locally — and search everything it has ever watched.
server ทางการของ Figma ส่งข้อมูลงานออกแบบให้ AI อ่าน เพื่อเปลี่ยนแบบเป็นโค้ดหรืออธิบายแบบได้ตรงขึ้น ต่อผ่านคลาวด์ของ Figma
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
MCP server for Vibo (vibodj.com) — plan your event music as a host/couple. Browse your events and timeline, see and add song requests, like songs, manage notifications, and export selections to Spotify/Apple Music, all via natural language.
Developed and maintained by AI (Claude Code). Use at your own discretion.
Unofficial — not affiliated with Vibo. Works only with your own account/data.
{
"mcpServers": { "vibo": { "command": "npx", "args": ["-y", "vibo-mcp"], "env": { "VIBO_EMAIL": "you@example.com", "VIBO_PASSWORD": "your_password" } } } }
Choose one method:
| Method | Env vars | When |
|---|---|---|
| Email + password (recommended) | VIBO_EMAIL, VIBO_PASSWORD | You sign in to Vibo with an email/password. |
| Captured token | VIBO_ACCESS_TOKEN (+ VIBO_REFRESH_TOKEN) | Your account uses Apple/Google/Facebook sign-in (no password). Capture x-token/x-refresh-token from a signed-in web.vibodj.com session. |
| Browser capture (SSO) | run vibo_capture_session | With the ContextMint Bridge browser extension installed and signed into web.vibodj.com, capture the token automatically (saved to ~/.vibo-mcp/session.json). |
The server boots without credentials; the config error only surfaces on the first tool call.
vibo_capture_session reads your signed-in tab through the ContextMint Bridge browser extension. Install it from github.com/nullnet-app/contextmint-bridge/releases:
chrome://extensions (Developer mode → Load unpacked).Approve the pair code the extension shows on first use.
ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README (https://github.com/chrischall/fetchproxy#extension) points to it. Its source is public at https://github.com/nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome- .zip.sha256).
vibo_set_profile_photo and photo/file answers to vibo_answer_question take each file one of three ways:
VIBO_UPLOAD_DIR, default ~/Downloads/vibo-mcp. Copy a file there before asking Claude to upload it. Hidden files and symlinks that lead outside the directory are refused. For a photo, the path you pass must be the file itself: any symlink is refused, even one pointing inside the upload directory. On a hosted deployment a path is refused, with a pointer to the routes below.fileData, or images/files), for small files on any deployment. It is decoded strictly: truncated, mis-padded or otherwise malformed base64 is refused rather than sent as a corrupt file. A data: ;base64, prefix and line breaks are fine.vibo_upload_slots with the filenames, PUT each file to the signed URL it returns (its curl field is a ready command), then pass the blobKey (blobKey, or imageBlobKeys/fileBlobKeys). The stored copy is deleted only after Vibo accepts the upload, and the result reports it in blobCleanup. If the upload fails, the copy is kept so you can retry.Every route is capped at 25 MiB. Photos must be real images (jpg/png/gif/webp/heic) by any route: the type must be an image type *and* the bytes must match it, so a renamed text file is refused. The confirmation preview shows each file's source, name, type, size and SHA-256. If the bytes change before you confirm, such as a different file at the same path or a re-uploaded slot, the confirmation is refused.
vibo_create_section adds a section and can place it (afterSectionId or a 0-based position). The web app only appends new sections to the end. Visibility is host (default, "Me and DJ") or public (guests too).vibo_delete_section previews the section's name, its song count and its answered questions before deleting. It refuses the DJ's do-not-play list (dontPlay) and timeline dividers (headline) unless you pass force: true.vibo_reorder_sections moves one or more sections to directly after another section, or to the start. vibo_reorder_songs does the same for songs within a section.Vibo's limits, checked before anything is sent:
| What | Limit |
|---|---|
| Section name | 45 characters (the web app's limit) |
Song comment (vibo_update_song) | 90 characters (an emoji counts as 2) |
A host can only do some things when the DJ's settings allow it: adding or reordering sections (event settings), or reordering one section's songs (that section's "hosts can order songs"). Vibo turns "hosts can order songs" off for every section a host creates, and only the DJ can turn it on. When a setting blocks you, the tool says which one instead of returning Vibo's bare "Action is not allowed for user".
Vibo doesn't store a section description set by a host, so vibo_create_section takes a note (for the DJ) instead.
Every write (adding or removing songs, comments, invites, exports, answers, uploads, …) is confirmed before anything is sent to Vibo.
| variable | default | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | What a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). ask-user: two steps — the first call does nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. auto: the same two steps, but the model may use the token after reviewing the preview itself. refuse: writes are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt, unless MCP_CONFIRM_ELICITATION=off. An unrecognised value is treated as refuse. |
MCP_CONFIRM_ELICITATION | on | off never shows a confirmation prompt, so every client gets the MCP_CONFIRM_MODE behaviour. Set it for a client that says it can show prompts but never does (the write hangs — opencode 2.0.x). Any other value is treated as on, with a warning on stderr. |
MCP_CONFIRM_TTL_SECONDS | 600 | How long a token stays valid. |
MCP_CONFIRM_SECRET | random per process | Signing key; set it only if tokens must survive a server restart. |
A token works once, only for the tool and arguments it was previewed with: a changed argument or a reused token is refused and nothing is sent.
Vibo's app talks to a GraphQL API at https://api.vibodj.com/v2/graphql, authenticating with an x-token header obtained from an email/password signIn. This server reuses that same flow server-side (no browser needed) and wraps the host/couple operations as MCP tools. Every mutating tool asks you to confirm first: a client that can show a confirmation prompt (Claude Code) shows one (unless MCP_CONFIRM_ELICITATION=off); otherwise the first call makes no network call and returns a preview plus a confirmToken, and only a repeat call with that token makes the change (see Confirmations).
See docs/VIBO-API.md for the reverse-engineered API notes and skills/vibo-mcp/SKILL.md for the full tool list.
2.6.0 — upload previews. In a confirmation preview, willSend.photo (vibo_set_profile_photo) and each willSend.uploads[ ] (question answers) are now objects, not strings: {source, path?, blobKey?, filename, mimeType, sizeBytes, sha256}, where source is path, inline or blob. They used to be the path, or the string "(inline bytes)". A caller that displayed the old string should show filename (and path when present). The sha256 is what the confirm token is bound to.
npm install
npm run build # tsc + esbuild bundle → dist/ npm test # vitest
MIT