mcpField
O
oculo

oculo

本地服务
github.com/xidik12浏览器自动化514 周前更新

关于 oculo

oculo 是一款支持 MCP 的 Chromium 桌面浏览器,面向需要让 Agent 查看并操作真实网页的用户。它提供 12 种精简工具,并在操作权限和返回内容上加入安全控制。

主要功能

  1. 0112 种网页操作工具
  2. 02读取页面并提取结构化数据
  3. 03多步骤自动化及流程重放
  4. 04分级操作权限控制
  5. 05凭据加密存储与响应脱敏
  6. 06多提供商内置 AI 聊天

适用场景

  1. 01自动填写并提交网页表单
  2. 02浏览网页并提取搜索结果
  3. 03执行需登录的重复浏览器流程
  4. 04在无界面模式运行网页自动化

MCP 相关

oculo 通过 HTTP MCP 服务提供 12 种浏览器工具,并可由 Claude Code、Cursor、Windsurf 等 MCP 客户端连接。页面声明的 WebMCP 工具也可被发现和调用。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"xidik12-oculo": {
"command": "npx",
"args": [
"-y",
"oculo-mcp"
]
}
}
}
启动命令npx -y oculo-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmoculo-mcp0.4.2

工具

16

收录的工具列表 · 更新于 2 周前

参数类型必填说明
scopestring否用于将页面描述限定到某个区域的 CSS 选择器
tabIdstring否按 ID 指定目标标签页(用于并行执行)。省略则使用活动标签页。
detailenum否compact(默认,约 30–80 个 token)、a11y(带 ref 标签的无障碍树,约 200–500 个 token)或 markdown(通过 Readability 提取文章)compact | a11y | markdown
includearray否要包含的内容:“forms”、“buttons”、“links”、“headings”、“text”、“images”
screenshotboolean否附加截图(默认:false)

详细介绍

Oculo — 一款开源 AI 浏览器,让 Claude Code、Cursor、Windsurf 和任何 MCP 客户端都能看见实时网络。示例 Agent 工作流将“登录 GitHub 并为 oculo 仓库加星标”这一请求转化为四次 act 工具调用,通过凭据保管库登录并点击“Star”,使用不到 100 个 token。

GitHub 星标 最新版本 Electron 34 TypeScript 5.7 React 19 12 个 MCP 工具 MIT 许可证

官方网站 · 下载 · 快速开始 · 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——原生引擎,而非封装器

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 SDKpip 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 协议发现并调用页面声明的工具。

章节:工作原理 — 从 stdio 到 HTTP 再到 webview

架构流程:MCP 客户端(Claude Code、Cursor、Windsurf)通过 stdio 与 oculo-mcp 桥接程序通信;桥接程序通过经过身份验证的 HTTP(端口 19516)将请求转发到 Electron 主进程;主进程通过 IPC 向 React 渲染进程发送消息;渲染进程在持有实时网页的 webview 中运行 executeJavaScript。空闲时仍可发现工具;执行工具需要 Oculo 正在运行;端口和令牌会写入 ~/.oculo-port。

为什么使用 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,接口相同。

章节:安全模型 — 权限门控、保险库、脱敏

每项操作都会经过权限门控,每个响应在送达模型之前都会经过脱敏。

权限级别
级别操作行为
Autonavigate, page, read, scroll, screenshot, back, forward, reload, hover, listTabs, switchTab, preview, translate, lens静默执行
Notifyclick, type, fill, select, press, submit, newTab, closeTab执行并发送 OS 通知
Confirmpayment, delete_account, change_password, send_email, download, oauth, shell, evaluate, setProxy, startRecording需要通过原生对话框批准
Blockedread_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 还内置了侧边栏聊天功能,可直接与多个提供商对话:

提供商身份验证模型
ClaudeAPI 密钥或 CLI 订阅Opus、Sonnet、Haiku
OpenAIAPI 密钥或 Codex CLIGPT-4o、GPT-4o mini、o1、o3
GeminiAPI 密钥2.0 Flash、1.5 Pro、1.5 Flash
GrokAPI 密钥Grok 2、Grok 2 Mini
Ollama本地(无需密钥)任意已拉取的模型
OpenClawAPI 密钥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


由 Salakhitdinov Khidayotullo 开发 · getoculo.com

评论

支持 Markdown

第一次接触 MCP?

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

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