使用说明
mcp反馈节点
一个基于web的MCP(模型上下文协议)交互式反馈服务器,专为无头Linux服务器设计。将桌面GUI(PySide6)方法替换为基于浏览器的界面,该界面支持完整的CJK输入和双语UI(英语/中文)。
为什么是这个项目?
原版 交互式反馈mcp 使用PySide6(Qt)显示桌面反馈对话框。这在无头Linux服务器上不起作用,即使使用X11转发,Windows输入法(IME)也不能在转发的窗口中使用。
mcp反馈节点 通过将反馈UI作为网页提供来解决这个问题。本地计算机上的浏览器以本机方式处理所有内容,包括中文/日文/韩文输入。
建筑
┌───────────────────────────────────────────────────────────────┐
│ Linux Server (headless) │
│ │
│ ┌──────────────┐ HTTP (127.0.0.1) ┌──────────────────┐ │
│ │ server.py │ ───────────────────> │ web_feedback.py │ │
│ │ (MCP Server)│ │ (Web Server) │ │
│ │ stdio │ <─────────────────── │ port 8765 │ │
│ └──────┬───────┘ feedback result └────────┬─────────┘ │
│ │ │ │
│ │ stdin/stdout │ HTTP │
└─────────┼────────────────────────────────────────┼────────────┘
│ │
│ SSH tunnel │ LAN
│ │
┌─────────┼────────────────────────────────────────┼────────────┐
│ ▼ Local Machine (Windows/Mac) ▼ │
│ ┌──────────────┐ ┌────────────────────┐ │
│ │ Cursor IDE │ │ Browser │ │
│ │ │ │ http://IP:8765 │ │
│ └──────────────┘ │ Full IME support │ │
│ └────────────────────┘ │
└───────────────────────────────────────────────────────────────┘
运作原理
- Cursor IDE 调用
server.py通过SSH(MCP stdio传输)在Linux服务器上 - 当AI请求用户反馈时,
server.py发射web_feedback.py在客户端模式下 - 客户端向 Web服务器 (端口8765)通过HTTP API
- 这 浏览器 通过长轮询接收请求并显示反馈表单
- 用户在浏览器中键入反馈(完全支持本地IME)并提交
- Web服务器将结果返回给客户端,客户端将其写入临时文件
server.py读取结果并将其返回给Cursor
快速开始
Docker(推荐)
docker compose up -d
docker compose ps # STATUS should show "healthy"
容器使用 restart: unless-stopped,因此它将在系统重新启动后自动启动(只要启用了Docker)。
手动安装
python3 -m venv .venv
.venv/bin/pip install fastmcp pydantic
.venv/bin/python web_feedback.py --server
systemd服务
创建 /etc/systemd/system/mcp-web-feedback.service:
[Unit]
Description=MCP Web Feedback Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/path/to/mcp-feedback-nodesktop
ExecStart=/path/to/mcp-feedback-nodesktop/.venv/bin/python web_feedback.py --server
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now mcp-web-feedback
用法
1.启动Web服务器
使用上述任何方法进行部署。验证:
curl http://127.0.0.1:8765/api/status
# {"status": "running"}
2.打开浏览器(重要!)
引导到 http://<server-ip>:8765 在您的本地机器上。
您必须始终保持此浏览器选项卡打开。 该页面将通过长轮询自动接收新的反馈请求,无需手动刷新。当新请求到达时,选项卡标题将闪烁,浏览器通知将出现(如果允许)。
注: web服务器无法自动打开本地计算机上的浏览器。您需要手动打开一次URL。之后,只需保持标签打开。
3.配置光标MCP
添加到光标MCP配置(.cursor/mcp.json).
对于同一台机器上的Docker部署:
{
"mcpServers": {
"interactive-feedback": {
"command": "docker",
"args": ["exec", "-i", "mcp-web-feedback", "python", "server.py"],
"timeout": 600,
"autoApprove": ["interactive_feedback"]
}
}
}
对于通过SSH进行的远程访问(例如,从Windows计算机):
{
"mcpServers": {
"interactive-feedback": {
"command": "ssh",
"args": [
"your-server",
"docker exec -i mcp-web-feedback python server.py"
],
"timeout": 600,
"autoApprove": ["interactive_feedback"]
}
}
}
提示: 这
-i旗在docker exec -i需要保持stdin打开以进行MCP stdio传输。
4.特点
- 双语用户界面(英语/中文),具有自动语言检测和手动切换功能
- 当新请求到达时,选项卡标题会闪烁
- 浏览器通知支持(需要权限)
- 进入 提交, Shift+Enter 用于换行
- “无反馈”按钮,用于快速空提交
- 提交后页面自动返回等待状态
web_feedback.py 双模式
# Server mode: start the persistent web server
python web_feedback.py --server
# Client mode: send a request and wait for response
python web_feedback.py \
--project-directory /path/to/project \
--prompt "Please provide feedback" \
--output-file /tmp/result.json
在客户端模式下,如果没有检测到服务器,它会自动启动一个守护进程。
API 参考
| 方法 | 路径 | 描述 |
|---|---|---|
| 得到 | / |
反馈页面(HTML) |
| 得到 | /api/status |
健康检查 |
| 得到 | /api/poll |
新请求的长轮询(超时30秒) |
| 职位 | /api/request |
创建新的反馈请求 |
| 职位 | /api/submit |
提交反馈 |
| 职位 | /api/get_response |
阻塞,直到提交反馈(300秒超时) |
文件结构
| 文件 | 目的 |
|---|---|
server.py |
MCP服务器,通过stdio与Cursor通信 |
web_feedback.py |
网络反馈服务器+客户端(双模) |
Dockerfile |
Docker镜像构建文件 |
docker-compose.yml |
Docker编写配置 |
故障排除
| 问题 | 解决方案 |
|---|---|
| 浏览器无法加载页面 | 检查端口8765的防火墙规则 |
| 客户端连接超时 | 使用 127.0.0.1 而不是 localhost (IPv6问题) |
| Docker健康检查失败 | 运行 docker logs mcp-web-feedback |
| 反馈页面无响应 | 刷新浏览器选项卡或重新启动服务 |
学分
基于 交互式反馈mcp 作者:Fábio Ferreira(麻省理工学院许可证)。修改为使用基于web的UI而不是PySide6桌面GUI。
