Skip to main content
Glama

Recordful MCP

Let any AI app record, upload and read back product demos with Recordful.

Ask your AI to "record how the new sign-up flow works". It plans a short walkthrough, asks you to click the Recordful icon on the tab, then navigates, clicks and types with a smooth on-screen cursor while Recordful records. When it stops, Recordful's editor opens with the video. With Recordful Pro, it can also upload the video, hand you the link, and read the transcript back.

It ships as an MCP server for AI apps and a CLI for anything with a shell.

Works with Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, opencode, Codex, Gemini CLI and any other app that supports the Model Context Protocol. The AI doesn't need a browser of its own. Everything runs on your computer: nothing to host, no account, no API key.

Install

You need Chrome and Node.js 20.10 or newer. The Claude Desktop bundle includes everything, so it doesn't need Node.

1. Install Recordful from the Chrome Web Store.

2. Add Recordful to your AI app. The fastest ways:

  • Let the AI do it. Run npx -y recordful-mcp prompt (or copy it from the help center) and paste the result into your AI app. It installs the server and skill for itself, tells you what needs a restart, and asks what to record first.

  • One command. npx -y recordful-mcp install --target claude (also cursor, codex, opencode, vscode, windsurf, gemini) shows what it would change; add --yes to apply. It merges into the app's own config and never replaces your other servers.

Or add it by hand:

The plugin adds the server, a record-demo skill and a /record-demo command:

/plugin marketplace add iKislay/recordful-mcp
/plugin install recordful@recordful

Or add just the server: claude mcp add --scope user recordful -- npx -y recordful-mcp (on native Windows, use cmd /c npx -y recordful-mcp).

Download recordful.mcpb from the latest release and double-click it. Or add this to claude_desktop_config.json (Settings → Developer → Edit Config) and restart Claude:

{ "mcpServers": { "recordful": { "command": "npx", "args": ["-y", "recordful-mcp"] } } }

Add to the app's MCP config: ~/.cursor/mcp.json, ~/.codeium/windsurf/mcp_config.json, ~/.gemini/settings.json, and so on:

{ "mcpServers": { "recordful": { "command": "npx", "args": ["-y", "recordful-mcp"] } } }

Run MCP: Add Server, or add to .vscode/mcp.json:

{ "servers": { "recordful": { "type": "stdio", "command": "npx", "args": ["-y", "recordful-mcp"] } } }

Add to opencode.json:

{ "mcp": { "recordful": { "type": "local", "command": ["npx", "-y", "recordful-mcp"], "enabled": true } } }

Add to ~/.codex/config.toml:

[mcp_servers.recordful]
command = "npx"
args = ["-y", "recordful-mcp"]

npx -y recordful-mcp setup prints all of these.

3. First recording (one-time setup):

  1. In Recordful's popup, click More → AI agents and turn it on. Chrome asks to allow screen recording once; click Allow.

  2. Ask your AI to record something. When it asks, click the Recordful icon on the tab.

  3. Recordful asks you to approve the app. If the 4-digit code matches the one your AI shows, click Allow.

After that, you only click the Recordful icon on the tab you want recorded.

Related MCP server: DemoMotion

Use it

Ask in plain words:

  • "Record a demo of signing up and signing in on localhost:3000."

  • "I just built the billing page. Record a short video of how it works."

  • "Upload that and give me the link." / "What did I say in the last recording?" (Recordful Pro)

The AI works out the flow, uses test data (never your real accounts), records with pauses while it thinks, and stops so the editor opens. Apps that support MCP prompts also offer record_feature, a guided version of this workflow. While an app is connected, Recordful's icon shows an AI badge.

Free and Pro

Free

Pro

Record, drive the page, open in Recordful's editor

✓

✓

Upload to recordful.app and get a link

✓

Read back the transcript

✓

Rename, set who can watch, read views, likes and comments, comment, organise into folders, delete

✓

The AI checks your plan first. On the free plan it records as usual and tells you once that links and transcripts come with Pro, instead of failing. Recordings made while signed in to Pro go to the cloud as they record.

From the command line

The same things work from a terminal, for agents with a shell or for you:

npx -y recordful-mcp start        # click the Recordful icon on the tab first
npx -y recordful-mcp stop
npx -y recordful-mcp upload --title "Sign-up demo"
npx -y recordful-mcp transcript > transcript.txt
npx -y recordful-mcp videos

The first command asks you to click the Recordful icon once; a small helper keeps the connection for later commands and exits after 30 idle minutes. Add --json for machine-readable output. All commands: npx -y recordful-mcp --help; npx -y recordful-mcp guide --json lists everything an agent needs to know.

Why the click? Chrome only lets an extension record a tab after you click it there, and no app can click for you. The click also marks the only tab the AI may act in.

Do I need to host anything?

No. The server runs on your computer and talks to Recordful over 127.0.0.1. Recordings stay on your computer unless you, or your AI with Recordful Pro, upload them to recordful.app.

Only cloud-only chat apps (claude.ai or ChatGPT in a browser or on a phone) would need a hosted connector, because they can't run programs on your computer. That's planned.

Privacy and security

  • Off until you turn it on, and off again with one switch.

  • Local only: the server can't be reached from other devices or from web pages.

  • Paired once per computer after you approve a matching code. Every connection proves the pairing, and the secret is never resent.

  • Only the official Recordful extension can connect by default.

  • One tab: the AI acts only in the tab you handed over.

  • Revocable: Paired AI apps → Forget on the AI agents page, or npx -y recordful-mcp unpair --all.

Details: SECURITY.md.

Troubleshooting

Problem

Fix

"Recordful isn't connected"

Click the Recordful icon on the tab. Still nothing? Check More → AI agents is on

The AI shows a code

Check it matches in Recordful's window, click Allow, tell the AI to continue

Recording won't start

Click the Recordful icon on the exact tab to record, then retry. PERMISSIONS_NEEDED: turn AI agents off and on in Recordful and click Allow

Recording waits forever

Recordful may be asking something (microphone access, or the screen picker in screen mode). Answer it

PRO_REQUIRED or NOT_SIGNED_IN

Uploads and transcripts need a Recordful Pro account, signed in in Recordful. Recording works on every plan

BRIDGE_UNAVAILABLE

Something other than recordful-mcp is using port 47823, or an older recordful-mcp is running. Update or close it

No Recordful tools in the AI app

Check node -v is 20.10+, then restart the app

Run npx -y recordful-mcp status to see the pairing state.

More

License

MIT

Available Tools

29 tools
add_markerAdd a markerA

Mark this moment of the running recording with a short label ("signed in", "error shown"). It is timed on the video clock, pauses left out, and stop_recording returns every marker as { atMs, label }, so you can point the user to moments or edit around them later.

Inputs: label (required).

clickClick an elementA

Move Recordful's visible cursor to the element, scrolling it into view if needed, and click it, with a click highlight in the video. Reports a navigation the click started. Fails with ELEMENT_OBSCURED (naming what is on top, with its ref) if something covers it.

Inputs: ref (required).

comment_on_videoComment on a videoA

Recordful Pro only (check get_status recorder.account.plan first). Post a comment on a video as the signed-in user. It is public to everyone who can watch the video. Show the user exactly what you will change and wait for their yes first. Pass the comment exactly as the user approved it. Defaults to the last recording.

Inputs: body (required), videoId.

create_folderCreate a folderA

Recordful Pro only (check get_status recorder.account.plan first). Create a folder, at the top level or inside another folder. Show the user exactly what you will change and wait for their yes first.

Inputs: name (required), parentId.

delete_videoDelete a videoA
DestructiveIdempotent

Recordful Pro only (check get_status recorder.account.plan first). Permanently delete a video and its files from recordful.app. This can't be undone, and there is no default video: name it. Ask the user to confirm this exact video (title and link) first, then call with confirm: true.

Inputs: confirm (required), videoId (required).

get_statusGet recorder statusA
Read-only

Report whether the Recordful extension is connected and what the recorder is doing (idle, starting, recording, paused), the selected recording mode, the active tab, and which capture permissions are granted. Safe to call any time.

Inputs: no named parameters.

get_storageCheck storageA
Read-only

Recordful Pro only (check get_status recorder.account.plan first). How much of the user's Recordful cloud storage is used (bytes, percent) and whether more can be uploaded. Read-only.

Inputs: no named parameters.

get_transcriptRead a transcriptA
Idempotent

Recordful Pro only (check get_status recorder.account.plan first). Read back what was said in a Recordful video. Starts transcribing if it hasn't been yet, and by default waits until it's done, including for an upload still in progress. format: "text" (default), "vtt" (timed captions), or "both". Defaults to the last recording; a recording only on this computer must be uploaded first (upload_recording).

Inputs: wait, start, format, videoId, +1 more.

get_videoGet a videoA
Read-only

A Recordful video's title, length, who may watch it, its view and edit links, and its upload stage: "uploading" → "processing" → "ready". With wait, keeps checking until it's ready. Defaults to the last recording.

Inputs: wait, videoId, timeoutMs.

get_video_activityRead views, likes and commentsA
Read-only

Recordful Pro only (check get_status recorder.account.plan first). What viewers did with a video: its view count, likes, and every comment (oldest first, with author and time). Read-only. Defaults to the last recording.

Inputs: videoId.

like_videoLike or unlike a videoA
Idempotent

Recordful Pro only (check get_status recorder.account.plan first). Like a video as the signed-in user (liked: false removes it). Returns the new like count. Defaults to the last recording.

Inputs: liked, videoId.

list_foldersList foldersA
Read-only

Recordful Pro only (check get_status recorder.account.plan first). The user's folders on recordful.app: folderId, name, parentId (null at the top level) and whether it's shared. list_videos shows each video's folderId.

Inputs: no named parameters.

list_recordingsList local recordingsA
Read-only

List the recordings saved on this computer (newest first): each takeId, size, when it was recorded, and its videoId if it was uploaded. Recordings made while signed in to Recordful Pro go straight to the cloud instead; see list_videos.

Inputs: no named parameters.

list_videosList videosA
Read-only

List the user's videos on recordful.app, newest first: videoId, title, date, length, who may watch, and links. Optionally filter by title.

Inputs: limit, query.

move_videosMove videos into a folderA
Idempotent

Recordful Pro only (check get_status recorder.account.plan first). Move videos into a folder (folderId null moves them to the top level). Moving into a shared folder shares them, except private videos. Show the user exactly what you will change and wait for their yes first. Videos the user can't manage come back as skipped.

Inputs: videoIds (required), folderId.

pause_recordingPause recordingA
Idempotent

Pause the current recording. Use it while you plan the next step so the video has no dead air. No-op if already paused.

Inputs: no named parameters.

pressPress a keyA

Press a key in the focused element, e.g. Enter to submit a form, Tab to move focus, Escape to close a dialog, ArrowDown in a menu, Shift+Tab, Control+a. Recordful also performs the key's usual effect (submitting, moving focus, deleting), since pages ignore synthetic keys otherwise.

Inputs: key (required).

probe_captureProbe capture permissionsA
Read-only

Diagnostic: check, without recording, whether the extension can capture the target tab right now with no user click, and which optional Chrome permissions are granted. Refuses while a recording is running.

Inputs: tabId.

resume_recordingResume recordingA
Idempotent

Resume a paused recording. No-op if not paused.

Inputs: no named parameters.

screenshotScreenshot the pageA
Read-only

Capture what the recorded tab shows right now, as an image, to check the page looks right. The tab must be the active tab of its window.

Inputs: no named parameters.

scrollScrollA

Scroll smoothly: either bring an element (ref) into view, or scroll the page in a direction, by amount pixels or most of a screen.

Inputs: ref, amount, direction.

snapshotList page elementsA
Read-only

List the interactive elements (links, buttons, fields, checkboxes, tabs, menu items) and headings in the recorded tab, each with a ref to pass to click/type/scroll/wait_for, its role, accessible name, current value or state, and bounding box in CSS pixels. Refs stay the same for an element while it stays on the page.

Inputs: scope.

start_recordingStart recordingA

Start a Recordful recording on the target tab using the user's saved Recordful settings (mode, microphone, camera, countdown). Resolves once capture is live, or reports why it could not start. Navigate to the page you want to show before calling this.

Inputs: tabId, timeoutMs.

stop_recordingStop recordingA

Stop the current Recordful recording. Recordful then opens its editor with the recording, exactly as when the user clicks Stop. Returns where it went: recording.kind "cloud" (Recordful Pro: already uploading, with its videoId and links) or "local" (saved on this computer as takeId; upload_recording uploads it), plus the markers add_marker placed.

Inputs: timeoutMs.

typeType into a fieldA

Click the field, then type the text at a human pace (text inputs, text areas, content-editable areas). Set clear to replace what is already there. Use press for Enter, Tab and other keys.

Inputs: ref (required), text (required), clear, delayMs.

update_videoRename a video or change who can watchA
Idempotent

Recordful Pro only (check get_status recorder.account.plan first). Change a video's title and/or who may watch it: "private" (only the user), "workspace" (their team) or "public" (anyone with the link). Show the user exactly what you will change and wait for their yes first. Defaults to the last recording. Only the person who recorded it, or the workspace owner, can.

Inputs: title, videoId, visibility.

upload_recordingUpload a recordingA
Idempotent

Recordful Pro only (check get_status recorder.account.plan first). Upload a local recording to recordful.app and, by default, wait until the upload finishes. Defaults to the last recording. Returns the videoId and its view and edit links. A recording made in the cloud is already uploading, so this just returns it. Then get_transcript reads it back.

Inputs: wait, force, title, takeId, +2 more.

wait_forWait for the pageA
Read-only

Wait until text appears on the page or an element (ref) becomes visible, or with state "hidden" until it goes away. Keeps waiting across navigations. Fails with WAIT_TIMEOUT if it doesn't happen in time.

Inputs: ref, text, state, timeoutMs.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 29 tools

    Disambiguation5/5

    The tools are highly differentiated based on their function (e.g., client interaction vs. cloud management) and specific action within that domain (e.g., list_recordings vs. list_videos). Each action targets a clear resource or state.

    Naming Consistency5/5

    Tool names consistently use snake_case and employ clear functional prefixes like list_, create_, delete_, and get_ to define their purpose. This high consistency ensures predictability.

    Tool Count4/5

    With29 tools, the set is extensive, yet it feels appropriate given the complex dual nature of the server: handling raw UI interactions alongside comprehensive cloud asset management.

    Completeness5/5

    The surface provides excellent coverage, including full CRUD operations for cloud assets and a comprehensive suite of browser-level interaction tools like clicking, typing, and recording controls.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Turns your AI host into a product videographer — scripted screen recordings of your own web app with a gliding cursor, camera zooms, highlight callouts, captions, and branded transitions, plus marketing-grade screenshots. Automatic dark-frame cleanup and MP4/GIF export. Free, MIT, 100% local — no account, no API keys.
      14
      84 npm
      3
      MIT
    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables AI assistants to drive the user's real, already-logged-in Chrome browser locally, so they can read and navigate pages, click, type, fill forms, take screenshots, and inspect cookies, tabs, console, and network traffic without headless browsers or remote-debugging ports.
      1 npm
      ISC
    • A
      license
      Not graded
      quality
      A
      maintenance
      Lets AI coding tools drive the real Chrome browser you already have open, so they can read and act on logged-in pages with real clicks, typing, navigation, screenshots, and network or storage inspection. Everything runs locally over stdio with no remote-debugging port, so nothing leaves your machine.
      1 npm
      ISC