# mcp-browser-analyzer
**Repository Path**: Singularity-maxkim/mcp-browser-analyzer
## Basic Information
- **Project Name**: mcp-browser-analyzer
- **Description**: 基于 MCP 协议 + AI Agent 架构的浏览器扩展分析工具,不仅专注于前端性能采集与诊断,还可作为通用浏览器侧分析助手。Agent 具备基础交互与任务执行能力,支持简单对话、指令解析、数据归纳,可扩展为页面分析、行为统计、自动化检测等多场景智能工具,为浏览器环境提供轻量化、可扩展的 AI 能力入口。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2026-04-08
- **Last Updated**: 2026-11-04
## Categories & Tags
**Categories**: mcp-agents-and-skills
**Tags**: Web, MCP, Agent, browser-mcp
## README
# 浏览器 AI 助手 · Browser AI Assistant
一个住在浏览器**侧边栏**里的 AI 助手:不切页面,就能总结网页、划词即问、围绕页面内容追问,甚至自动完成一次带来源的**深度研究**。
Chrome Extension(Vue3 + MV3) · Node.js Agent Server(DeepSeek + 自研 Agent 编排)
---
## 功能特性
| 功能 | 说明 |
| --- | --- |
| 📄 **一键总结本页** | Readability 提取正文 + 结构化 Prompt 模板 → 输出概括/要点/结论,标注来源 URL 与正文截断状态,回答可溯源、防幻觉 |
| ✍️ **划词即问** | 选中文字弹出浮动工具条(翻译/解释/改写/总结/自由提问),Shadow DOM 隔离页面样式,自动唤起侧边栏问答 |
| 💬 **多轮上下文对话** | 会话持久化(`chrome.storage.local` 分桶存储),服务重启后自动重放重建上下文,历史会话可切换 |
| 🔍 **深度研究(Deep Research)** | 自动规划子问题 → 后台静默多页读取 → 信息充分性评估(不足自动补源重试)→ 交叉对比 → 流式生成带来源的研究报告;每完成一个主题可**人工介入**调整方向 |
| ⚡ **流式输出** | SSE 增量解析 + WebSocket 分片推送,打字机效果;工具调用与文本输出在同一条流式通道内正确区分 |
| 📊 **页面性能分析** | 采集页面性能指标(LCP 等),数据带可信度标签,供 AI 分析 |
## 架构
```
┌──────────────────────────── Chrome 扩展(Vue3 + MV3)────────────────────────────┐
│ SidePanel 侧边栏 ◀───▶ Background Service Worker ◀───▶ Content Script │
│ (对话 UI / 深度研究) (消息路由 / 手势 API / 后台抓页) (Readability 提取正文) │
└────────────────────────────────────┬──────────────────────────────────────────────┘
│ WebSocket(:9999,requestId 异步请求-响应匹配)
┌────────────────────────────────────▼──────────────────────────────────────────────┐
│ Agent Server(Node.js) │
│ ┌────────────────────────────────────────────────────────────────────────────┐ │
│ │ 三层 Agent 编排(按任务复杂度选型) │ │
│ │ Prompt 模板(固定任务) │ ReAct 循环(开放对话) │ 深度研究状态机(plan→ │ │
│ │ · 总结/翻译/改写 │ · 模型选工具→执行→回喂 │ research→compare→report) │ │
│ └────────────────────────────────────────────────────────────────────────────┘ │
│ LLM 客户端(SSE 流式解析 + Function Calling) · 工具封装(schema/handler/传输) │
└────────────────────────────────────┬──────────────────────────────────────────────┘
│ OpenAI 兼容接口
┌──────▼──────┐
│ DeepSeek │
└─────────────┘
```
深度研究状态机的编排思想对齐 LangGraph 的四个核心概念(State / 节点 / 条件边 / checkpoint / HITL),实现为自研 ~200 行轻量状态机(零依赖、可单测),详见 [`agent-server/src/core/workflow.js`](agent-server/src/core/workflow.js)。
## 演示
> 截图待补充:以下为截图清单,安装插件后按此操作截图,放入 `images/` 目录后 README 引用。
- `images/summary.png` — 侧边栏一键总结当前网页(含来源标注)
- `images/selection.png` — 网页划词弹出浮动工具条(翻译/解释/改写/总结)
- `images/deep-research.png` — 深度研究:规划子问题 → 进度消息 → 人工介入卡片 → 研究报告
- `images/performance.png` — 页面性能分析结果
## 快速开始
### 环境要求
- Node.js >= 20
- pnpm >= 9
### 1. 安装依赖
```bash
pnpm install
```
### 2. 配置 Agent Server
在 `agent-server` 目录下创建 `.env`(参考 `.env` 格式,变量名沿用 `ARK_` 前缀):
```bash
cd agent-server
```
```
ARK_API_KEY=你的DeepSeek API密钥
ARK_BASE_URL=https://api.deepseek.com
ARK_MODEL=deepseek-chat
```
### 3. 启动 Agent Server(监听 :9999)
```bash
pnpm agent-server
```
或进入 `agent-server` 目录直接 `npm start`。
### 4. 构建并加载 Chrome 插件
```bash
pnpm extension # 构建插件到 chrome-extension/dist(watch 模式)
```
1. 打开 Chrome,访问 `chrome://extensions/`
2. 开启右上角「开发者模式」
3. 点击「加载已解压的扩展程序」,选择 `chrome-extension/dist` 目录
4. 点击扩展图标 → 打开侧边栏,即可开始使用
### 5. 运行测试
```bash
cd agent-server
node --test # 深度研究状态机单测(node:test,零依赖)
```
## 技术栈
| 分类 | 技术 |
| --- | --- |
| 浏览器扩展 | Chrome Extension MV3 · SidePanel · Service Worker · Content Script(Isolated World) |
| 前端 UI | Vue 3 + Vite |
| 正文提取 | @mozilla/readability(失败降级 body.innerText) |
| Agent 编排 | 自研三层编排:Prompt 模板 / ReAct 循环 / 深度研究状态机(对齐 LangGraph 四概念) |
| LLM | DeepSeek(OpenAI 兼容接口,Function Calling + SSE 流式) |
| 通信 | WebSocket(ws)· requestId 异步请求-响应匹配 + 超时兜底 |
| 测试 | node:test(零依赖原生 runner) |
## 项目结构
```
├── chrome-extension/ # Chrome 插件(Vue3 + MV3)
│ ├── src/background/ # Service Worker(消息路由 / 后台抓页 / 手势 API)
│ ├── src/content-script/ # 页面正文提取(Readability)+ 划词工具条
│ └── src/ui/sidepanel/ # 侧边栏对话 UI(含深度研究交互)
├── agent-server/ # Agent 服务(Node.js + WebSocket)
│ ├── src/core/ # agent.js(ReAct)· workflow.js(深度研究状态机)· llm.js(流式)
│ ├── src/tools/ # 工具 schema + handler(fetch_url / get_page_content / ...)
│ ├── src/communication/ # WS 服务 + 消息路由
│ └── test/ # node:test 单测 + e2e 脚本
├── server/ # MCP Server(stdio,供外部 AI 助手调用)
└── pnpm-workspace.yaml
```
## Roadmap
- ✅ **M0**:页面总结链路 · 流式输出 · 划词即问(翻译/解释/改写/总结/自由提问)· 轻量页面上下文 · 会话持久化
- ✅ **M1-F8**:深度研究(自研状态机:规划 → 多页抓取 → 信息评估 → 交叉对比 → 带来源报告,含 checkpoint 断点恢复 + 人工介入)
- 🔜 **M1 剩余**:偏好记忆(跨会话个性化)· 会话管理补全(重命名/搜索)· 结构化提取
- 🔜 **M2**:写操作(Computer Use,含权限审批流水线)· MCP Client / WebMCP 接入第三方工具生态
## License
MIT