关于 oculo
oculo 是一款支持 MCP 的 Chromium 桌面浏览器,面向需要让 Agent 查看并操作真实网页的用户。它提供 12 种精简工具,并在操作权限和返回内容上加入安全控制。
主要功能
- 0112 种网页操作工具
- 02读取页面并提取结构化数据
- 03多步骤自动化及流程重放
- 04分级操作权限控制
- 05凭据加密存储与响应脱敏
- 06多提供商内置 AI 聊天
适用场景
- 01自动填写并提交网页表单
- 02浏览网页并提取搜索结果
- 03执行需登录的重复浏览器流程
- 04在无界面模式运行网页自动化
MCP 相关
oculo 通过 HTTP MCP 服务提供 12 种浏览器工具,并可由 Claude Code、Cursor、Windsurf 等 MCP 客户端连接。页面声明的 WebMCP 工具也可被发现和调用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
16收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| scope | string | 否 | 用于将页面描述限定到某个区域的 CSS 选择器 |
| tabId | string | 否 | 按 ID 指定目标标签页(用于并行执行)。省略则使用活动标签页。 |
| detail | enum | 否 | compact(默认,约 30–80 个 token)、a11y(带 ref 标签的无障碍树,约 200–500 个 token)或 markdown(通过 Readability 提取文章)compact | a11y | markdown |
| include | array | 否 | 要包含的内容:“forms”、“buttons”、“links”、“headings”、“text”、“images” |
| screenshot | boolean | 否 | 附加截图(默认:false) |
详细介绍
官方网站 · 下载 · 快速开始 · MCP 工具 · 架构 · 参与贡献
Oculo 是一款完整的 Chromium 桌面浏览器,支持 Model Context Protocol。让 Claude Code、Cursor、Windsurf 或任何 MCP 客户端连接到它,你的 Agent 就能看见并操控真实网页——读取 DOM、点击、填写表单、提取数据、运行多步流水线——通过 12 个精简工具完成,每个工作流的响应都不到 300 个 token。
Cursor : VSCode :: Oculo : Chrome
实际效果
你的 Agent 描述意图;Oculo 将其转化为几次简短的工具调用,并返回精炼且经过脱敏的结果——而非数 MB 的屏幕截图。
You: "Log into GitHub and star the oculo repo"
Claude Code calls:
1. act({action: "navigate", url: "https://github.com/login"})
2. act({action: "login", site: "github.com"}) # vault lookup, password never leaves the OS keychain
3. act({action: "navigate", url: "https://github.com/xidik12/oculo"})
4. act({action: "click", text: "Star"})
→ 4 tool calls, <100 tokens of response
You: "Fill out the contact form on example.com"
Claude Code calls:
1. act({action: "navigate", url: "https://example.com/contact"})
2. page() # see the form structure
3. fill({fields: {"Name": "...", "Email": "..."}, submit: true})
→ 3 tool calls
Oculo 在你的机器上运行真正的 Chromium 引擎,并在其上添加以 Agent 为先的控制层。这种组合正是它的价值所在:
| 能力 | |
|---|---|
| 原生浏览器 | 完整的 Chromium 引擎——不是封装器、扩展或无头抓取工具 |
| 12 个 MCP 工具 | page、act、fill、read、run、media、shell、tabs、research、preview、translate、lens |
| < 300 个 token / 工作流 | 默认返回精简的文本响应——比基于屏幕截图的方案更省成本 |
| 自修复自动化 | 选择器缓存 + DOM 差异比较——重复工作流速度提升 44% 以上 |
| 多提供商 AI | 内置聊天,支持 Claude、OpenAI、Gemini、Grok、OpenClaw、Ollama |
| 4 级安全防护 | 每项操作均通过 auto / notify / confirm / blocked 权限关卡 |
| 操作系统密钥链保管库 | 使用 electron.safeStorage 加密凭据(macOS Keychain / Windows DPAPI) |
| PII 脱敏 | 从每个 MCP 响应中剔除信用卡号、SSN、JWT、API 密钥和 Bearer 令牌 |
| 防注入 | 内容边界标记 + 基于正则表达式的提示词注入检测 |
| 19 项隐身补丁 | 防御 Navigator、WebGL、canvas、WebRTC、音频、字体、电池和屏幕指纹追踪 |
| 无头模式 | 无需窗口即可运行——包含 Docker 支持 |
| 跨平台 | macOS、Windows、Linux |
| Python SDK | pip install oculo — 支持同步和异步客户端 |
每个工具只做一件事,并返回最精简且实用的答案。token 成本就是 Agent 为响应大小付出的代价。
| 工具 | 功能 | Token 成本 |
|---|---|---|
page | 描述当前页面 — 标题、表单、按钮、链接。提供紧凑、a11y(带 ref 标签)和 Markdown 模式 | ~30–80 |
act | 导航、点击、悬停、滚动、输入、按键、通过保险库登录、管理标签页、Cookie、代理和录制 | ~1 行 |
fill | 通过标签/占位符匹配填写表单字段,可选提交。支持文本、选择框、复选框和 contenteditable | ~1 行 |
read | 提取结构化数据 — 搜索结果、表格、列表、文章 | 紧凑 |
run | 多步骤工作流,支持条件判断(page/act/fill/read/wait/if)。可缓存以供重放 | 标头 + 最后一项 |
media | 生成图像(Nano Banana 2 / DALL·E 3)或视频(Veo 3.1);支持图像到图像编辑 | 文件路径 |
shell | 以非交互方式执行 shell 命令(ls、npm、git、python、…) | stdout + stderr |
tabs | 列出所有已打开的浏览器标签页及其 URL 和标题 | 紧凑 |
research | 深度网络研究 — 打开多个标签页、读取页面并综合研究结果 | 综合结果 |
preview | 预先获取 URL 内容,不离开当前页面 | 页面描述 |
translate | 将页面内容或特定文本翻译成任意语言 | 翻译后的文本 |
lens | 通过截图和 AI 视觉分析当前页面 | 描述 |
额外工具: webmcp_list 和 webmcp_call 可通过 WebMCP 协议发现并调用页面声明的工具。
为什么使用 HTTP 而不是 stdio? Electron 的 <webview> 只能从渲染进程访问。主进程(stdio 所在进程)无法访问页面内容。HTTP 桥接通过主进程到渲染进程的 IPC 跨越这一边界。
端口发现。 Oculo 启动时会将 port:authtoken 写入 ~/.oculo-port。bin/oculo-mcp.mjs 桥接程序会自动读取该文件,因此即使应用已关闭,工具定义仍可被发现 — 只有执行工具时才需要 Oculo 正在运行。
1. 安装
从 Releases 获取最新版本,或从源码运行:
git clone https://github.com/xidik12/oculo.git
cd oculo
npm install
npm run dev
2. 在 MCP 客户端中注册
Claude Code
claude mcp add oculo -- node ~/oculo/bin/oculo-mcp.mjs
Cursor / Windsurf — 将以下内容添加到 MCP 配置(.cursor/mcp.json 或同类文件):
{
"mcpServers": {
"oculo": {
"command": "node",
"args": ["/path/to/oculo/bin/oculo-mcp.mjs"]
}
}
}
3. (可选)无头模式和 Docker
在没有可见窗口的情况下运行,适用于 CI/CD、抓取或服务端自动化:
node bin/oculo-headless.mjs # convenience launcher
npx electron . --headless # or raw flags
npx electron . --headless --headless-auto-approve # auto-approve CONFIRM actions
OCULO_HEADLESS=1 npm run dev # or via env var
docker compose up # containerized headless (Xvfb)
4. (可选)Python SDK
pip install oculo
from oculo import OculoClient
client = OculoClient() # auto-discovers port from ~/.oculo-port
print(client.page()) # describe the page
client.act("navigate", url="https://example.com")
client.fill({"Email": "[email protected]", "Message": "Hello!"}, submit=True)
results = client.read("search results", format="json")
另有一个异步 AsyncOculoClient,接口相同。
每项操作都会经过权限门控,每个响应在送达模型之前都会经过脱敏。
权限级别
| 级别 | 操作 | 行为 |
|---|---|---|
| Auto | navigate, page, read, scroll, screenshot, back, forward, reload, hover, listTabs, switchTab, preview, translate, lens | 静默执行 |
| Notify | click, type, fill, select, press, submit, newTab, closeTab | 执行并发送 OS 通知 |
| Confirm | payment, delete_account, change_password, send_email, download, oauth, shell, evaluate, setProxy, startRecording | 需要通过原生对话框批准 |
| Blocked | read_vault, export_cookies, export_tokens, disable_security | 始终拒绝 |
凭据保险库
- 使用
electron.safeStorage加密 → OS Keychain(macOS)/ DPAPI(Windows)。 - 密码绝不会通过 IPC 或 MCP 返回——只会公开域名和用户名。
act({action: "login", site: "github.com"})会检索并填写凭据,全程不会让模型看到这些凭据。
脱敏与反注入
- 每个 MCP 响应都会经过脱敏器,移除信用卡号、SSN、JWT、API 密钥、私钥和 Bearer 令牌。
- 提供给模型的页面内容会用边界标记包裹,基于正则表达式的检测机制会阻止嵌入在内容中的提示词注入尝试。
隐身(19 项补丁)
Navigator(webdriver、languages、plugins、mimeTypes、connection、hardwareConcurrency、deviceMemory)、window(chrome API、尺寸)、WebGL(伪装 vendor/renderer)、canvas(每次调用时随机化指纹)、WebRTC(防止 IP 泄露)、AudioContext、阻止枚举字体、Battery API,以及随机化屏幕分辨率。
自动修复
成功执行 act/fill 后,会缓存选择器及其稳定性评分——id 和 data-testid = 10,aria-label = 9,role+name = 8,text = 7,css = 5。下次运行时,通过 DOM 差异对比选择策略:
- 相似度 > 80% — 从缓存重放,无需调用 LLM。
- 50–80% — 回退到备用选择器。
- < 50% — 重新调用 AI 进行解析。
重复工作流的速度提升超过 44% 正是由此而来。
内置 AI 聊天
Oculo 还内置了侧边栏聊天功能,可直接与多个提供商对话:
| 提供商 | 身份验证 | 模型 |
|---|---|---|
| Claude | API 密钥或 CLI 订阅 | Opus、Sonnet、Haiku |
| OpenAI | API 密钥或 Codex CLI | GPT-4o、GPT-4o mini、o1、o3 |
| Gemini | API 密钥 | 2.0 Flash、1.5 Pro、1.5 Flash |
| Grok | API 密钥 | Grok 2、Grok 2 Mini |
| Ollama | 本地(无需密钥) | 任意已拉取的模型 |
| OpenClaw | API 密钥 | OpenClaw 模型 |
从源代码构建
npm run build # production build
npm run dist:mac # macOS DMG + ZIP
npm run dist:win # Windows NSIS + portable
npm run dist:linux # Linux AppImage + deb
npm run typecheck # TypeScript
npm run lint # ESLint
npm run test # Vitest
先决条件: Node.js 20+、npm(不使用 pnpm/yarn——原生模块需要 npm)、macOS / Windows / Linux。
项目结构
src/
main/ Electron main process
ai/agent.ts Multi-provider AI controller
captcha/ CAPTCHA detection + solvers
data/ Bookmarks, downloads, history, session recording
engine/ Page describer, extractor, form-detector, pipeline, resolver,
selector-cache, dom-differ, tab-manager
mcp/server.ts HTTP MCP server (ports 19516–19520, auth token)
mcp/tools/ act, fill, page, read, run tool handlers
network/proxy.ts HTTP/SOCKS proxy manager
security/ Vault, permissions, redactor, audit, anti-injection
preload/index.ts contextBridge API
renderer/
App.tsx Root browser UI component
components/ TabBar, AddressBar, ChatPanel, WebViewContainer,
bookmarks, downloads, find, history, layout, common
shared/ Types, constants, IPC channels, AI provider definitions
bin/
oculo-mcp.mjs stdio-to-HTTP MCP bridge (for Claude Code / Cursor)
oculo-headless.mjs Headless mode launcher
sdk/python/ Python SDK (pip install oculo)
Dockerfile Container deployment
docker-compose.yml Docker Compose for headless mode
贡献
有关开发环境设置、架构详情以及如何添加新的 MCP 工具,请参阅 CONTRIBUTING.md。
捐赠
如果 Oculo 为你节省了时间,你可以支持项目开发——BTC: 12yRGpUfFznzZoz4yVfZKRxLSkAwbanw2B
许可证
MIT © 2026 Salakhitdinov Khidayotullo
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。