# Cursor Feedback Extension

> Save your Cursor monthly quota! Unlimited AI interactions in one conversation via MCP feedback loop.

- **Type:** MCP server
- **Install:** `agentstack add mcp-jianger666-cursor-feedback-extension`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [jianger666](https://agentstack.voostack.com/s/jianger666)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [jianger666](https://github.com/jianger666)
- **Source:** https://github.com/jianger666/cursor-feedback-extension

## Install

```sh
agentstack add mcp-jianger666-cursor-feedback-extension
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Cursor Feedback

[中文文档](./README_CN.md)

[](https://open-vsx.org/extension/jianger666/cursor-feedback)
[](https://open-vsx.org/extension/jianger666/cursor-feedback)
[](https://www.npmjs.com/package/cursor-feedback)

**One conversation, unlimited AI interactions** - If you're on a per-request plan, it saves your monthly quota; plus it bridges your agent tool with Feishu (Lark) — when AI asks for feedback, it's pushed to Feishu and you can reply from your phone. An interactive feedback tool built on MCP (Model Context Protocol).

## 💡 Why Cursor Feedback?

If you're on Cursor's 500 requests/month plan or another coding plan, every conversation counts. With Cursor Feedback:

- **One conversation, unlimited interactions** - Keep chatting without consuming extra quota
- **Human-in-the-loop workflow** - AI waits for your feedback before proceeding
- **Sidebar integration** - No external browser needed, everything stays in your IDE

## ✨ Features

- 🎯 **Sidebar Integration** - Feedback UI embedded directly in the IDE sidebar
- 💬 **Interactive Feedback** - AI Agent requests feedback via MCP tool
- 🖼️ **Image Support** - Upload images or paste directly (Ctrl+V / Cmd+V)
- 📁 **File Support** - Select files/folders to share paths with AI
- 📝 **Markdown Rendering** - Full Markdown support for AI summaries
- ⏱️ **Auto-retry on Timeout** - 5-minute default timeout, AI automatically re-requests
- 🔔 **Feishu (Lark) Bridge** - When AI requests feedback, the summary is pushed to Feishu so you can reply right from your phone
- 🌍 **Multi-language** - Supports English, Simplified Chinese, Traditional Chinese
- 🔒 **Project Isolation** - Multiple windows work independently

## 🚀 Quick Start

### 1. Install the Cursor Extension

Search for **"Cursor Feedback"** in the Cursor extension marketplace.

> **Can't find it?** Install via command line:
> ```bash
> cursor --install-extension jianger666.cursor-feedback
> ```

### 2. Configure MCP Server

#### Option A: One-click Install (Recommended)

Click the button below to automatically configure the MCP Server:

  

#### Option B: Manual Configuration

Add to your Cursor MCP config file (`~/.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "cursor-feedback": {
      "command": "npx",
      "args": ["-y", "cursor-feedback@latest"]
    }
  }
}
```

#### Option C: Global Installation

```bash
npm install -g cursor-feedback
```

Then configure:

```json
{
  "mcpServers": {
    "cursor-feedback": {
      "command": "cursor-feedback-mcp"
    }
  }
}
```

### 3. Usage

1. Restart Cursor
2. The **Cursor Feedback** icon appears in the sidebar
3. Ask AI to call the `interactive_feedback` tool in chat
4. AI displays work summary in sidebar, waiting for your feedback

### 4. Configure User Rules (Recommended)

Add these User Rules in Cursor settings for best experience:

```
# Cursor Feedback Rules

1. Always call MCP cursor-feedback during any workflow, task, or conversation.
2. After receiving user feedback, call MCP cursor-feedback again and adjust behavior accordingly.
3. Before completing a task, use MCP cursor-feedback to ask for user feedback.
4. All content to show users must be passed through cursor-feedback's summary parameter.
```

This enables continuous interactive dialogue where AI automatically uses Cursor Feedback throughout the conversation.

## 📖 MCP Tool

### interactive_feedback

Interactive feedback collection tool.

**Parameters:**

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `project_directory` | string | required | Absolute path of the project workspace you are currently in (the open workspace; for multi-window isolation) |
| `summary` | string | `I have completed the task you requested.` | AI work summary (supports Markdown) |
| `timeout` | number | `300` | Timeout in seconds (default 5 minutes) |

**Timeout Mechanism:**

- Default wait time: 5 minutes (300 seconds)
- On timeout, AI receives notification
- AI automatically re-calls the tool based on instructions
- Even if you step away, AI will still be waiting when you return

**Returns:**

User feedback content including text, images, and attached file paths.

## ⚙️ Configuration

### Language Settings

**Method 1: Click the 🌐 button in the sidebar** (Recommended)

Click the globe icon in the Cursor Feedback sidebar to switch languages.

**Method 2: Through VS Code Settings**

Search "Cursor Feedback" in settings:

| Setting | Type | Default | Description |
|---------|------|---------|-------------|
| `cursorFeedback.language` | string | `zh-CN` | UI language |

Available languages:
- `zh-CN` - Simplified Chinese (简体中文)
- `en` - English

### Notification Settings

Click the "Notification settings" icon at the top of the feedback panel to configure in-app and Feishu notifications, or adjust them in VS Code settings:

| Setting | Type | Default | Description |
|---------|------|---------|-------------|
| `cursorFeedback.systemNotification` | boolean | `true` | In-app notifications (main switch): automatically show the feedback panel when AI requests feedback. When off, this window stays fully silent — no panel, no focus stealing, and nothing pushed here |
| `cursorFeedback.osNotification` | boolean | `true` | Notify when in background (sub-option): fire a native system notification only when the IDE window is not focused. When off, nothing pops even if you switch away (the panel still shows) |
| `cursorFeedback.notificationSound` | boolean | `true` | Play a sound with the system notification |

> macOS note: notifications are sent via `osascript`. If you don't see them, allow notifications for "Script Editor" in System Settings → Notifications.

### MCP Server Configuration

Basic config:

```json
{
  "mcpServers": {
    "cursor-feedback": {
      "command": "npx",
      "args": ["-y", "cursor-feedback@latest"]
    }
  }
}
```

Custom timeout (optional, default 5 minutes):

```json
{
  "mcpServers": {
    "cursor-feedback": {
      "command": "npx",
      "args": ["-y", "cursor-feedback@latest"],
      "env": {
        "MCP_FEEDBACK_TIMEOUT": "600"
      }
    }
  }
}
```

| Environment Variable | Default | Description |
|---------------------|---------|-------------|
| `MCP_FEEDBACK_TIMEOUT` | `300` | Timeout in seconds (default 5 minutes) |
| `MCP_AUTO_RETRY` | `true` | Whether AI should auto-retry on timeout. Set to `false` to disable. Also toggleable via the "Keep-waiting" switch in the panel (priority: panel > env > default) |

### Feishu Notifications

Either way works — but you first need to set up the bot in the Feishu console: enable the bot, grant permissions, and turn on **event subscription** (long-connection mode + the `im.message.receive_v1` event). Full walkthrough in the [Feishu setup guide](./docs/feishu-setup.md):

- **On Cursor**: fill in Feishu credentials via the "Notification settings" icon at the top of the panel.
- **On other MCP hosts** (agent tools without this panel): configure through `env` in `mcp.json`:

```json
{
  "mcpServers": {
    "cursor-feedback": {
      "command": "npx",
      "args": ["-y", "cursor-feedback@latest"],
      "env": {
        "FEISHU_APP_ID": "cli_xxxxxxxx",
        "FEISHU_APP_SECRET": "your_app_secret"
      }
    }
  }
}
```

| Environment Variable | Default | Description |
|---------------------|---------|-------------|
| `FEISHU_APP_ID` | - | Feishu app App ID (e.g. `cli_xxxxxxxx`) |
| `FEISHU_APP_SECRET` | - | Feishu app App Secret |
| `FEISHU_ENABLED` | `true` | Whether to push feedback to Feishu. Set to `false` to disable |
| `FEISHU_ACK` | `true` | Whether to react with a "Get" emoji after you reply. Set to `false` to disable |

> Priority: **panel config (when credentials are filled) > env here > default**. The panel wins when App ID/Secret are filled; otherwise it falls back to env. You still need to send the bot one message in Feishu to complete binding.

### Feishu round-trip on any MCP host

`cursor-feedback` is **not tied to Cursor**. The whole Feishu loop — long connection, card push, and reply routing — lives inside the MCP server process, so it works on **any MCP-capable agent host**: Cursor, Claude Desktop, Cline, command-line agents, or your own harness. No sidebar / VS Code panel required.

Three steps to enable the round-trip:

1. **Register the MCP server** in the host's config with Feishu credentials in `env` (same `FEISHU_APP_ID` / `FEISHU_APP_SECRET` as above; `FEISHU_ENABLED` / `FEISHU_ACK` optional):

```json
{
  "mcpServers": {
    "cursor-feedback": {
      "command": "npx",
      "args": ["-y", "cursor-feedback@latest"],
      "env": {
        "FEISHU_APP_ID": "cli_xxxxxxxx",
        "FEISHU_APP_SECRET": "your_app_secret"
      }
    }
  }
}
```

2. **Bind the chat once** — send the bot any message in Feishu. The server records that chat as the push target (persisted to disk, shared across processes), so it knows where to deliver cards.

3. **Round-trip** — the agent calls `interactive_feedback` → a card is pushed to Feishu → you reply in Feishu → your reply is routed back to the agent as the tool result. Reply from your phone; no IDE needed.

> **No idle-kill outside Cursor.** Only the Cursor extension keeps the server warm by polling. On every other host the server stays alive purely on the stdio connection: it exits on stdin EOF or parent-process death, and **never** on idle — and it always stays up while a feedback request is still waiting. So a reply that takes several minutes still makes it back.

## 🏗️ Architecture

```
┌─────────────────┐     stdio      ┌──────────────────┐
│   AI Agent      │ ◄──────────► │   MCP Server     │
│   (Cursor)      │               │  (mcp-server.js) │
└─────────────────┘               └────────┬─────────┘
                                           │ HTTP API
                                           ▼
                                  ┌──────────────────┐
                                  │  Cursor Extension│
                                  │  (extension.js)  │
                                  └────────┬─────────┘
                                           │ WebView
                                           ▼
                                  ┌──────────────────┐
                                  │   User Interface │
                                  │   (Sidebar)      │
                                  └──────────────────┘
```

**Workflow:**

1. AI Agent calls MCP Server's `interactive_feedback` tool via stdio
2. MCP Server creates feedback request, exposes via HTTP API
3. Cursor extension polls for requests, displays in sidebar WebView
4. User inputs feedback (text/images/files), submits via HTTP
5. MCP Server returns feedback result to AI Agent

## 📊 Comparison with mcp-feedback-enhanced

| Feature | mcp-feedback-enhanced | cursor-feedback |
|---------|:--------------------:|:---------------:|
| MCP Tool | ✅ | ✅ |
| Text Feedback | ✅ | ✅ |
| Image Upload | ✅ | ✅ |
| Image Paste | ✅ | ✅ |
| File/Folder Selection | ❌ | ✅ |
| Markdown Rendering | ✅ | ✅ |
| Multi-language | ✅ | ✅ |
| Auto-retry on Timeout | ✅ | ✅ |
| **IDE Sidebar Integration** | ❌ | ✅ |
| **Multi-window Project Isolation** | ❌ | ✅ |
| Command Execution | ✅ | ⏳ |

## 🛠️ Development

```bash
# Clone the project
git clone https://github.com/jianger666/cursor-feedback-extension.git
cd cursor-feedback-extension

# Install dependencies
npm install

# Compile
npm run compile

# Watch mode
npm run watch

# Run lint
npm run lint

# Package extension
npx vsce package
```

## 📄 License

MIT

## 🙏 Acknowledgments

- [mcp-feedback-enhanced](https://github.com/Minidoracat/mcp-feedback-enhanced) - Original Python implementation
- [Model Context Protocol](https://modelcontextprotocol.io/) - MCP Protocol

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [jianger666](https://github.com/jianger666)
- **Source:** [jianger666/cursor-feedback-extension](https://github.com/jianger666/cursor-feedback-extension)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-jianger666-cursor-feedback-extension
- Seller: https://agentstack.voostack.com/s/jianger666
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
