基于Web的交互式反馈服务

一个基于Web的交互式反馈服务器,用于无头Linux服务器,替代传统的桌面GUI方法,支持CJK输入和双语UI。

  • by 0xffff87
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 0xffff87/mcp-feedback-nodesktop

使用说明

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 │    │
│                                     └────────────────────┘    │
└───────────────────────────────────────────────────────────────┘

运作原理

  1. Cursor IDE 调用 server.py 通过SSH(MCP stdio传输)在Linux服务器上
  2. 当AI请求用户反馈时, server.py 发射 web_feedback.py 在客户端模式下
  3. 客户端向 Web服务器 (端口8765)通过HTTP API
  4. 这 浏览器 通过长轮询接收请求并显示反馈表单
  5. 用户在浏览器中键入反馈(完全支持本地IME)并提交
  6. Web服务器将结果返回给客户端,客户端将其写入临时文件
  7. 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。