mowan-mcp-feedback
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mowan-mcp-feedbackI need your feedback before continuing with the code changes."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mowan-mcp-feedback(交互反馈 MCP)
基于: Fábio Ferreira 的 interactive-feedback-mcp ⭐ 和 Minidoracat 的 mcp-feedback-enhanced UI 设计参考: sanshao85/mcp-feedback-collector
当前仓库为二次改造版本,已切换到你自己的 GitHub 仓库与 PyPI 发布链路,同时继续保留上游来源说明和 MIT 许可证。
🎯 核心概念
这是一个 MCP 服务器,建立反馈导向的开发工作流程,提供 Web UI 界面,完美适配本地、SSH 远程开发环境与 WSL (Windows Subsystem for Linux) 环境。通过引导 AI 与用户确认而非进行推测性操作,可将多次工具调用合并为单次反馈导向请求,大幅节省平台成本并提升开发效率。
支持平台: Cursor | Cline | Windsurf | Augment | Trae
🔄 工作流程
AI 调用 →
mowan-mcp-feedback工具界面启动 → 自动打开浏览器界面
智能交互 → 提示词选择、文字输入、图片上传、自动提交
即时反馈 → WebSocket 连接即时传递信息给 AI
会话追踪 → 自动记录会话历史与统计
流程继续 → AI 根据反馈调整行为或结束任务
Related MCP server: Interactive Feedback MCP
🌟 主要功能
说明:下文如果出现
v2.x,指的是上游功能最早引入的版本号;本仓库当前从1.0.0开始重新编号。
🌐 Web UI 界面
轻量级浏览器界面:无需额外 GUI 依赖,适合各种环境
环境自动检测:智能识别 SSH Remote、WSL 等特殊环境
跨平台支持:Windows、macOS、Linux 全平台兼容
📝 智能工作流程
提示词管理:常用提示词的 CRUD 操作、使用统计、智能排序
自动定时提交:1-86400 秒弹性计时器,支持暂停、恢复、取消,新增暂停/开始按钮控制
自动执行命令(v2.6.0):新建会话和提交后可自动执行预设命令,提升开发效率
会话管理追踪:本地文件存储、隐私控制、历史导出(支持 JSON、CSV、Markdown 格式)、即时统计、弹性超时设定
连接监控:WebSocket 状态监控、自动重连、品质指示
AI 工作摘要 Markdown 显示:支持丰富的 Markdown 语法渲染,包含标题、粗体、代码区块、列表、链接等格式,提升内容可读性
🎨 现代化体验
响应式设计:适配不同屏幕尺寸,模块化 JavaScript 架构
音效通知:内建多种音效、支持自定义音效上传、音量控制
系统通知(v2.6.0):重要事件(如自动提交、会话超时等)的系统级即时提醒
智能记忆:输入框高度记忆、一键复制、设置持久化
多语言支持:简体中文、英文、繁体中文,即时切换
🖼️ 图片与媒体
全格式支持:PNG、JPG、JPEG、GIF、BMP、WebP
便捷上传:拖拽文件、剪贴板粘贴(Ctrl+V)
无限制处理:支持任意大小图片,自动智能处理
🌐 界面预览
Web UI 界面
Web UI 界面 - 提供提示词管理、自动提交、会话追踪等智能功能
快捷键支持
Ctrl+Enter(Windows/Linux)/Cmd+Enter(macOS):提交反馈(主键盘与数字键盘皆支持)Ctrl+V(Windows/Linux)/Cmd+V(macOS):直接粘贴剪贴板图片Ctrl+I(Windows/Linux)/Cmd+I(macOS):快速聚焦输入框 (感谢 @penn201500)
🚀 快速开始
1. 安装与测试
# 安装 uv(如果尚未安装)
pip install uv2. 配置 MCP
基本配置(适合大多数用户):
{
"mcpServers": {
"mowan-feedback": {
"command": "uvx",
"args": ["mowan-mcp-feedback"],
"timeout": 600,
"autoApprove": ["interactive_feedback"]
}
}
}进阶配置(需要自定义环境):
{
"mcpServers": {
"mowan-feedback": {
"command": "uvx",
"args": ["mowan-mcp-feedback"],
"timeout": 600,
"env": {
"MCP_DEBUG": "false",
"MCP_WEB_HOST": "127.0.0.1",
"MCP_WEB_PORT": "8765",
"MCP_LANGUAGE": "zh-CN"
},
"autoApprove": ["interactive_feedback"]
}
}
}3. 快捷使用
安装并配置完成后,在 Cursor 中输入以下命令即可启动交互反馈:
/user-mowan-feedback/chatAI 会自动调用 interactive_feedback 工具,打开 Web UI 并等待你的反馈。
提示:为获得最佳效果,建议在 AI 助手的规则中添加:
注意在任务完成前根据 mowan-mcp-feedback 工具的要求进行工具调用
⚙️ 高级设置
环境变量
变量 | 用途 | 值 | 默认 |
| 调试模式 |
|
|
| Web UI 主机绑定 | IP 地址或主机名 |
|
| Web UI 端口 |
|
|
| 强制指定界面语言 |
| 自动检测 |
MCP_WEB_HOST 说明:
127.0.0.1(默认):仅本地访问,安全性较高0.0.0.0:允许远程访问,适用于 SSH 远程开发环境
MCP_LANGUAGE 说明:
用于强制指定界面语言,覆盖系统自动检测
支持的语言代码:
zh-TW:繁体中文zh-CN:简体中文en:英文
语言检测优先顺序:
用户在界面中保存的语言设置(最高优先级)
MCP_LANGUAGE环境变量系统环境变量(LANG、LC_ALL 等)
系统默认语言
回退到默认语言(繁体中文)
测试选项
# 版本查询
uvx mowan-mcp-feedback version # 检查版本
# 界面测试
uvx mowan-mcp-feedback test --web # 测试 Web UI (自动持续运行)
# 调试模式
MCP_DEBUG=true uvx mowan-mcp-feedback test
# 指定语言测试
MCP_LANGUAGE=en uvx mowan-mcp-feedback test --web # 强制使用英文界面
MCP_LANGUAGE=zh-TW uvx mowan-mcp-feedback test --web # 强制使用繁体中文
MCP_LANGUAGE=zh-CN uvx mowan-mcp-feedback test --web # 强制使用简体中文开发者安装
git clone https://github.com/limowan/mowan-mcp-feedback.git
cd mowan-mcp-feedback
uv sync本地测试方式
# 功能测试
make test-func # 标准功能测试
make test-web # Web UI 测试 (持续运行)
# 或直接使用指令
uv run python -m mcp_feedback_enhanced test # 标准功能测试
uvx --no-cache --with-editable . mowan-mcp-feedback test --web # Web UI 测试 (持续运行)
# 单元测试
make test # 运行所有单元测试
make test-fast # 快速测试 (跳过慢速测试)
make test-cov # 测试并生成覆盖率报告
# 代码质量检查
make check # 完整代码质量检查
make quick-check # 快速检查并自动修复测试说明
功能测试:测试 MCP 工具的完整功能流程
单元测试:测试各个模块的独立功能
覆盖率测试:生成 HTML 覆盖率报告到
htmlcov/目录质量检查:包含 linting、格式化、类型检查
🆕 版本更新记录
📋 完整版本更新记录: RELEASE_NOTES/CHANGELOG.zh-CN.md
当前版本系列亮点(v1.0.x)
🎨 新增浅色主题:保留深色主题,同时新增白色/浅色皮肤切换
📦 发布名统一:对外统一使用
mowan-mcp-feedback作为包名和命令名🔄 发布链路打通:已接入 GitHub Actions + PyPI Trusted Publishing 自动发布
🧩 业务逻辑保持稳定:本次以命名整理、主题增强、发布链路为主,不改核心反馈流程
🐛 常见问题
🌐 SSH Remote 环境问题
Q: SSH Remote 环境下浏览器无法启动或无法访问 A: 提供两种解决方案:
方案一:环境变量设置(v2.5.5 推荐)
在 MCP 配置中设置 "MCP_WEB_HOST": "0.0.0.0" 允许远程访问:
{
"mcpServers": {
"mowan-feedback": {
"command": "uvx",
"args": ["mowan-mcp-feedback"],
"timeout": 600,
"env": {
"MCP_WEB_HOST": "0.0.0.0",
"MCP_WEB_PORT": "8765"
},
"autoApprove": ["interactive_feedback"]
}
}
}然后在本地浏览器打开:http://[远程主机IP]:8765
方案二:SSH 端口转发(传统方法)
使用默认配置(
MCP_WEB_HOST:127.0.0.1)设置 SSH 端口转发:
VS Code Remote SSH: 按
Ctrl+Shift+P→ "Forward a Port" → 输入8765Cursor SSH Remote: 手动添加端口转发规则(端口 8765)
在本地浏览器打开:
http://localhost:8765
详细解决方案请参考:SSH Remote 环境使用指南
Q: 为什么没有接收到 MCP 新的反馈? A: 可能是 WebSocket 连接问题。解决方法:直接重新刷新浏览器页面。
Q: 为什么没有调用出 MCP? A: 请确认 MCP 工具状态为绿灯。解决方法:反复开关 MCP 工具,等待几秒让系统重新连接。
Q: Augment 无法启动 MCP A: 解决方法:完全关闭并重新启动 VS Code 或 Cursor,重新打开项目。
🔧 一般问题
Q: 如何使用旧版 PyQt6 GUI 界面?
A: 上游在 v2.4.0 已完全移除 PyQt6 GUI 依赖。如需使用旧版 GUI,请改用上游历史包:uvx gl-mcp-feedback@2.3.0
注意:旧版本不包含新功能(提示词管理、自动提交、会话管理、桌面应用程序等)。
Q: 出现 "Unexpected token 'D'" 错误
A: 调试输出干扰。设置 MCP_DEBUG=false 或移除该环境变量。
Q: 中文字符乱码 A: 已在上游 v2.0.3 修复。使用你自己的发布包时,请更新到你发布的最新版本。
Q: 多屏幕环境下窗口消失或定位错误 A: 已在 v2.1.1 修复。进入「⚙️ 设置」标签页,勾选「总是在主屏幕中心显示窗口」即可解决。特别适用于 T 字型屏幕排列等复杂多屏幕配置。
Q: 图片上传失败 A: 检查文件格式(PNG/JPG/JPEG/GIF/BMP/WebP)。系统支持任意大小的图片文件。
Q: Web UI 无法启动 A: 检查防火墙设置或尝试使用不同的端口。
Q: UV Cache 占用过多磁盘空间
A: 由于频繁使用 uvx 命令,cache 可能会累积到数十 GB。建议定期清理:
# 查看 cache 大小和详细信息
python scripts/cleanup_cache.py --size
# 预览清理内容(不实际清理)
python scripts/cleanup_cache.py --dry-run
# 执行标准清理
python scripts/cleanup_cache.py --clean
# 强制清理(会尝试关闭相关程序,解决 Windows 文件占用问题)
python scripts/cleanup_cache.py --force
# 或直接使用 uv 命令
uv cache clean详细说明请参考:Cache 管理指南
Q: AI 模型无法解析图片 A: 各种 AI 模型(包括 Gemini Pro 2.5、Claude 等)在图片解析上可能存在不稳定性,表现为有时能正确识别、有时无法解析上传的图片内容。这是 AI 视觉理解技术的已知限制。建议:
确保图片质量良好(高对比度、清晰文字)
多尝试几次上传,通常重试可以成功
如持续无法解析,可尝试调整图片大小或格式
🙏 致谢
🌟 支持原作者
Fábio Ferreira - X @fabiomlferreira 原始项目: noopstudios/interactive-feedback-mcp
如果您觉得有用,请:
设计灵感
sanshao85 - mcp-feedback-collector
贡献者
penn201500 - GitHub @penn201500
🎯 自动聚焦输入框功能 (PR #39)
leo108 - GitHub @leo108
🌐 SSH 远程开发支持 (
MCP_WEB_HOST环境变量) (PR #113)
Alsan - GitHub @Alsan
🍎 macOS PyO3 编译配置支持 (PR #93)
fireinice - GitHub @fireinice
📝 工具文档优化 (LLM 指令移至 docstring) (PR #105)
社群支援
当前仓库 Issues: GitHub Issues
上游 PyPI: gl-mcp-feedback
📄 授权
MIT 授权条款 - 详见 LICENSE 档案
📈 Star History
🌟 欢迎 Star 并分享给更多开发者!
Available Tools
2 toolsget_system_infoA
获取系统环境信息
Returns: str: JSON 格式的系统信息
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses that the tool returns system information in JSON format, which is the primary behavior. It does not mention any side effects or prerequisites, but for a simple read-only info tool, this is reasonable. The description could add more detail about what 'system info' includes, but it is not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using two short sentences to convey purpose and return type. It is front-loaded and every word earns its place. No unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and an output schema present. The description mentions the return format (JSON string), which suffices for a low-complexity tool. It is complete given the low requirements and the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, and the input schema is empty. According to the baseline for 0-param tools, a score of 4 is appropriate. The description need not explain parameters because there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '获取系统环境信息' (get system environment information), which specifies the verb and resource. It is distinct from the only sibling tool, interactive_feedback, which serves a different purpose. The tool's name aligns with its description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. However, the purpose implies usage: whenever system environment information is needed. Since there is only one sibling with a clearly different function, the implied usage is sufficient but not explicitly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interactive_feedbackA
Collect interactive feedback from users via a Web UI.
Opens a browser-based interface where users can review the AI's work summary, type text feedback, and upload images.
Args: project_directory: Project directory path for context. summary: Markdown-formatted summary of AI work for user review. timeout: Seconds to wait for user feedback (default 600).
Returns: ToolResult: TextContent with user's text feedback and MCPImage objects for any uploaded images.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | No | AI 工作完成的摘要说明 | 我已完成了您请求的任务。 |
| timeout | No | 等待用户反馈的超时时间(秒) | |
| project_directory | No | 项目目录路径 | . |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that a browser-based UI is opened, that it waits for user feedback with a timeout, and that it returns both text and image feedback. This is reasonably transparent, though it does not detail potential side effects like blocking or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear summary sentence, followed by a brief Args and Returns section. Every sentence serves a purpose. The front-loaded summary gives immediate understanding of the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description provides a Returns section that explains the ToolResult structure with TextContent and MCPImage objects. Combined with parameter details and the user flow, the description is complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the baseline is 3. The description adds valuable meaning beyond the schema by clarifying that 'summary' is Markdown-formatted, that 'project_directory' provides context, and that 'timeout' waits for feedback. This enhances the schema's basic definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Collect interactive feedback from users via a Web UI') and resource. It also describes the user interaction flow (review summary, type text, upload images). This distinguishes it from the only sibling tool, get_system_info, which serves a different purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (when collecting user feedback on AI work). It does not explicitly state exclusions or alternative tools, but since the sibling is unrelated, the guidance is sufficient. It could have been stronger with an explicit 'use this when' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools are completely unrelated in purpose, so there is no ambiguity or overlap between them. An agent can easily distinguish interactive_feedback from get_system_info.
The naming pattern is inconsistent: 'interactive_feedback' uses an adjective-noun format while 'get_system_info' uses a verb-noun format. This mixes conventions and makes the tool names less predictable.
With only two tools, the server feels sparse and underdeveloped. The inclusion of an unrelated system info tool further dilutes the focus, making the count seem poorly scoped for a feedback-focused server.
The domain appears to be feedback collection, but the surface is incomplete: only interactive feedback is supported, with no way to programmatically list, retrieve, or manage feedback. The system info tool is off-topic and does not fill any obvious gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn advanced MCP server that provides interactive feedback mechanisms with support for various feedback types, multi-language capabilities, and team collaboration features for AI tools like Cursor, Cline, and Windsurf.41MIT
- FlicenseBqualityDmaintenanceMCP server that enables human-in-the-loop workflow in AI-assisted development tools by allowing users to provide direct feedback to AI agents without consuming additional premium requests.11
- FlicenseAqualityNot gradedmaintenanceAn MCP server that enables users to review and refine AI outputs through a local web UI, returning feedback as free tool call results to save on GitHub Copilot premium requests. It allows for multiple rounds of iterative improvements within a single request session.130
- FlicenseAqualityAmaintenanceMCP server that establishes feedback-oriented development workflows with dual Web UI and desktop application interfaces, enabling AI to confirm with users via prompts and real-time feedback to reduce speculative operations and improve efficiency.2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/limowan/mowan-mcp-feedback'
If you have feedback or need assistance with the MCP directory API, please join our Discord server