Jam's MCP is the fast lane between Jam recordings and your dev tools. Drop a Jam link into Cursor and the whole recording – video, console, network, logs – arrives pre-packaged. No hand-typing repro steps, no copy-paste stack traces, no screen-share drama. Your tools get instant context, you stay in flow.
Open Customize in the Cursor sidebar, search for Jam, and select Install.
To run an unreleased version, symlink the repository into Cursor's local plugin folder:
ln -s /path/to/cursor-jam-plugin ~/.cursor/plugins/local/jamThen run Developer: Reload Window from the command palette (Cmd+Shift+P).
The plugin ships pointed at https://mcp.jam.dev/mcp. The first time the agent calls a Jam tool, Cursor opens a browser window to authenticate with your Jam account. Nothing else to configure.
Use a token where the OAuth browser flow is not available, such as a headless environment or CI. Create one under Settings → MCP in the Personal Access Tokens section, then add a headers block to the server entry in mcp.json:
{
"mcpServers": {
"Jam": {
"url": "https://mcp.jam.dev/mcp",
"headers": {
"Authorization": "Bearer YOUR_PERSONAL_ACCESS_TOKEN"
}
}
}
}Each token is scoped to one workspace, tied to your user account, and expires on a date you pick. Jam stores only a hash, so copy the token when you create it.
Connects to the Jam MCP server at https://mcp.jam.dev/mcp and exposes 33 tools.
Investigation
| Tool | Description |
|---|---|
getDetails |
Bug report overview, device info, and the server's investigation guide |
getNetworkRequests |
HTTP requests, filterable by status, method, host, and content type |
getConsoleLogs |
Browser console output, filterable by log level |
getUserEvents |
Timeline of clicks, inputs, navigation, and scrolls |
getScreenshots |
Images from screenshot Jams |
getFrames |
Still frames from video Jams, as an overview grid or sampled at timestamps |
analyzeVideo |
User intents extracted from a video recording |
getVideoTranscript |
Speech transcript from video Jams recorded with the mic on |
getVideoChapters |
Titled segments of a video Jam with start and end timestamps |
getMetadata |
Custom metadata the page sent through jam.metadata() |
search |
Resolve a Jam URL or pasted text to a Jam |
fetch |
Alias for getDetails |
Discovery and management
| Tool | Description |
|---|---|
listJams |
Search and filter Jams by text, type, folder, author, URL, or date |
listFolders |
Browse the workspace's folders |
createFolder |
Create a folder to file Jams into |
updateFolder |
Rename a folder. It does not move Jams |
listMembers |
Find workspace members |
createComment |
Add a Markdown comment to a Jam |
editComment |
Rewrite a comment you authored |
addReaction |
React to a comment |
removeReaction |
Take back a reaction you left |
updateJam |
Move a Jam to a different folder |
Destructive
These remove data permanently. Nobody in the workspace can restore it, because the dashboard has no trash or archive view. The bundled rule tells the agent to confirm with you before calling any of them.
| Tool | Description |
|---|---|
deleteJam |
Delete a Jam |
deleteComment |
Delete a comment you authored, along with its attachments |
deleteFolder |
Delete a folder and every Jam inside it |
Recording Links
Reusable URLs that let anyone record a Jam into your workspace.
| Tool | Description |
|---|---|
createRecordingLink |
Create a link, optionally with a target folder and an expiration |
listRecordingLinks |
List the workspace's links |
getRecordingLink |
Get one link and how many Jams it collected |
updateRecordingLink |
Rename a link, or change its folder, expiration, or metadata |
deleteRecordingLink |
Revoke a link. Jams already recorded through it stay |
listRecordingLinkJams |
List the Jams recorded through a link |
listRecordingUrls |
List the workspace's connected domains |
getRecordingUrlVerifyLink |
Get a link a person opens to verify a connected domain |
A Recording Link only captures console and network logs when it starts from a verified connected domain. Create one with a recordingUrlId or the Jams it collects carry no logs.
Always on. It tells the agent which tool to start with, how to filter noisy results, and how to line up console errors against network failures and user events.
Run /investigate-bug <jam-url-or-id> for a full pass: pull the report, follow the server's investigation guide, read the network, console, and user events, look at the visual evidence, and write up a root-cause hypothesis.
- Open Customize in the sidebar and confirm Jam is listed under MCP servers.
- Paste a Jam URL into chat and ask the agent to analyze it. Cursor opens a browser window for OAuth on the first tool call.
- Run
/investigate-bug https://jam.dev/c/<id>.
The Jam CLI reads the same data from a terminal:
curl -fsSL https://native.jam.dev/install | bash
jam auth login
jam get console <jam-url-or-id> --jsonThe CLI calls Jam's API directly and needs neither this plugin nor the MCP server. It takes the same personal access tokens. Inside Cursor, use the MCP connection this plugin configures. Reach for the CLI in shell scripts, in CI, and when piping --json into other tools.
- The plugin talks to
https://mcp.jam.dev/mcpand nothing else. - OAuth scopes are
mcp:readandmcp:write. Writes cover comments, reactions, folders,updateJam, the Recording Link write tools, and the threedelete*tools. - The server enforces permissions per workspace and per Jam. A
mcp:readtoken cannot change anything. - Every request is scoped to the Jams your account can already see.
- Bug or feature request: open an issue at github.com/jamdotdev/cursor-jam-plugin.
- General Jam support: support@jam.dev.
MIT. See LICENSE.