Skip to content
This repository was archived by the owner on Jun 3, 2026. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@
},
"metadata": {
"description": "Connect Cursor to LogRocket to query session replays, metrics, issues, and user behavior.",
"version": "0.1.0",
"pluginRoot": "plugins"
"version": "0.1.0"
},
"plugins": [
{
"name": "logrocket",
"source": "plugins/logrocket",
"source": "logrocket",
"description": "LogRocket MCP integration with a skill for querying sessions, metrics, and issues"
}
]
Expand Down
27 changes: 27 additions & 0 deletions .github/workflows/validate-plugins.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Validate plugins

on:
pull_request:
paths:
- ".cursor-plugin/marketplace.json"
- "**/plugin.json"
- "schemas/**"
push:
branches:
- main

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm install --no-save ajv ajv-formats

- name: Validate plugin definitions
run: node scripts/validate-plugins.mjs
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@
*.log
tmp/
temp/

# Node
node_modules/
package-lock.json
30 changes: 25 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ Connect Cursor to [LogRocket](https://logrocket.com) to query session replays, m
## Setup

1. Install the plugin from the Cursor Marketplace.
2. Find your **App ID** under **Settings > Project Settings** in the [LogRocket dashboard](https://app.logrocket.com), or from the URL: `https://app.logrocket.com/<org_id>/<project_id>`.
3. Set the environment variables `LOGROCKET_ORG_ID` and `LOGROCKET_PROJECT_ID`, or replace them directly in the plugin's `mcp.json`.
4. Connect to the MCP server when prompted by Cursor to authenticate.
2. Connect to the LogRocket MCP server when prompted by Cursor, and authenticate via OAuth.

That's it — the MCP server connects to the root `https://mcp.logrocket.com/mcp` endpoint and gives the agent access to the same LogRocket organizations and projects you can access in your browser. No environment variables required.

## Example Prompts

Expand All @@ -29,10 +29,30 @@ Connect Cursor to [LogRocket](https://logrocket.com) to query session replays, m
- [LogRocket MCP Server Docs](https://docs.logrocket.com/docs/mcp)
- [Ask Galileo Docs](https://docs.logrocket.com/docs/ask-galileo)

## Repository structure

This is a multi-plugin marketplace repository, mirroring the layout of the official [cursor/plugins](https://github.com/cursor/plugins) repo. The root `.cursor-plugin/marketplace.json` lists all plugins, and each plugin lives in its own top-level directory:

```
.cursor-plugin/
└── marketplace.json # Marketplace manifest (lists all plugins)
logrocket/
├── .cursor-plugin/
│ └── plugin.json # Per-plugin manifest
├── skills/ # Agent skills (SKILL.md with frontmatter)
├── mcp.json # MCP server definition
├── README.md
├── CHANGELOG.md
└── LICENSE
schemas/ # JSON schemas for validation
scripts/validate-plugins.mjs
```

## Validation

Run the template validation script to verify the plugin structure:
Validate the plugin structure against the Cursor plugin schemas:

```sh
node scripts/validate-template.mjs
npm install --no-save ajv ajv-formats
node scripts/validate-plugins.mjs
```
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@
"name": "LogRocket",
"email": "support@logrocket.com"
},
"homepage": "https://github.com/AppHubPlatform/logrocket-cursor-plugin/tree/main/logrocket",
"repository": "https://github.com/AppHubPlatform/logrocket-cursor-plugin",
"license": "MIT",
"logo": "assets/logo.png",
"keywords": ["logrocket", "session-replay", "analytics", "mcp", "galileo"],
"logo": "assets/logo.png"
"category": "developer-tools",
"tags": ["logrocket", "session-replay", "analytics", "observability", "debugging"],
"skills": "./skills/",
"mcpServers": "./mcp.json"
}
7 changes: 7 additions & 0 deletions logrocket/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Changelog

## 0.1.0

- Initial release of the LogRocket plugin.
- Added the LogRocket MCP server connection (all toolsets enabled via `?toolsets=all`).
- Added the `use-logrocket` skill for querying sessions, metrics, issues, and user behavior.
21 changes: 21 additions & 0 deletions logrocket/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 LogRocket

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
9 changes: 5 additions & 4 deletions plugins/logrocket/README.md → logrocket/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ Powered by the [LogRocket MCP Server](https://docs.logrocket.com/docs/mcp) and [

## What's Included

- **MCP Server** — Connects Cursor to the LogRocket API so your AI agent can query sessions, metrics, issues, and more.
- **MCP Server** — Connects Cursor to the LogRocket API so your AI agent can query sessions, metrics, issues, and more. All toolsets are enabled (`?toolsets=all`), exposing `use_logrocket`, `find_sessions`, `watch_sessions`, `build_metric`, `list_organizations`, and `list_projects`.
- **Use LogRocket Skill** — A skill that teaches your agent how to invoke LogRocket queries on your behalf.

## Setup

1. Find your **App ID** under **Settings > Project Settings** in the LogRocket dashboard, or in the URL: `https://app.logrocket.com/<org_id>/<project_id>`.
2. Set the environment variables `LOGROCKET_ORG_ID` and `LOGROCKET_PROJECT_ID`, or replace them directly in `mcp.json`.
3. Connect to the MCP server when prompted by Cursor to authenticate.
1. Install the plugin.
2. Connect to the MCP server when prompted by Cursor, and authenticate via OAuth.

The server connects to the root `https://mcp.logrocket.com/mcp` endpoint, so your agent can access the same LogRocket organizations and projects you can access in your browser. No environment variables required — use the `list_organizations` / `list_projects` tools to pick a specific org or project.

## Learn More

Expand Down
Binary file added logrocket/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions logrocket/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"mcpServers": {
"logrocket": {
"url": "https://mcp.logrocket.com/mcp?toolsets=all"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,27 @@ description: Query LogRocket for session replays, metrics, issues, and user beha
- Analyzing post-launch behavior for a new feature
- Researching a specific user or account's sessions

## Available tools

This plugin connects to the LogRocket MCP server with all toolsets enabled (`?toolsets=all`), so you have access to both the high-level natural-language tool and specialized tools:

- `use_logrocket` — Run a natural-language `query` against LogRocket. Powered by Ask Galileo, which chains the underlying tools internally. Best default for open-ended investigation ("figure out the root cause", "how is this feature used").
- `find_sessions` — Filter LogRocket sessions by criteria (URL, user email, events, time range, etc.). Use when you need a precise, structured list of sessions.
- `watch_sessions` — Analyze and/or extract detailed information from one or more specific sessions. Use after `find_sessions` (or when you already have session IDs) to get qualitative, step-by-step insight into what a user did.
- `build_metric` — Query LogRocket analytics data to build/return a metric. Use for quantitative questions (counts, trends, conversion, frustration signals).
- `list_organizations` — List the LogRocket organizations you can access.
- `list_projects` — List the LogRocket projects within an organization.

## Instructions

1. Call the `use_logrocket` MCP tool with a natural language `query` describing what you want to know.
2. To continue the same conversation (e.g. follow-up questions, drilling deeper), pass the `chatID` from the previous response.
3. Be specific about what you want analyzed — mention URLs, click targets, user emails, time ranges, or custom events when possible.
4. Ask LogRocket to watch sessions when you need detailed, qualitative insights about user behavior.
5. Present results clearly to the user, including any session URLs, metrics, charts, or actionable insights.
1. Pick the right tool for the job:
- For open-ended investigation, start with `use_logrocket` and let Ask Galileo orchestrate.
- For precise filtering or quantitative analysis, use `find_sessions` + `watch_sessions` or `build_metric` directly.
2. This MCP server is connected to the root LogRocket URL (not scoped to a specific org/project). When the target org/project isn't already known from context, call `list_organizations` and `list_projects` first to discover and confirm the right one before querying.
3. For `use_logrocket`, pass a natural language `query` describing what you want to know. To continue the same conversation (e.g. follow-up questions, drilling deeper), pass the `chatID` from the previous response.
4. Be specific about what you want analyzed — mention URLs, click targets, user emails, time ranges, or custom events when possible.
5. Use `watch_sessions` when you need detailed, qualitative insights about user behavior.
6. Present results clearly to the user, including any session URLs, metrics, charts, or actionable insights.

## Example Prompts

Expand Down
Binary file removed plugins/logrocket/assets/logo.png
Binary file not shown.
7 changes: 0 additions & 7 deletions plugins/logrocket/mcp.json

This file was deleted.

77 changes: 77 additions & 0 deletions schemas/marketplace.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://cursor.com/schemas/cursor-plugin/marketplace.json",
"title": "Cursor Plugin Marketplace",
"description": "Schema for .cursor-plugin/marketplace.json — defines a marketplace that indexes one or more Cursor plugins.",
"type": "object",
"required": ["name", "plugins"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Unique identifier for the marketplace."
},
"owner": {
"$ref": "#/$defs/owner",
"description": "The marketplace owner or organisation."
},
"metadata": {
"type": "object",
"additionalProperties": true,
"properties": {
"description": {
"type": "string",
"description": "Short description of the marketplace."
}
},
"description": "Arbitrary metadata about the marketplace."
},
"plugins": {
"type": "array",
"items": { "$ref": "#/$defs/pluginEntry" },
"description": "List of plugins available in the marketplace."
}
},
"$defs": {
"owner": {
"type": "object",
"required": ["name"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Owner or organisation name."
},
"email": {
"type": "string",
"format": "email",
"description": "Contact email address."
}
}
},
"pluginEntry": {
"type": "object",
"required": ["name", "source"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1,
"pattern": "^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$",
"description": "Plugin identifier matching the plugin's name in its plugin.json."
},
"source": {
"type": "string",
"minLength": 1,
"description": "Path to the plugin directory (relative to the marketplace root) or a remote URL."
},
"description": {
"type": "string",
"description": "Short description of the plugin."
}
}
}
}
}
Loading
Loading