fork 自 https://github.com/noopstudios/interactive-feedback-mcp.git
- 优化UI样式 - 提升用户界面美观性和用户体验,采用深色主题设计
- 新增 task_id 参数 - 为每个任务提供明确的标识符,在界面上以蓝色标签显示,帮助用户区分不同任务
- 粘贴格式自动清除 - 输入框支持粘贴时自动清除原始文本格式,保持统一的白色文字样式
- 新增自动在规定时间内重新调用工具以延续对话 - Cursor等IDE有会话超时时间限制,当超时后在该工具中输入提交后会直接报错,在超时时间内进行自动重新调用可以使会话始终保持活跃,持续等待用户输入新的下一步指令,从而达到一次请求在较长一段时间内仍能完成多次任务的需求
- 新增显示当前项目以用于多窗口时的区分 - 便于在多项目同时开发时快速识别当前操作的项目
- 支持环境变量配置 - 支持通过环境变量配置自动重新调用时间
- "确认方案后再执行"功能 - 当勾选该选项时,AI会在执行前先输出执行计划和方案,然后通过交互反馈窗口询问用户是否满意,确保方案经过用户确认后再执行,避免执行不合适的操作
- 🆕 Web版本支持 - 将GUI界面转换为Web版本,通过HTTP端口转发访问,无需X11转发,跨平台兼容,响应更快
界面包含项目名称、任务标识符(蓝色标签)、深色主题设计和自动格式清除功能
这是一个MCP Server,用于在AI辅助开发工具中实现人机交互工作流,如Cursor。该服务器允许您运行命令、查看输出,并直接向AI提供文本反馈。也兼容Cline和Windsurf。
通过引导AI助手在进行推测性、高成本的工具调用前先与用户确认,这个模块可以大幅减少Cursor等平台上的高级请求次数(例如OpenAI工具调用)。在某些情况下,它可以将原本需要25个工具调用的工作整合为单个反馈感知请求——节省资源并提升性能。
本项目支持两种界面模式:
使用PySide6构建的桌面GUI界面,需要X11转发支持。
使用FastAPI + WebSocket构建的Web界面,通过HTTP端口转发访问,无需X11设置。
- ✅ 无需X11转发 - 避免复杂的图形转发配置
- ✅ 跨平台兼容 - 任何现代浏览器都能使用
- ✅ 响应更快 - 基于Web标准,渲染性能更好
- ✅ 远程友好 - 支持SSH端口转发,延迟更低
- ✅ 功能完整 - 保留所有原GUI功能
当您调用interactive_feedback工具时,系统会自动:
- 启动Web服务器
- 创建会话
- 输出访问URL
在本地终端运行(或者IDE自动转发):
# 如果服务器显示端口为XXXXX
ssh -L XXXXX:127.0.0.1:XXXXX user@remote-server在浏览器中打开:http://127.0.0.1:XXXXX/
- 🎯 项目识别 - 显示当前项目名称
- 📋 任务标签 - 蓝色标签显示任务ID
- ⏰ 实时倒计时 - 显示剩余提交时间
- 💬 反馈输入 - 支持Ctrl+Enter快捷提交
- 📝 格式清除 - 粘贴时自动清除格式
- ⚙️ 配置管理 - 保存项目特定设置
- 🖥️ 命令控制台 - 可切换的命令执行界面
- WebSocket连接提供实时状态更新
- 自动超时处理和会话延续
- 浏览器标签页间会话同步
-
先决条件:
- Python 3.11 或更新版本
- uv (Python包管理器)。安装方法:
- Windows:
pip install uv - Linux/Mac:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Windows:
-
获取代码:
- 克隆此仓库:
git clone https://github.com/your-username/interactive-feedback-mcp.git - 或下载源代码
- 克隆此仓库:
-
进入目录:
cd path/to/interactive-feedback-mcp
-
安装依赖:
uv sync(这将创建虚拟环境并安装包)
Web版本额外依赖:
fastapi- Web框架uvicorn[standard]- ASGI服务器websockets- WebSocket支持anyio>=4.4.0- 异步处理支持requests- HTTP客户端
-
运行MCP服务器:
uv run server.py
-
在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" ] } } }
-
类似设置原则适用。您可以在相应工具的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"
]
}
}
}- 快速反馈场景:设置较短的超时时间,如
90或120秒,适合简单的确认操作 - 复杂任务场景:设置较长的超时时间,如
600或900秒,给用户更多时间考虑和输入详细反馈 - 默认值:如果不设置此环境变量,默认使用
290秒(约4分50秒)(cursor 会话超时时间5分钟)
注意:timeout 字段(这里设置为60000毫秒)是MCP客户端的超时设置,与自动反馈超时是不同的概念。前者控制整个MCP请求的超时时间,后者控制用户界面的自动反馈时间,用于保持活跃。
- 存储位置:
~/.interactive-feedback/目录下的JSON文件 - 按项目哈希: 每个项目目录对应一个独立的配置文件
- 配置内容:
- 要运行的命令
- 是否在下次启动时为此项目自动执行命令(参见"Execute automatically on next run"复选框)
- 是否启用"确认方案后再执行"功能(参见"需要先确认方案后再执行"复选框)
- 命令部分的可见性状态(显示/隐藏)(切换时立即保存)
- 多项目支持: 同一系统上多个项目的配置独立保存
- 迁移友好: JSON格式便于备份和同步
此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界面
uv run fastmcp dev server.py要测试原始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服务器会自动选择可用端口
- 会话管理: 支持多并发会话
- 实时日志: 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 参数帮助用户在多个并行任务中快速识别当前操作,避免混淆不同任务的反馈窗口。
"确认方案后再执行"是一个重要的安全和交互功能,当您在反馈界面中勾选"需要先确认方案后再执行"复选框时:
- 方案审查:AI会先输出详细的执行计划和方案
- 用户确认:AI会调用
interactive_feedback工具打开确认窗口,询问用户是否满意该方案 - 条件执行:只有在用户确认满意后,AI才会继续执行方案
- 方案优化:如果用户不同意,AI会思考其他方案并再次请求确认
- 复杂任务:对于涉及多个步骤或可能产生重大影响的操作
- 不确定性任务:当AI的执行方案可能不完全符合您的期望时
- 安全敏感操作:如数据库修改、文件删除等高风险操作
- 用户在AI对话中表达需求
- AI分析需求并准备执行方案
- AI调用
interactive_feedback工具,用户勾选"需要先确认方案后再执行" - 用户输入需求并提交
- AI收到包含确认指令的反馈
- AI输出详细的执行计划和方案
- AI调用
interactive_feedback工具询问用户确认 - 用户在确认窗口中回复"是"或"否"
- 根据用户反馈,AI决定继续执行或重新思考方案
该功能可以通过UI中的复选框进行配置:
- 启用:勾选"需要先确认方案后再执行"复选框
- 保存:设置会自动保存到项目配置中
- 恢复:下次打开同一项目时会恢复之前的设置
这个功能确保了AI操作的透明度和用户控制力,避免了执行不符合预期的操作。
