Skip to content

shilong20/interactive-feedback-mcp

 
 

Repository files navigation

Interactive Feedback MCP

fork 自 https://github.com/noopstudios/interactive-feedback-mcp.git

🚀 优化和更改

  1. 优化UI样式 - 提升用户界面美观性和用户体验,采用深色主题设计
  2. 新增 task_id 参数 - 为每个任务提供明确的标识符,在界面上以蓝色标签显示,帮助用户区分不同任务
  3. 粘贴格式自动清除 - 输入框支持粘贴时自动清除原始文本格式,保持统一的白色文字样式
  4. 新增自动在规定时间内重新调用工具以延续对话 - Cursor等IDE有会话超时时间限制,当超时后在该工具中输入提交后会直接报错,在超时时间内进行自动重新调用可以使会话始终保持活跃,持续等待用户输入新的下一步指令,从而达到一次请求在较长一段时间内仍能完成多次任务的需求
  5. 新增显示当前项目以用于多窗口时的区分 - 便于在多项目同时开发时快速识别当前操作的项目
  6. 支持环境变量配置 - 支持通过环境变量配置自动重新调用时间
  7. "确认方案后再执行"功能 - 当勾选该选项时,AI会在执行前先输出执行计划和方案,然后通过交互反馈窗口询问用户是否满意,确保方案经过用户确认后再执行,避免执行不合适的操作
  8. 🆕 Web版本支持 - 将GUI界面转换为Web版本,通过HTTP端口转发访问,无需X11转发,跨平台兼容,响应更快

优化后的界面示例

界面包含项目名称、任务标识符(蓝色标签)、深色主题设计和自动格式清除功能

📖 项目简介

这是一个MCP Server,用于在AI辅助开发工具中实现人机交互工作流,如Cursor。该服务器允许您运行命令、查看输出,并直接向AI提供文本反馈。也兼容ClineWindsurf

💡 为什么使用这个工具?

通过引导AI助手在进行推测性、高成本的工具调用前先与用户确认,这个模块可以大幅减少Cursor等平台上的高级请求次数(例如OpenAI工具调用)。在某些情况下,它可以将原本需要25个工具调用的工作整合为单个反馈感知请求——节省资源并提升性能。

🌐 Web版本使用说明

访问方式

本项目支持两种界面模式:

1. GUI版本(原版)

使用PySide6构建的桌面GUI界面,需要X11转发支持。

2. Web版本(推荐)

使用FastAPI + WebSocket构建的Web界面,通过HTTP端口转发访问,无需X11设置。

Web版本优势

  • 无需X11转发 - 避免复杂的图形转发配置
  • 跨平台兼容 - 任何现代浏览器都能使用
  • 响应更快 - 基于Web标准,渲染性能更好
  • 远程友好 - 支持SSH端口转发,延迟更低
  • 功能完整 - 保留所有原GUI功能

快速开始

1. 启动MCP工具

当您调用interactive_feedback工具时,系统会自动:

  • 启动Web服务器
  • 创建会话
  • 输出访问URL

2. 端口转发

在本地终端运行(或者IDE自动转发):

# 如果服务器显示端口为XXXXX
ssh -L XXXXX:127.0.0.1:XXXXX user@remote-server

3. 访问界面

在浏览器中打开:http://127.0.0.1:XXXXX/

Web界面功能

主要特性

  • 🎯 项目识别 - 显示当前项目名称
  • 📋 任务标签 - 蓝色标签显示任务ID
  • 实时倒计时 - 显示剩余提交时间
  • 💬 反馈输入 - 支持Ctrl+Enter快捷提交
  • 📝 格式清除 - 粘贴时自动清除格式
  • ⚙️ 配置管理 - 保存项目特定设置
  • 🖥️ 命令控制台 - 可切换的命令执行界面

实时通信

  • WebSocket连接提供实时状态更新
  • 自动超时处理和会话延续
  • 浏览器标签页间会话同步

安装说明 (Cursor)

  1. 先决条件:

    • Python 3.11 或更新版本
    • uv (Python包管理器)。安装方法:
      • Windows: pip install uv
      • Linux/Mac: curl -LsSf https://astral.sh/uv/install.sh | sh
  2. 获取代码:

    • 克隆此仓库: git clone https://github.com/your-username/interactive-feedback-mcp.git
    • 或下载源代码
  3. 进入目录:

    • cd path/to/interactive-feedback-mcp
  4. 安装依赖:

    • uv sync (这将创建虚拟环境并安装包)

    Web版本额外依赖

    • fastapi - Web框架
    • uvicorn[standard] - ASGI服务器
    • websockets - WebSocket支持
    • anyio>=4.4.0 - 异步处理支持
    • requests - HTTP客户端
  5. 运行MCP服务器:

    • uv run server.py
  6. 在Cursor中配置:

    • Cursor通常允许在其设置中指定自定义MCP服务器。您需要将Cursor指向此正在运行的服务器。具体机制可能有所不同,请查阅Cursor文档了解如何添加自定义MCP。

    • 手动配置(例如通过mcp.json 请将/Users/fabioferreira/Dev/scripts/interactive-feedback-mcp路径更改为您系统中克隆仓库的实际路径。

      {
        "mcpServers": {
          "interactive-feedback-mcp": {
            "command": "uv",
            "args": [
              "--directory",
              "/Users/your-path/interactive-feedback-mcp",
              "run",
              "server.py"
            ],
            "timeout": 600,
            "autoApprove": [
              "interactive_feedback"
            ]
          }
        }
      }

对于 Cline / Windsurf

类似设置原则适用。您可以在相应工具的MCP设置中配置服务器命令(例如使用正确--directory参数指向项目目录的uv run server.py),使用interactive-feedback-mcp作为服务器标识符。

配置

环境变量配置

您可以通过设置环境变量来自定义行为:

  • INTERACTIVE_FEEDBACK_TIMEOUT_SECONDS: 设置自动反馈的超时时间(秒),默认为290秒(约4分50秒)。这个值控制用户界面显示多长时间后自动提交反馈。

例如,在您的MCP配置文件(如 ~/.cursor/mcp.json 或其他IDE的MCP配置)中可以这样设置:

{
  "mcpServers": {
    "interactive-feedback-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/interactive-feedback-mcp",
        "run",
        "server.py"
      ],
      "env": {
        "INTERACTIVE_FEEDBACK_TIMEOUT_SECONDS": "600"
      },
      "timeout": 60000,
      "autoApprove": [
        "interactive_feedback"
      ]
    }
  }
}

配置建议

  • 快速反馈场景:设置较短的超时时间,如 90120 秒,适合简单的确认操作
  • 复杂任务场景:设置较长的超时时间,如 600900 秒,给用户更多时间考虑和输入详细反馈
  • 默认值:如果不设置此环境变量,默认使用 290 秒(约4分50秒)(cursor 会话超时时间5分钟)

注意timeout 字段(这里设置为60000毫秒)是MCP客户端的超时设置,与自动反馈超时是不同的概念。前者控制整个MCP请求的超时时间,后者控制用户界面的自动反馈时间,用于保持活跃。

项目配置

Web版本(推荐)

  • 存储位置: ~/.interactive-feedback/ 目录下的JSON文件
  • 按项目哈希: 每个项目目录对应一个独立的配置文件
  • 配置内容:
    • 要运行的命令
    • 是否在下次启动时为此项目自动执行命令(参见"Execute automatically on next run"复选框)
    • 是否启用"确认方案后再执行"功能(参见"需要先确认方案后再执行"复选框)
    • 命令部分的可见性状态(显示/隐藏)(切换时立即保存)
  • 多项目支持: 同一系统上多个项目的配置独立保存
  • 迁移友好: JSON格式便于备份和同步

GUI版本(原版)

此MCP服务器使用Qt的QSettings按项目存储配置。这包括:

  • 要运行的命令
  • 是否在下次启动时为此项目自动执行命令(参见"Execute automatically on next run"复选框)
  • 是否启用"确认方案后再执行"功能(参见"需要先确认方案后再执行"复选框)
  • 命令部分的可见性状态(显示/隐藏)(切换时立即保存)
  • 窗口几何和状态(一般UI偏好)

这些设置通常存储在特定于平台的位置(例如Windows上的注册表、macOS上的plist文件、Linux上~/.config~/.local/share中的配置文件),组织名称为"FabioFerreira",应用程序名称为"InteractiveFeedbackMCP",每个项目目录有唯一的组。

UI中的"Save Configuration"按钮主要保存命令输入字段中输入的当前命令、活动项目的"Execute automatically on next run"复选框状态以及"需要先确认方案后再执行"复选框状态。命令部分的可见性在切换时自动保存。应用程序关闭时保存一般窗口大小和位置。

开发

Web版本测试

要在开发模式下测试Web界面:

# 启动开发服务器并测试Web界面
uv run fastmcp dev server.py

GUI版本测试

要测试原始GUI界面:

# 直接运行feedback_ui.py(需要X11环境)
uv run python feedback_ui.py --project-directory /path/to/project --prompt "测试消息" --task-id TEST_GUI --output-file test_result.json

Web开发调试

  • 端口检查: Web服务器会自动选择可用端口
  • 会话管理: 支持多并发会话
  • 实时日志: WebSocket连接提供实时状态反馈
  • 错误处理: 完善的异常处理和用户友好的错误信息

可用工具

以下是AI助手如何调用interactive_feedback工具的示例:

<use_mcp_tool>
  <server_name>interactive-feedback-mcp</server_name>
  <tool_name>interactive_feedback</tool_name>
  <arguments>
    {
      "project_directory": "/path/to/your/project",
      "summary": "I've implemented the changes you requested and refactored the main module.",
      "task_id": "FEATURE_DEV_001"
    }
  </arguments>
</use_mcp_tool>

参数说明

  • project_directory (必需): 完整的项目目录路径
  • summary (必需): 简短的更改摘要或询问用户的问题
  • task_id (必需): 任务标识符,用于区分不同任务,在界面上以蓝色标签显示

task_id 参数帮助用户在多个并行任务中快速识别当前操作,避免混淆不同任务的反馈窗口。

"确认方案后再执行"功能详解

功能说明

"确认方案后再执行"是一个重要的安全和交互功能,当您在反馈界面中勾选"需要先确认方案后再执行"复选框时:

  1. 方案审查:AI会先输出详细的执行计划和方案
  2. 用户确认:AI会调用interactive_feedback工具打开确认窗口,询问用户是否满意该方案
  3. 条件执行:只有在用户确认满意后,AI才会继续执行方案
  4. 方案优化:如果用户不同意,AI会思考其他方案并再次请求确认

使用场景

  • 复杂任务:对于涉及多个步骤或可能产生重大影响的操作
  • 不确定性任务:当AI的执行方案可能不完全符合您的期望时
  • 安全敏感操作:如数据库修改、文件删除等高风险操作

工作流程示例

  1. 用户在AI对话中表达需求
  2. AI分析需求并准备执行方案
  3. AI调用interactive_feedback工具,用户勾选"需要先确认方案后再执行"
  4. 用户输入需求并提交
  5. AI收到包含确认指令的反馈
  6. AI输出详细的执行计划和方案
  7. AI调用interactive_feedback工具询问用户确认
  8. 用户在确认窗口中回复"是"或"否"
  9. 根据用户反馈,AI决定继续执行或重新思考方案

配置选项

该功能可以通过UI中的复选框进行配置:

  • 启用:勾选"需要先确认方案后再执行"复选框
  • 保存:设置会自动保存到项目配置中
  • 恢复:下次打开同一项目时会恢复之前的设置

这个功能确保了AI操作的透明度和用户控制力,避免了执行不符合预期的操作。

About

Interactive User Feedback MCP-WEB

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%