Figma Context MCP
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Any social-video URL → transcript, metadata, frames, OCR, summary, search, Q&A. MCP server + x402.
使っているAIアプリを選んで、設定をコピーしてください。
チェック 5/5 合格 · 質問内容は提供元のサーバー(framefetch.net)を通ります · ✓ コマンド確認済み 2026年11月13日
まず:どの AI を使っていますか?
使っているアプリを選ぶと、下に手順が表示されます。
Claude につなげます · 約 2 分
キー不要、インストール不要 · claude.ai かデスクトップアプリで一度設定すれば、チャットで使えます · 無料アカウントは 1 つまで · Team/Enterprise はオーナー(Owner)が追加
CustomizeConnectors
ここからコピーして Claude の同じ名前の欄に貼り付け、Continue を押します
Framefetchhttps://framefetch.net/mcpClaude が検出したサインイン設定の画面で Continue を押す · Authentication は作者の説明どおり(Sign in now・Sign in when needed・No sign in)を選び Add を押します
+ConnectorsFramefetch
Framefetch を使って、私に何ができるか教えて、1 つやってみせて✓ Claude が Framefetch を使っていると言うか、回答に Framefetch のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
ChatGPT との接続はプランしだい
フル MCP:Web 版 ChatGPT の Business・Enterprise・Edu · Pro:読み取り/取得の権限で接続、データを変えるツールは使えないことがあります · Plus:公式ドキュメントで未確認。プラグイン画面にカスタム MCP を追加する項目があれば試せます · Web のみ
Plugins+Add custom MCP server
名前を入れ、Connection にアドレスを貼り付け、注意事項にチェックして Create as a plugin を押します
Framefetchhttps://framefetch.net/mcp新しいチャットを開き、入力前にプラグインの一覧から Framefetch を選びます
Framefetch を使って、私に何ができるか教えて、1 つやってみせて✓ ChatGPT が Framefetch を使っていると言うか、回答に Framefetch のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に OpenAI のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Claude Code につなげます · 約 2 分
キー不要、インストール不要
Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く
claude mcp add --transport http --scope user framefetch https://framefetch.net/mcpFramefetch が一覧にあり、接続済みと表示されれば OK です
Framefetch を使って、私に何ができるか教えて、1 つやってみせて✓ Claude Code が Framefetch を使っていると言うか、回答に Framefetch のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Cursor につなげます · 約 2 分
キー不要、インストール不要
Framefetch を使って、私に何ができるか教えて、1 つやってみせて✓ Cursor が Framefetch を使っていると言うか、回答に Framefetch のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
VS Code につなげます · 約 2 分
キー不要、インストール不要
Framefetch を使って、私に何ができるか教えて、1 つやってみせて✓ VS Code が Framefetch を使っていると言うか、回答に Framefetch のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください
Web 経由でつなぐアプリ用のアドレス
https://framefetch.net/mcpJSON 設定は下の「開発者向け」にあります
Claude Code
claude mcp add --transport http --scope user framefetch https://framefetch.net/mcpCursor (~/.cursor/mcp.json)
{
"mcpServers": {
"framefetch": {
"url": "https://framefetch.net/mcp"
}
}
}VS Code (mcp.json)
{
"servers": {
"framefetch": {
"type": "http",
"url": "https://framefetch.net/mcp"
}
}
}この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
インターネット経由でつなげるアプリ
ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
ツールの名前と説明は、サーバーが2026年11月10日に返したそのままの内容です。書いたのは作者で、私たちではありません。プレーンテキストとして表示しています。
framefetch_extractExtract data from ONE public social-video URL (YouTube incl. Shorts, TikTok, Instagram Reels): metadata/insights/transcript/frames/digest/comments/etc — see `fields`. When NOT to use: non-video pages, private/login-walled content, or bulk crawling (one URL per call). Returns one
framefetch_platform_capabilitiesJSON matrix of data types (metadata, insights, transcript, frames, comments) per platform — YouTube (+Shorts), TikTok, Instagram Reels. Call before framefetch_extract to confirm support. No input.
framefetch_searchSearch YouTube by keyword (yt-dlp, no login). Returns up to `limit` hits: url/title/uploader/durationSec/uploadDate(often null)/thumbnail/views. YouTube only — use framefetch_extract on a hit's url for transcript/frames/etc. Billed ~$0.002/call (metadata-tier), regardless of `lim
framefetch_accountCheck this account's credit balance/usage. Read-only — never charges; works at zero balance (unlike framefetch_extract). Purpose: check balance before expensive framefetch_extract calls — at session start, periodically, or after a 402. When NOT to use: before every single framefe
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月13日にチェック
質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。
まだレビューはありません
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック5項目のうち5項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は8 日前、最新バージョン(1.9.1)がレジストリに届いたのは4 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URL で接続するので、リモート MCP を受け付けるアプリでも使えます。例:Web 版 ChatGPT(Business 以上はフル MCP、Pro は読み取りのみ)。
同じカテゴリには:Figma Context MCP, AutoClip, Next AI Draw.io
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
draw.io diagrams your AI agent draws on a live browser canvas that you can also edit by hand
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
FrameFetch
Any social-video URL → answers, transcript, metadata, insights, frames & on-screen text (OCR).
Agent-first video data API + MCP server. Pay per call, or with x402 (USDC) — no account.
FrameFetch turns one YouTube, YouTube Shorts, TikTok, or Instagram Reels video URL into a single JSON response: a direct answer to a question about the video, metadata, engagement insights, a transcript (captions or Whisper), an LLM digest (text or spoken mp3), structured JSON (chapters/entities/products/claims), comments + sentiment, parametrically-sampled frames (every Nth / 1-per-second / a time range, at any width), and the on-screen text burned into those frames (OCR — captions, price tags, signage). Plus keyword search when you don't have a URL yet, and batch for up to 10 URLs in one call. Built API-first and MCP-first for AI agents.
This repo is the open-source client + docs. The service itself runs at [framefetch.net](https://framefetch.net) — you bring a free API key (or pay per call with x402); the backend stays hosted.
An LLM can't watch a video. To reason about one it needs the video turned into text and images first — an answer, a transcript, metadata, a few frames. FrameFetch returns all of that from a URL, across six platforms, through one schema.
npm install framefetch
Node 18+ (uses built-in fetch). Get a free key: framefetch.net.
Version note. This repo is at 0.5.0. The newest version currently on npm is 0.3.0 —
npm install framefetchstill gives you that one, and it has onlyextract/metadata/transcript/frames/platforms/status/demo/createKey. Everything else documented below is live on the API today and available from this repo; from npm 0.3.0 you can reach the same data throughextract({ fields: [...] }).
A direct question about a video returns a short, grounded answer with timestamped quotes, instead of you parsing a 25,000-token transcript yourself.
import { FrameFetch } from 'framefetch';
const ff = new FrameFetch({ apiKey: process.env.FRAMEFETCH_API_KEY });
const { ask } = await ff.ask( 'https://www.youtube.com/watch?v=jNQXAC9IVRw', 'What does the presenter say to do first?', );
console.log(ask.answer); // short, direct answer console.log(ask.confidence); // 'high' | 'medium' | 'low' for (const q of ask.quotes) { // verbatim, timestamped supporting quotes console.log([${q.t_sec}s] ${q.text}); } console.log(ask.coverage); // which part of the transcript was analyzed
Charged only when an answer is actually produced. A repeat question about an already-extracted video reuses the cached transcript, so it answers fast without a re-download or re-transcription — but the answer itself is always freshly generated, never cache-served.
Frames-based answers: when a video has no transcript (e.g. transcription failed), the answer is grounded in sampled keyframe images instead. Then coverage.mode is "frames", quotes is [] (no transcript text to quote), and confidence is capped at "medium".
import { FrameFetch } from 'framefetch';
const ff = new FrameFetch({ apiKey: process.env.FRAMEFETCH_API_KEY });
const r = await ff.extract({ url: 'https://www.youtube.com/watch?v=jNQXAC9IVRw', fields: ['metadata', 'transcript', 'frames', 'text_overlay'], frames: { mode: 'fps', fps: 1, width: 480 }, });
console.log(r.metadata.title); // "Me at the zoo" console.log(r.transcript.text); // "All right, so here we are, in front of the elephants…" console.log(r.frames.length); // 19 — frames is an array console.log(r.textOverlay?.[0]?.text); // on-screen text detected in the first frame, if any
Note the two spellings: text_overlay is the request field name, textOverlay is the response key.
await ff.metadata(url); // title, author, duration, views, likes…
await ff.transcript(url); // captions, else Whisper await ff.frames(url, { mode: 'fps', fps: 1, width: 512 }); await ff.ask(url, 'What product is being reviewed?'); // grounded Q&A, see above await ff.digest(url); // LLM summary of the transcript await ff.audioDigest(url, { voice: 'nova' }); // spoken mp3 briefing (signed URL, 24h) await ff.structured(url); // chapters/entities/products/claims/key_moments await ff.comments(url, { comments_cap: 50 }); // top-level comments await ff.commentSentiment(url); // aggregated audience-mood rollup (+ the comments) await ff.platforms(); // capability matrix (no key) await ff.status(); // live service health (no key)
// on-screen text (OCR) — requires "frames" alongside it, use extract() directly: await ff.extract({ url, fields: ['frames', 'text_overlay'], frames: { mode: 'fps', fps: 1 } });
Every helper above is a thin wrapper over extract(), so anything extract() accepts (translate, format, extra fields, …) can be passed as the last argument and is forwarded unchanged.
// Find something to extract when you don't have a URL yet
const s = await ff.search('how to make sourdough', { limit: 5 }); for (const hit of s.results) { console.log(hit.title, hit.url, hit.durationSec); }
// Then extract up to 10 of them in ONE call. Shared options apply to every url. const b = await ff.batch(s.results.slice(0, 3).map((r) => r.url), { fields: ['metadata', 'digest'], }); for (const item of b.results) { if (!item.ok) { console.error(item.url, item.error?.code); continue; } console.log(item.metadata.title, '→', item.digest.gist); }
One failing URL never fails the batch — each entry carries its own ok flag and, when ok is false, an error with code/message/hint. Per-URL frames specs are not accepted in a batch; use extract() for those.
// translate the transcript into 1 of 25 languages (surfaced as transcript_translated)
const r = await ff.transcript(url, { translate: 'ja' }); console.log(r.transcript_translated.text);
// export subtitles directly — format is sent as a query param, response comes back as a string const srt = await ff.transcript(url, { format: 'srt' }); // source-language subtitles const vttJa = await ff.transcript(url, { translate: 'ja', format: 'vtt' }); // translated subtitles
const ff = new FrameFetch(); // no key
await ff.demo('https://youtu.be/jNQXAC9IVRw'); // instant metadata, rate-limited const { key } = await ff.createKey('you@example.com'); // self-serve key + free credit
FrameFetch ships an MCP server (Streamable HTTP) with four tools: framefetch_extract, framefetch_platform_capabilities, framefetch_search and framefetch_account. Add it to Claude, Cursor, or any MCP client:
{
"mcpServers": { "framefetch": { "url": "https://framefetch.net/mcp", "headers": { "Authorization": " " } } } }
Or one line:
claude mcp add --transport http framefetch https://framefetch.net/mcp \
--header "Authorization: "
MCP lives at https://framefetch.net/mcp and speaks JSON-RPC over Streamable HTTP. REST lives under /v1/* and takes plain JSON ({"url": "…"}). Crossing the two is the single most common first-call mistake, so both directions answer clearly: a REST body POSTed to /mcp comes back as a JSON-RPC parse error, and a JSON-RPC body POSTed to /v1/extract comes back as 400 WRONG_ENDPOINT naming the right URL for your client.
Prefer a local stdio server (Claude Desktop, sandboxes, no inbound HTTP)? This package ships framefetch-mcp, a zero-dependency stdio↔HTTP bridge that exposes the same tools and forwards calls to framefetch.net:
{
"mcpServers": { "framefetch": { "command": "npx", "args": ["-y", "framefetch-mcp"], "env": { "FRAMEFETCH_API_KEY": " " } } } }
tools/list works with no key; tool calls use FRAMEFETCH_API_KEY (or x402). Override the endpoint with FRAMEFETCH_MCP_URL.
Autonomous agents can pay per call in USDC via x402 on Base — no signup, no human in the loop. Discoverable in the x402 Bazaar and at /.well-known/x402.json. Humans can use a free tier, prepaid credits, or a Stripe card.
Failed calls throw FrameFetchError with .status, .code, and .hint:
import { FrameFetchError } from 'framefetch';
try { await ff.transcript(url); } catch (e) { if (e instanceof FrameFetchError && e.status === 402) { // out of credit — top up at framefetch.net or via x402 } }
| Method | Endpoint | Auth |
|---|---|---|
extract({ url, fields, frames, … }) | POST /v1/extract | key |
ask(url, question) | POST /v1/extract (ask param) | key |
metadata(url) | POST /v1/metadata | key |
transcript(url, { translate, format }) | POST /v1/transcript | key |
frames(url, spec) | POST /v1/frames | key |
digest(url) | POST /v1/extract (digest) | key |
audioDigest(url, { voice }) | POST /v1/extract (audio_digest) | key |
structured(url) | POST /v1/extract (structured) | key |
comments(url, { comments_cap }) | POST /v1/extract (comments) | key |
commentSentiment(url) | POST /v1/extract (comment_sentiment) | key |
search(query, { limit }) | POST /v1/search | key |
batch(urls, { fields }) | POST /v1/batch | key |
platforms() | GET /v1/platforms | — |
status() | GET /v1/status | — |
demo(url) | POST /v1/demo | — |
createKey(email) | POST /v1/keys | — |
extract() request shapeff.extract({
url: string, fields?: Field[], // 'metadata' | 'insights' | 'transcript' | 'frames' | 'text_overlay' // | 'digest' | 'audio_digest' | 'structured' | 'comments' // | 'comment_sentiment' | 'delta' frames?: { mode, n, fps, from, to, format, width }, translate?: string, // ISO-639-1 target language (25 supported) voice?: string, // TTS voice for audio_digest comments_cap?: number, // 1-200, default 100 ask?: string, // 3-500 char question — see ff.ask() above publish?: boolean, // opt in to a public per-video SEO page format?: 'md' | 'markdown' | 'srt' | 'vtt', // alternate egress rendering (returns a string, not JSON) });
See index.d.ts for the complete typed response shape (ExtractResult, Ask, VideoStructured, VideoComments, CommentSentiment, AudioDigest, SearchResult, BatchResult, …).
Full OpenAPI: framefetch.net/openapi.json · Docs: framefetch.net/docs
Website · Docs · Pricing · [Status](https://framefetch.net/sta