Skip to main content
Glama
cchaofei

web-recorder

by cchaofei

WebRecorder

录制 Chrome 浏览器请求/响应作为大模型知识库,通过 MCP Server 暴露查询与浏览器控制能力。

  • 录制:popup 手动开关,录当前 tab 或所有 tab 的所有请求/响应

  • 存储:SQLite 单文件,按 session 组织

  • 静态资源:录制时只存元数据,大模型按需 replay 重新请求拿响应体

  • 动态资源:存请求体 + 响应体

  • 查询:MCP 暴露 list_sessions / list_requests / get_request / get_response_body / search_requests / replay_static

  • 控制:MCP 暴露 navigate / evaluate,大模型可主动操作浏览器

详细设计见 ../docs/superpowers/specs/2026-07-10-chrome-web-recorder-design.md

安装

1. 编译并安装 service-go

cd service-go
bash build.sh                    # 交叉编译 4 平台二进制到 bin/
bash install.sh                  # macOS:安装 launchd 常驻服务
# 或 Linux:bash install-linux.sh

安装后:

  • 二进制在 ~/.webrecorder/bin/web-recorder-service

  • 监听 127.0.0.1:9130(HTTP)和 9131(WS),开机自启 + 崩溃重启

  • 数据库 ~/.webrecorder/sessions.db

  • 日志 ~/Library/Logs/webrecorder-service.log(macOS)或 ~/.webrecorder/webrecorder.log(Linux)

2. 加载 Chrome 扩展

  1. 打开 chrome://extensions/

  2. 右上角开启「开发者模式」

  3. 点「加载已解压的扩展程序」

  4. 选择 chrome-web-recorder/ 根目录(即本仓库根目录,含 manifest.json

3. 配置 Claude Code MCP

~/.claude.json(或项目 .mcp.json)加:

{
  "mcpServers": {
    "web-recorder": {
      "command": "/Users/<你的用户名>/.webrecorder/bin/web-recorder-service",
      "args": []
    }
  }
}

args 为空(默认 MCP stdio 模式)。重启 Claude Code 后 MCP 工具可用。

Related MCP server: Chrome MCP Server

使用

录制

  1. 点扩展图标打开 popup

  2. 输入会话名(留空用时间戳)

  3. 选范围(当前 tab / 所有)

  4. 可选:勾选过滤统计/广告域名,加额外屏蔽子串

  5. 点「开始录制」

  6. 在目标页面操作(导航、点击、提交等)

  7. 点「停止录制」

录制中页面右上角有红色浮标显示实时计数。

大模型查询

Claude Code 里直接调 MCP 工具:

list_sessions()                                        # 列出所有会话
list_requests(session_id="sess_xxx")                   # 列出某会话的请求
get_request(request_id="req_xxx")                      # 拿单个请求详情
get_response_body(request_id="req_xxx")                 # 拿动态资源响应体
search_requests(session_id="sess_xxx", query="login")  # 全文搜索
replay_static(request_id="req_xxx")                    # 重新请求静态资源

大模型控制浏览器

navigate(url="https://example.com")    # 跳转
evaluate(script="document.title")      # 执行 JS 拿返回值

navigate/evaluate 触发的请求也会录进当前 session(如果正在录制)。

验证

验证 service-go

curl -s http://127.0.0.1:9130/ping        # 期望 pong
curl -s http://127.0.0.1:9130/config      # 期望 {"http_port":9130,"ws_port":9131}

验证录制

# 录制一个会话后
sqlite3 ~/.webrecorder/sessions.db "SELECT id, name, request_count FROM sessions ORDER BY started_at DESC LIMIT 5"
sqlite3 ~/.webrecorder/sessions.db "SELECT method, url, resource_type FROM requests WHERE session_id='<某session_id>' LIMIT 10"

验证 MCP

在 Claude Code 里调 list_sessions,应返回最近会话列表。

故障排查

service-go 启动失败

查日志:

tail -f ~/Library/Logs/webrecorder-service.log   # macOS
journalctl --user -u webrecorder -f               # Linux

端口冲突

默认 9130/9131 被占用时,用环境变量改:

# 手动跑(改端口测试)
WEBRECORDER_HTTP_PORT=9140 WEBRECORDER_WS_PORT=9141 ~/.webrecorder/bin/web-recorder-service --http

若要让 launchd 常驻服务用新端口,编辑 ~/Library/LaunchAgents/com.xwx.webrecorder.plist,在 ProgramArguments 后加 EnvironmentVariables 字段:

<key>EnvironmentVariables</key>
<dict>
  <key>WEBRECORDER_HTTP_PORT</key>
  <string>9140</string>
  <key>WEBRECORDER_WS_PORT</key>
  <string>9141</string>
</dict>

改完 launchctl unload && launchctl load 重载。扩展会通过 GET /config 自动发现端口。

macOS 11 上崩溃

如果二进制在 macOS 11 上报 dyld: Symbol not found: _SecTrustCopyCertificateChain,说明编译时部署目标没设到 11.0。

原因(Go 1.25 已知问题):Go 1.25 默认用 internal linker,internal linking 下 mach-o 的 LC_BUILD_VERSION.minos 被 cmd/link 硬编码为 12.0.0,完全不读 MACOSX_DEPLOYMENT_TARGET 环境变量。必须在编译时加 -ldflags="-linkmode=external" 强制走 external linking(经 clang),clang 才会读取 MACOSX_DEPLOYMENT_TARGET=11.0 并生成 minos=11.0LC_BUILD_VERSION

当前 build.sh 已处理:同时设 MACOSX_DEPLOYMENT_TARGET=11.0CGO_ENABLED=1-ldflags="-linkmode=external",并用 otool 验证 LC_BUILD_VERSION.minos 字段(注意不是旧的 LC_BUILD_MACOSX_VERSION)。编译输出应看到:

✓ arm64: deployment target = 11.0.0
✓ amd64: deployment target = 11.0.0

如果你自己改 build.sh,注意这三者缺一不可,否则 macOS 11 会崩溃。

扩展浮标不出现

  • 确认扩展已加载且启用

  • 刷新目标页面(content script 在 document_start 注入)

  • 检查 service worker console(chrome://extensions/ → 扩展 → 「检查视图 service worker」)有无报错

MCP 工具不出现

  • 确认 Claude Code 配置里 command 路径正确且二进制可执行

  • 确认 service-go 以 MCP 模式启动(无 --http 参数;MCP 模式由 Claude Code 拉起,与 launchd 的 --http 常驻实例是两个独立进程)

  • 重启 Claude Code

录制后数据库为空

  • 确认 service-go 在跑(curl http://127.0.0.1:9130/ping

  • service worker console 检查 fetch('http://127.0.0.1:9130/record') 是否报错

  • 确认 popup 显示「录制中」状态

权限说明

权限

用途

webRequest

监听请求/响应

storage

存录制状态、过滤配置

alarms

WS keep-alive

tabs

navigate

scripting

evaluate

<all_urls>

拦截任意 URL + WS 连本地 + evaluate 任意页面

安全提示

  • evaluate 能执行任意 JS,等于完全控制当前页面(读 cookie、调 API、改 DOM)

  • service-go 默认仅监听 127.0.0.1,不要暴露到公网

  • 录制数据含敏感字段(cookie/authorization),数据库文件注意保护

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/cchaofei/chrome-web-recorder'

If you have feedback or need assistance with the MCP directory API, please join our Discord server