Pointcast について
Pointcastは、ブラウザーで要素を指し示しながら話した録画を、コーディングエージェント向けのMarkdown仕様に変換します。MCPサーバーからセッションや要素の詳細を読み取り専用で取得でき、可能な場合はソース位置も示します。
主な機能
- 01音声と要素の記録
- 02Markdown仕様の生成
- 03プロジェクト内の行特定
- 04読み取り専用セッションツール
- 05任意のローカル文字起こし
活用シーン
- 01音声と指し示しでUI変更を説明
- 02ソース位置付きの仕様をエージェントに渡す
- 03MCP経由で録画セッションを確認
MCP 対応
`pointcast mcp`はstdio MCPサーバーを起動します。読み取り専用ツールでセッション一覧、仕様や要素の詳細取得、新しい録画の待機ができます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y pointcastPOINTCAST_DIRFolder the recordings are read from and stored in. Default: <Downloads>/pointcast.POINTCAST_HANDOFFSet to off to stop receiving recordings from the extension on 127.0.0.1:20547 (shared multi-user computers).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| repo | string | いいえ | 録画が行われたプロジェクトの絶対パス。コードの場所を検索するために使用します。デフォルト:このサーバーの起動対象プロジェクト。 |
| limit | integer | いいえ | 返すセッションの最大数(デフォルト:20)。 |
詳細
pointcast
pointcast の録音を、コーディングエージェントが読める Markdown 仕様書に変換します。録音には、マイクでの文字起こしと、ナレーション中に指し示した要素が含まれます。または、MCP 経由でそのままエージェントに提供できます。録音は pointcast Chrome 拡張機能から取得します(リリースからインストール)。
パブリックベータ版(0.2)です。issues でのフィードバックやバグ報告を歓迎します。
インストール
インストールは不要です。npx で実行できます。
npx pointcast --help
拡張機能はブラウザー内ですでに文字起こしを行うため、CLI はデフォルトでは音声認識モデルをインストールしません。このマシン上で文字起こしを行う場合(pointcast transcribe、process --force、または拡張機能で文字起こしできなかった録音)、@huggingface/transformers を追加してください(ONNX Runtime と合わせて約 450 MB です)。
npm install -g pointcast @huggingface/transformers
# or, without installing:
npx -p pointcast -p @huggingface/transformers pointcast process --force
--engine openai では、どちらも必要ありません。
ローカルモデルは Xenova/whisper-base(拡張機能の Fast)です。--model Xenova/whisper-small は Accurate に相当します。聞き間違いが減り、処理速度は約 2 倍遅くなります。初回に 512 MB のダウンロードが必要です。
コマンド
pointcast setup Set pointcast up in this project: your coding agents, your
stack, the browser extension, then doctor. Asks first.
pointcast process [session-dir] Transcribe (if needed), fuse and render session.md.
Default session-dir: the latest session in
--dir / POINTCAST_DIR / <Downloads>/pointcast.
pointcast transcribe <session-dir | file.wav>
Write words.json from audio, on its own.
pointcast mcp Run a stdio MCP server exposing sessions read-only. While it
runs, it also receives the extension's recordings on
127.0.0.1, so they skip Chrome's downloads.
pointcast issue [session-dir] --repo owner/name
Experimental: file the spec as a GitHub issue, linked to the code.
pointcast doctor Check this machine's setup, with a fix for each problem.
process は録音と同じ場所に session.md を書き込み、クリップボードにコピーします。コーディングエージェントにそのまま貼り付けられます。すべてのフラグ(--engine、--format、--stdout など)は pointcast --help で確認できます。--style precise を指定すると、仕様書の指示は「参照された要素のみを、依頼されたとおりに変更する」となります。--style intent の場合は「新しいものについての依頼が意味するものを、アプリのスタイルに合わせて作成する」となります。指定しない場合は、録音時にポップアップで選択されたスタイルが使われます(設定が追加される前に作成された録音では intent が使われます)。
セットアップ
npx pointcast@latest setup
プロジェクト内で実行すると、Claude Code、Codex、Gemini CLI(PATH 上)、Cursor(.cursor フォルダーがあるか、PATH 上)を探します。pointcast がまだ設定されていないものごとに、実行する内容を表示して y/N で確認します。Claude Code と Codex ではプラグインのインストールコマンド、Gemini CLI では gemini extensions install、Cursor ではこのバージョンに固定された pointcast サーバーをプロジェクトの .cursor/mcp.json にマージします。その後、スタックに必要な設定(Django プロジェクトでは pointcast-django の行、React、Vue、Svelte の開発ビルドでは不要)、ブラウザー拡張機能の追加方法を案内し、doctor を実行します。Python の設定やエージェントの設定ファイルを直接編集することはありません。
--dry-run は計画を表示するだけで、変更は行いません(doctor もスキップします)。--yes は確認なしですべての手順を実行します。--json はエージェント向けに計画と結果を出力します。--repo <path> は別のフォルダーをセットアップします。ターミナルがなく、--yes も指定されていない場合は、ドライランになります。
セットアップの確認
npx pointcast doctor
チェックごとに 1 行ずつ表示し、問題があればその下に修正方法を示します。Node.js のバージョン(22.12 以降)、読み込み対象のセッションフォルダー(--dir / POINTCAST_DIR / <Downloads>/pointcast)、フォルダー内の録音数と最新の録音、拡張機能から 127.0.0.1:20547 で録音を受信している pointcast MCP サーバーの有無とバージョンを確認します(複数のエージェントセッションが開いている場合、いずれかのサーバーが受信し、すべてのセッションが同じフォルダーを読み込みます。CLI より古いサーバーがある場合、通常は更新前に開始されたセッションなので、再起動するとよいでしょう)。さらに、ローカルでの文字起こしに @huggingface/transformers がインストールされているか、Linux の場合はクリップボードツール(wl-copy、xclip、xsel)があるかも確認します。読み取り専用です。MCP サーバーに挨拶はしますが、録音は送信しません。また、--online を追加しない限りネットワークは使用しません。--online を追加すると、バージョンを npm の最新バージョンと比較します。--json はスクリプト向けに同じレポートを出力します。終了コード 1 になるのは、pointcast に必要なものが機能していない場合(古い Node.js、存在しない --dir または POINTCAST_DIR)だけです。未設定のオプション項目は警告として表示されます。
コードの場所
React、Vue、Svelte の開発ビルドで記録を行った場合、指し示された各要素には、それをレンダリングしたコンポーネントのチェーンが含まれます。pointcast はそれらのファイルから要素のテキストを検索し、そのテキストがある行を仕様に追加します。
- [a] «Export» → code:
- used at: `src/pages/Dashboard.tsx` — `<OrdersTable>`
- text at: `src/components/OrdersTable.tsx:22` — `<button type="button" id="orders-export" className="btn btn-export"> Export </button>`
- within: `<Dashboard>` in `src/App.tsx` ← `<App>` in `src/main.tsx`
小規模な評価では、これによりコーディングエージェントが要素を探すのに費やすトークン数が半分以下になりました(docs/eval)。検索にはソースコードが必要なため、ソースコードがある場所で実行されます。
pointcast processは、記録のファイルがカレントディレクトリにある場合はそのディレクトリを使用し、そうでない場合は--repo <project folder>を指定します。どちらの場合もソースコードが見つからなければ、行を含まない仕様をレンダリングし、その理由を1行で示します。モノレポでは、リポジトリのルートから実行してください。記録にsrc/App.tsxとあるファイルも、一致するファイルが1つだけならapps/web/src/App.tsxから見つかります。- MCP サーバー(以下を参照)は、起動時に指定されたプロジェクトを使用します。
pointcast issueは GitHub リポジトリを読み取ります(以下を参照)。
完全に一致する行が1つだけの場合に限り追加されます。一致する行が複数ある場合は何も追加されません。session.json は変更されません。
GitHub の issue(実験的機能)
現時点では issue の本文は仕様をそのまま記載しています。この機能が実験段階を終える前に、読みやすい issue に書き換える予定です。
pointcast issue --repo owner/name --dry-run # print the title and body
pointcast issue --repo owner/name # create the issue
pointcast issue --repo owner/name --open # print and open a prefilled issues/new link
issue は最新のセッション(または指定したセッション)を取得し、デフォルトブランチまたは --ref <branch|tag|sha> で指定したブランチ、タグ、コミットのリポジトリを読み取って、コードの場所を解決します。また、すべての file:line をそのコミット時点のファイルにリンクするため、リンク先がずれることはありません。issue の作成にはトークンが必要です。GITHUB_TOKEN を使うか、設定されていない場合は gh auth login で保存したトークンを使います。公開リポジトリの読み取りは、GitHub のレート制限内であればトークンなしで行えます。--open にトークンは不要です。本文がリンクの長さ制限を超える場合は、貼り付けられるよう本文を出力します。記録されたファイルがリポジトリ内に1つもない場合は、リポジトリが間違っている可能性があるため、issue は issue の作成を拒否します。
MCP サーバー
pointcast mcp は stdio MCP サーバーを起動します。エージェントが録画データを取得する主な方法です。停止すると、拡張機能が録画データをサーバーに渡し、エージェントが仕様を取得します。各要素はプロジェクト内の該当行に解決されます。MCP に対応していないエージェント向けには、クリップボードから仕様を貼り付ける方法もあります。読み取り専用ツールは 4 つです。
- list_sessions — 新しい順に並んだ最近の録画を、1 行につき 1 件、
{ "sessions": [...] }で返します。各録画の内容は、id、date、duration、対象のpages、requestsとelementsの数、最初のリクエストのpreview、ソースファイルがプロジェクト内にあるかどうかを示すmatchesProject(true、false、または該当ファイルが記録されていない場合は"unknown")、およびrendered(session.mdがディスク上にあるかどうか)です。 - get_session — id、
"latest-here"(このプロジェクトで作成された最新の録画。ファイルがすべてこのプロジェクト内にない新しい録画はスキップされ、その旨が示されます)、または"latest"(すべての録画のうち最新のもの)を指定して、録画の Markdown 仕様を取得します。session.mdがまだディスク上にない場合は、session.json/words.jsonから生成します。文字起こしは行いません。仕様の先頭には、8 requests · 17 elements · ~3,100 tokensのような行が含まれます。 - get_element — セッション id とイベント id(例:
"e3")を指定して、1 件のイベントについて、キャプチャした詳細情報(セレクター、ソースの位置、スタイル、フレームワークのコンポーネントなど)をすべて取得します。 - wait_for_recording — このプロジェクトで次に作成される録画を待機し(任意のプロジェクトを対象にする場合は
anyProject: trueを指定)、停止を押すとすぐに、その仕様をget_sessionと同様に返します。timeoutSecondsを過ぎると「新しい録画はまだありません」と応答し、エージェントは再度呼び出します。/pointcast watchはこの処理を繰り返します。
不明なセッション id が指定されると、エラーにはプレビュー付きで最新の id が 3 件表示されます。不明なイベント id が指定されると、有効な範囲(e1…e17)が表示されます。
セッションの検索方法は pointcast process と同じです。--dir/POINTCAST_DIR/<Downloads>/pointcast を使用します。
MCP 設定ではバージョンを固定してください(以下の [email protected] のように指定します)。バージョンを指定せずに pointcast を使用すると、npx はキャッシュ済みのコピーを使い続けるため、古いバージョンが使われる場合があります。プラグインでは正確なバージョンを固定し、リリースごとに更新しています。
get_session、get_element、wait_for_recording は、サーバーの起動先プロジェクト内のコードの位置を解決します。対象プロジェクトは --repo、それがなければ CLAUDE_PROJECT_DIR(Claude Code が設定します)、それもなければサーバーの作業ディレクトリです。これらのツールと list_sessions では、任意の repo 引数も指定できます。録画内のファイルがプロジェクト内に 1 つもない場合、結果の先頭に、その録画はおそらく別のプロジェクトのものだという警告が 1 行表示されます。
get_session と wait_for_recording では、pointcast process --style と同様に、任意の style("intent" または "precise")も指定できます。指定すると、録画時に選択したスタイルにかかわらず、仕様は指定したスタイルで生成され、session.md としてキャッシュされません。/pointcast precise は "precise" を渡します。
リスニング:wait_for_recording
wait_for_recording は新しい録音が届くとすぐに返ります。新しい録音とは、エージェントが最初にこのツールを呼び出した時点ではセッションフォルダーになく、どのツールからもまだ返されていない録音です。デフォルトでは、"latest-here" と同じルールで、このプロジェクトの録音のみが対象になります。録音のソースファイルがすべてプロジェクト内にない場合はスキップされ、ファイル名が指定されていない録音は対象に含まれます。スキップされた録音は消費されないため、適切なプロジェクトのエージェントセッションでは引き続き取得でき、anyProject: true を指定すると、他のプロジェクトの録音であることを示す警告が付く場合を含め、すべての録音が返されます。そのため、エージェントが前の録音を適用している間に作成した録音は次の呼び出しで返され、get_session ですでに読み取った録音が再び返されることはありません。複数のエージェントセッションを開いていても動作します。拡張機能から録音を受け取るサーバーは1つだけで、他のセッションには共有セッションフォルダーに録音が追加されたことが表示されます。
ツール呼び出しを無期限に続けることはできず、クライアントごとにタイムアウトが異なるため、デフォルトの待機時間はクライアントに合わせて設定されています。
| クライアント | ツール呼び出しの制限時間 | デフォルトの待機時間 |
|---|---|---|
| Claude Code | stdio サーバーには制限なし(MCP_TOOL_TIMEOUT で設定可能)。応答または進捗がない場合は30分 | 9分 |
| Gemini CLI | サーバー設定の timeout。デフォルトは10分 | 9分 |
| Codex | tool_timeout_sec。デフォルトは60秒 | 50秒 |
| Cursor など | ドキュメントに記載なし | 50秒 |
エージェントは timeoutSeconds を指定できます(最大1,500秒、25分)。録音が届かないまま待機が終了しても、エラーにはなりません。エージェントは再度呼び出すため、制限時間が短い場合は呼び出し回数が増えるだけです。待機中、クライアントが進捗通知を要求している場合、サーバーは進捗通知を送信します。
拡張機能から録画を受け取る
pointcast mcp の実行中は、127.0.0.1:20547 でもリッスンします。ネットワーク上ではリッスンしません(ご自身でポートフォワーディングを設定した場合を除きます。下記の リモート開発サーバー を参照)。拡張機能の停止時に、拡張機能(0.2 以降)が録画をサーバーに渡し、サーバーはそのセッションフォルダーに保存します。ツールはこのフォルダーを読み込みます。Chrome は何もダウンロードしないため、Chrome の「ファイルごとに保存場所を確認する」を有効にしていても、保存ダイアログは表示されません。サーバーから応答がない場合は、従来どおり拡張機能が Chrome のダウンロード機能を使って録画を保存します。各録画の保存先はポップアップに表示されます。
- pointcast 拡張機能からのみ受信します。 サーバーが録画を受け取るのは、公式拡張機能の ID(その
chrome-extension://オリジン)から、pointcast 独自のヘッダーとコンテンツタイプを使って送信された場合のみです。そのため、Web ページから録画を送信することはできません。フォーク版を使う場合、または ID がリリースに含まれるまでの間に Edge アドオンからインストールする場合は、POINTCAST_EXTENSION_IDS=<id>[,<id>…]を追加してください。サーバーが拒否した場合、ポップアップに ID が表示されます。無効な ID を指定すると、受信機能はオフになります(サーバーのログに理由が記録されます)。ツールは引き続き動作します。 - 書き込み途中のファイルや、上書きは発生しません。 ファイルは隠しフォルダー
.incoming-*に書き込まれ、その後セッション ID に名前が変更されます。そのフォルダーがすでに存在する場合、拡張機能は Chrome のダウンロード機能に切り替えます。 - 複数のサーバー(複数のエージェントやプロジェクトを使用する場合):最初に起動したサーバーが受信します。他のサーバーはポートが使用中であることをログに記録し、3 秒ごとに再試行するため、最初のサーバーの終了後 3 秒以内に別のサーバーが引き継ぎます。各サーバーの
--dirが異なる場合、録画は受信したサーバーのフォルダーに保存されます。 - 無効にするには、
--no-handoffまたはPOINTCAST_HANDOFF=offを指定するか、拡張機能の設定で (エージェントの Pointcast MCP サーバーに送信する) を選択します。 - 複数ユーザーで共有するコンピューターの場合:
127.0.0.1はコンピューターの全ユーザーで共有されるため、別のユーザーがあなたのサーバーに録画を送信したり、サーバー停止中にあなたの録画を受け取ったりする可能性があります。その環境では、両方で無効にしてください。 - リモート開発サーバー(エージェントと
pointcast mcpが SSH 経由で別のマシン上で動作する場合):ホスト上でpointcast mcpを実行し、コンピューターからssh -L 20547:127.0.0.1:20547 <host>を使ってポートをフォワードします。拡張機能のリクエストはトンネルを経由し、ホストのサーバーは録画を、そのツールが読み込む場所に保存します。ローカルポート 20547 のフォワードはすべてこれに該当します。リモートワークスペース用のエディターによる自動ポートフォワーディング(VS Code Remote-SSH、Codespaces など)も含まれるため、録画はコンピューターからホストに送信されます。また、共有ホストでは、ポート 20547 のサーバーが別のユーザーのものである可能性があります。フォワードでポートを使用している間、ローカルのpointcast mcpは録画を受信できません。フォワードをネットワークに公開しないでください(ssh -g、GatewayPorts)。フォワードにアクセスできる人は誰でも、ホストのサーバーに録画を送信できます。 - 標準エラー出力にのみログを記録します(標準出力は MCP チャネルです)。リッスン開始時に 1 行、録画の保存ごとに 1 行を記録します。
POINTCAST_HANDOFF_PORT はテスト用のフックです。拡張機能のポートは、ビルド時に固定されます。
Claude Code のチャネル(実験的)
Claude Code のチャネル(リサーチプレビュー)を使うと、
MCP サーバーからセッションにメッセージをプッシュし、ユーザーが依頼しなくても Claude に反応させることができます。サーバーがチャネルを宣言し、拡張機能から記録を受け取ると、その記録が属する Claude Code セッションに次のように伝えます:New pointcast recording 2026-09-29_10-00-00: 3 requests on localhost:5173/orders. Apply it with the pointcast tools (get_session, id "…"). その後、Claude は /pointcast のように、ツールを使って仕様を読み込みます。
- オプトインしない限り無効です。 チャネルを有効にして起動しない限り、Claude Code はチャネルを無視します。プレビュー期間中は、許可リストに登録されたプラグインのみがチャネルを登録できます。pointcast はリストにないため、開発用フラグが必要で、起動時に確認が求められます:
claude --dangerously-load-development-channels plugin:pointcast@pointcast - 送信されるのは ID、件数、ページのみです。 メッセージに仕様や、ユーザーが話した内容、ページに表示された内容が含まれることはありません。ウェブページのテキストが、エージェントが動作するメッセージとしてエージェントに届いてはなりません。ページのパスは URL で使用できる文字に制限され、短縮されます。
- 通知するのは記録を受け取るサーバーだけです。 Claude Code のセッションを複数開いている場合、ハンドオフポートを保持しているサーバーのセッションにメッセージが届きます。
/pointcast watchはどのセッションでも使えます。 - ほかのエージェントにはメッセージが届きません。記録を待ち受けるには
wait_for_recordingを使います。
Claude Code:プラグイン
このプラグインは MCP サーバーと /pointcast コマンドを追加します。このコマンドは、プロジェクトで作成された最新の記録を取得して適用します。/pointcast watch は、記録を作成するたびにそれを待ち受けて適用します。integrations/claude-code-plugin を参照してください。
claude plugin marketplace add Hugelidus/pointcast
claude plugin install pointcast@pointcast
Claude Code:MCP サーバーのみ
claude mcp add pointcast -- npx -y [email protected] mcp
特定のセッションフォルダーを指定する場合:
claude mcp add pointcast -- npx -y [email protected] mcp --dir /path/to/pointcast-sessions
Codex CLI
同じプラグインは Codex でも使えます。MCP サーバーに加えて pointcast スキルが追加されます。インストール後に新しいセッションを開始し、$pointcast:pointcast [session-id](または $pointcast:pointcast watch)と入力するか、「最新の pointcast 記録を適用して」と依頼します:
codex plugin marketplace add Hugelidus/pointcast
codex plugin add pointcast@pointcast
Codex はセッションのフォルダーでサーバーを起動するため、コードの場所はそのフォルダーを基準に解決されます。Codex が MCP サーバーに渡す環境変数は固定されています。POINTCAST_DIR(またはほかの POINTCAST_ 変数)を使うには、~/.codex/config.toml の [mcp_servers.pointcast] の下に env_vars = ["POINTCAST_DIR"] を記述してください。Codex は最初のメッセージを送る前に MCP サーバーの起動を待ちません。そのため、起動直後に送ったメッセージではツールが使えないことがあります。その場合は、もう一度送ってください。
Gemini CLI
この拡張機能は MCP サーバー(npx -y [email protected] mcp --repo <the folder you run gemini in>)と /pointcast [session-id | watch] コマンドを追加します:
gemini extensions install https://github.com/Hugelidus/pointcast
Gemini が拡張機能のコマンドと stdio MCP サーバーを起動するのは、信頼済みのフォルダーのみです(初回に確認を求められます)。gemini extensions update pointcast で更新してください。
Cursor
これを .cursor/mcp.json(プロジェクト)または ~/.cursor/mcp.json(グローバル)に追加します。${workspaceFolder} は、コードの場所を解決する対象のプロジェクトをサーバーに伝えます:
{
"mcpServers": {
"pointcast": {
"command": "npx",
"args": ["-y", "[email protected]", "mcp", "--repo", "${workspaceFolder}"]
}
}
}
Windsurf
これを ~/.codeium/windsurf/mcp_config.json に追加します。設定はグローバルのため、サーバーの作業ディレクトリがプロジェクトではない場合、エージェントはプロジェクトフォルダーをツールの repo 引数として渡します:
{
"mcpServers": {
"pointcast": {
"command": "npx",
"args": ["-y", "[email protected]", "mcp"]
}
}
}
環境変数
POINTCAST_DIR(セッションフォルダー)、POINTCAST_LANGUAGE。--engine openai の場合:
POINTCAST_API_BASE、POINTCAST_API_KEY(OPENAI_API_KEY は api.openai.com に対してのみ使用されます)。
issue の場合:GITHUB_TOKEN(または GH_TOKEN)。
mcp の場合:CLAUDE_PROJECT_DIR、
POINTCAST_HANDOFF(off または 0 の場合、--no-handoff と同様に記録を受信しません)、
POINTCAST_EXTENSION_IDS(記録を受け付ける追加の拡張機能 ID。カンマ区切り)、
POINTCAST_HANDOFF_PORT(テスト専用)。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。