fork 自 https://github.com/noopstudios/interactive-feedback-mcp.git
- 优化UI样式 - 提升用户界面美观性和用户体验,采用深色主题设计
- 新增 task_id 参数 - 为每个任务提供明确的标识符,在界面上以蓝色标签显示,帮助用户区分不同任务
- 粘贴格式自动清除 - 输入框支持粘贴时自动清除原始文本格式,保持统一的白色文字样式
- 新增自动在规定时间内重新调用工具以延续对话 - Cursor等IDE有会话超时时间限制,当超时后在该工具中输入提交后会直接报错,在超时时间内进行自动重新调用可以使会话始终保持活跃,持续等待用户输入新的下一步指令,从而达到一次请求在较长一段时间内仍能完成多次任务的需求
- 新增显示当前项目以用于多窗口时的区分 - 便于在多项目同时开发时快速识别当前操作的项目
- 支持环境变量配置 - 支持通过环境变量配置自动重新调用时间
- "确认方案后再执行"功能 - 当勾选该选项时,AI会在执行前先输出执行计划和方案,然后通过交互反馈窗口询问用户是否满意,确保方案经过用户确认后再执行,避免执行不合适的操作
界面包含项目名称、任务标识符(蓝色标签)、深色主题设计和自动格式清除功能
这是一个MCP Server,用于在AI辅助开发工具中实现人机交互工作流,如Cursor。该服务器允许您运行命令、查看输出,并直接向AI提供文本反馈。也兼容Cline和Windsurf。
通过引导AI助手在进行推测性、高成本的工具调用前先与用户确认,这个模块可以大幅减少Cursor等平台上的高级请求次数(例如OpenAI工具调用)。在某些情况下,它可以将原本需要25个工具调用的工作整合为单个反馈感知请求——节省资源并提升性能。
-
先决条件:
- 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(这将创建虚拟环境并安装包)
-
运行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请求的超时时间,后者控制用户界面的自动反馈时间,用于保持活跃。
此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界面:
uv run fastmcp dev server.py这将打开Web界面并允许您与MCP工具交互进行测试。
以下是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操作的透明度和用户控制力,避免了执行不符合预期的操作。
