mcpField
Q
QA MCP (Probably will rename to vibecheck?)

QA MCP (Probably will rename to vibecheck?)

本地服务
groundng.site安全6648 周前更新

关于 QA MCP (Probably will rename to vibecheck?)

QA MCP 与 VibeShift 为同一项目,是面向 AI 编码助手的安全 Agent,通过 MCP 接入编码环境,检查 AI 生成的代码。项目还提供基于 Playwright 的网页测试录制、执行与发现功能。

主要功能

  1. 01AI 生成代码的自动安全扫描
  2. 02集成 Semgrep 进行静态分析(SAST)
  3. 03自然语言录制 Playwright 测试
  4. 04基于 JSON 文件的测试执行
  5. 05测试步骤发现与回归测试

适用场景

  1. 01检查 AI 生成的代码是否存在 SQL 注入等漏洞
  2. 02录制登录流程并作为回归测试运行
  3. 03爬取网站并获取建议的测试步骤

MCP 相关

以 MCP 服务形式运行,向 AI 编码助手暴露安全扫描与网页测试相关的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

VibeShift:Vibe 编码者的安全工程师

VibeShift 是一款智能安全 Agent,旨在与 AI 编码助手(如 Cursor、GitHub Copilot、Claude Code 等)无缝集成。它充当自动化安全工程师,分析 AI 生成的代码、识别漏洞,并协助 AI 驱动的修复,确保不安全的代码在进入代码库之前得到处理。它借助 MCP(Model Context Protocol),在现有的 AI 编码环境中实现流畅交互。

VibeShift MCP - Get secure, working code in 1 shot | Product Hunt Twitter 关注 README 配图

问题: AI 编码助手大幅加快了开发速度,但也可能生成存在隐蔽或明显安全漏洞的代码。手动审查所有 AI 生成的代码以查找安全缺陷既缓慢又容易出错,也无法跟上 AI 开发的速度。这种“氛围驱动开发”可能会让应用暴露于风险之中。

解决方案:GroundNG 的 VibeShift 填补了这一关键安全缺口,使 AI 编码助手能够:

  1. 自动分析 AI 生成的代码: 当 AI 助手生成或修改代码时,可触发 VibeShift,使用一系列工具(SAST、DAST 组件)和 AI 驱动的检查进行安全分析。
  2. 识别安全漏洞: 找出 AI 生成的代码片段或较大代码块中的常见和复杂漏洞(例如 XSS、SQLi、不安全配置和逻辑缺陷)。
  3. 协助 AI 驱动的修复: 直接向 AI 编码助手提供详细反馈和漏洞信息,使其能够提出甚至自动应用修复方案。
  4. 建立安全反馈循环: 确保开发者及其 AI 助手立即了解潜在的安全风险,从而快速修正并积累经验。

这为 AI 辅助编码带来了“左移”安全范式,将安全直接融入开发工作流,帮助团队更快地交付更安全的代码。

演示(点击播放视频)

演示 点击播放

功能

  • MCP 集成: 与 Cursor/Windsurf/Github Copilot/Roo Code 无缝集成
  • 自动化安全扫描: 在 AI 生成/修改代码时触发,执行以下操作:
    • 静态代码分析(SAST): 集成 Semgrep 等工具,查找源代码中的漏洞。
    • 动态分析(DAST 原语): 可调用 Nuclei 或 ZAP 等工具,对正在运行的组件进行检查(如适用)。
  • AI 辅助测试录制: 根据自然语言描述生成基于 Playwright 的测试脚本(自动化模式)。
  • 确定性测试执行: 使用 Playwright 可靠地运行已录制的 JSON 测试文件。
  • AI 驱动的测试发现: 爬取网站,并利用任意大模型(采用兼容 OpenAI 的格式)为发现的页面推荐测试步骤。
  • 回归测试: 轻松运行现有测试套件,捕获回归问题。
  • 自动化反馈循环: 返回执行结果(包括失败信息、屏幕截图、控制台日志),为 AI 助手提供直接反馈。
  • 自愈: 代码更改时,现有测试会自动修复。无需手动更新。
  • UI 测试: 也支持 Playwright 本身不支持的 UI 测试。例如,Check if the text is overflowing in the div
  • 视觉回归测试:采用传统的 pixelmatch 和视觉大模型方案。

工作原理

+-------------+       +-----------------+       +---------------------+       +-----------------+       +-------------+
|    User     | ----> | AI Coding Agent | ----> |     MCP Server      | ----> | Scan, test, exec| ----> | Browser     |
| (Developer) |       | (e.g., Copilot) |       | (mcp_server.py)     |       | (SAST, Record)  |       | (Playwright)|
+-------------+       +-----------------+       +---------------------+       +-----------------+       +-------------+
      ^                                                  |                            |                     |
      |--------------------------------------------------+----------------------------+---------------------+
                                      [Test Results / Feedback]
  1. 用户: 向其 AI 编码助手发出提示词(例如,“检查此代码库是否存在安全漏洞”“为登录流程录制测试”“运行回归测试 'test_login.json'”)。
  2. AI 编码 Agent: 识别用户意图,并使用 MCP 调用 MCP Server 提供的相应工具。
  3. MCP Server: 将请求路由到对应函数(get_security_scan、record_test_flow、run_regression_test、discover_test_flows、list_recorded_tests)。
  4. VibeShift Agent:
    • 传统安全扫描: 对代码调用静态分析工具(例如 Semgrep)。
    • 录制: WebAgent(在自动化模式下)与大模型交互以规划步骤,通过 BrowserController(Playwright)控制浏览器,处理 HTML/视觉内容,并将生成的测试步骤保存为 output/ 目录中的 JSON 文件。
    • 执行: TestExecutor 加载指定的 JSON 测试文件,使用 BrowserController 根据录制的步骤与浏览器交互,并捕获结果、屏幕截图和控制台日志。
    • 发现: CrawlerAgent 使用 BrowserController 和 LLMClient 爬取页面并推荐测试步骤。
  5. 浏览器: Playwright 驱动实际的浏览器交互。
  6. 反馈循环:
    • 详尽的安全报告(漏洞、位置、建议)通过 MCP 服务返回给AI 编码 Agent。
    • AI 编码 Agent 将报告呈现给开发者,并可利用相关信息提出或应用修复方案。
    • 目标是实现快速循环:代码生成 -> 安全扫描 -> AI 驱动修复 -> 重新扫描(可选)。

快速开始

前置条件
  • Python 3.10+
  • 可使用任意大模型(根据我的测试,gemini 2.0 flash 免费使用时效果最好)
  • 已安装 MCP(pip install mcp[cli])
  • 已安装 Playwright 浏览器(patchright install)
安装
  1. 克隆代码库:
    git clone https://github.com/GroundNG/VibeShift
    cd VibeShift
    
  2. 创建虚拟环境(推荐):
    python -m venv venv
    source venv/bin/activate # Linux/macOS
    # venv\Scripts\activate # Windows
    
  3. 安装依赖:
    pip install -r requirements.txt
    
  4. 安装 Playwright 浏览器:
    patchright install --with-deps # Installs browsers and OS dependencies
    
配置
  1. 将项目根目录中的 .env.example 重命名为 .env。
  2. 添加你的 LLM API 密钥和其他必要信息:
    # .env
    LLM_API_KEY="YOUR_LLM_API_KEY"
    
    • 将 YOUR_LLM_API_KEY 替换为你的实际密钥。
添加 MCP 服务

将此内容添加到你的 MCP 配置中:

{
  "mcpServers": {
    "VibeShift":{
      "command": "uv",
      "args": ["--directory","path/to/cloned_repo", "run", "mcp_server.py"]
    }
  }
}

与 AI 编码助手交互期间,请保持此服务运行。

用法

使用自然语言,通过支持 MCP 的 AI 编码助手与 Agent 交互。

示例:

  • 安全分析:

    • 自动分析(推荐): VibeShift 会自动分析 AI 助手生成或大幅修改的代码片段。
    • 明确指令:

      “VibeShift,分析此函数是否存在安全漏洞。” “让 VibeShift 检查 Copilot 刚写的 Python 代码是否存在 SQL 注入。” “提交前,使用 VibeShift 保护生成的代码。”

  • 录制测试:

    “录制测试:访问 https://practicetestautomation.com/practice-test-login/,在用户名字段中输入 ‘student’,在密码字段中输入 ‘Password123’,点击提交按钮,并确认文本 ‘Congratulations student’ 可见。”

    • (Agent 将自动执行这些操作,并在 output/ 中保存一个 test_....json 文件。)
  • 执行测试:

    “运行回归测试 output/test_practice_test_login_20231105_103000.json”

    • (Agent 将执行指定文件中的步骤,并报告 PASS/FAIL 状态以及错误和详细信息。)
  • 发现测试步骤:

    “从 https://practicetestautomation.com/practice/ 开始发现潜在的测试步骤”

    • (Agent 将爬取网站、分析页面,并返回每个页面的建议测试步骤。)
  • 列出已录制的测试:

    “列出可用的已录制网页测试。”

    • (Agent 将返回在 output/ 目录中找到的 .json 文件列表。)

输出:

  • 安全报告: 返回给 AI 编码助手,详细说明:
    • 漏洞类型(例如,CWE、OWASP 类别)
    • 代码中的位置
    • 严重程度
    • 证据/说明
    • 建议的修复措施(通常由 AI 执行)
  • 已录制的测试: 保存为 output/ 目录中的 JSON 文件(格式请参阅 test_schema.md)。
  • 执行结果: 以 JSON 对象的形式返回,总结运行情况(状态、错误、证据路径)。完整结果也会保存到 output/execution_result_....json。
  • 发现结果: 以 JSON 对象的形式返回,其中包含发现的 URL 和建议步骤。完整结果保存到 output/discovery_results_....json。

灵感来源

  • Browser Use:DOM 上下文树的生成深受其启发,并经过修改以适应静态/动态/视觉元素。特别感谢他们为开源事业作出的贡献。
  • Semgrep:我们借助这一强大的开源静态分析工具。
  • Nuclei:用于支持基于模板的动态扫描能力。

贡献

欢迎贡献!请参阅 CONTRIBUTING.md,了解如何开始、报告问题和提交拉取请求。我们尤其欢迎:

  • 新的安全分析器集成。

许可证

本项目采用 APACHE-2.0 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。