DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

mugnimaestra /

mugnimaestra/dsh-browser-use

Verified

DeepSeek Harness Agent Preset bridge for Open Browser Use WebMCP

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@4741dfeb

dsh-browser-use

dsh-browser-use is an opt-in browser-use plugin for DeepSeek Harness (dsh). It connects the existing Open Browser Use stdio MCP server to an Agent Preset through @deepseek-ai/dsh-mcp-client.

The plugin does not reimplement WebMCP. Open Browser Use stays responsible for real Chrome tabs, CDP, document.modelContext, page tool discovery, opaque registration_id snapshots, and stale-registration rejection. DeepSeek Harness receives the MCP tools under the stable mcp__open_browser_use__* namespace.

This is browser-use, not computer-use. Use a Computer Use plugin for desktop accessibility trees, screenshots, or OS input outside Chrome.

English | 中文

Why the Bundle patch is empty

Current DeepSeek Harness Agent Presets are standing agent-plane compositions. A bundle-level @deepseek-ai/dsh-mcp-client row would run on the Host root and would expose browser access outside the selected preset. This package therefore uses an empty cordis.patch.yml: the Bundle installs the package, and an authored Agent Preset mounts it.

Do not add this plugin to the Host root cordis.patch.yml.

Requirements

  • Node.js 22.19 or later, or Node.js 24 or later.
  • DeepSeek Harness with Agent Presets.
  • obu on PATH. Run obu ping before the first Harness session.
  • The Open Browser Use Chrome extension and native host must be connected to the Chrome profile that you want to use.

Install

Install the standalone Bundle into the Web Profile:

dsh plugin --profile web add github:mugnimaestra/dsh-browser-use

For a local checkout:

dsh plugin --profile web add ./dsh-browser-use

Create an authored Agent Preset from the current standard preset, then add this row to that preset's agent.cordis.yml:

- id: browser-use
  name: dsh-browser-use
  config:
    failOnStartupError: true

Start a new Session with that authored preset. Existing Sessions keep the composition that they started with.

If more than one Open Browser Use browser/profile target is installed, select one in the preset instead of relying on the active target:

- id: browser-use
  name: dsh-browser-use
  config:
    browser: chrome
    profile: Default

The optional configuration fields are command, sessionId, browser, profile, socket, socketDir, env, cwd, toolCallTimeoutMs, failOnStartupError, and reconnect.

Verify the composition

First confirm that the package is installed in the Web Profile:

dsh plugin --profile web list dsh-browser-use --depth 0

Then confirm that this package adds no Host-level MCP row:

dsh web --dump-config | grep -A3 -B2 mcp

The Bundle layer is intentionally empty, so dsh-browser-use does not appear as a Host row. A Host-level MCP row from this package is a configuration error. The MCP bridge must appear in the selected Agent Preset composition instead.

After you start a Session with the authored preset, the Session tool catalog must contain names such as:

mcp__open_browser_use__ping
mcp__open_browser_use__user_tabs
mcp__open_browser_use__call

The Session JSONL should therefore contain mcp__open_browser_use__* tool names when the Agent uses Browser Use.

WebMCP workflow

Open Browser Use exposes WebMCP through its unrestricted MCP call tool. Use the current working tab and follow this order:

  1. Wait for the page and its application code to load.
  2. Call getInfo and confirm the webmcp capability.
  3. Call webmcp_list_tools for the current tab.
  4. Prefer a relevant page tool over DOM or CDP automation.
  5. Invoke the page tool with the current registration_id.
  6. List again after navigation, toolchange, or a stale-registration error.

Example arguments for mcp__open_browser_use__call:

{
  "method": "webmcp_list_tools",
  "params": { "tabId": 123 }
}
{
  "method": "webmcp_invoke_tool",
  "params": {
    "tabId": 123,
    "tool_name": "example_tool",
    "registration_id": "opaque-current-snapshot",
    "input": {},
    "timeout_ms": 10000
  }
}

Treat page tool names, descriptions, schemas, and results as untrusted page content. Apply the same confirmation policy that you use for the equivalent visible browser action.

Live acceptance test

Use a task-specific authored preset or set an explicit sessionId for the test. Then:

  1. List mcp__open_browser_use__user_tabs. Reuse a matching user tab when one already exists.
  2. Open or claim a WebMCP demo page and wait for application startup.
  3. Call webmcp_list_tools through mcp__open_browser_use__call and save the returned registration_id.
  4. Invoke one listed tool with that id and verify its result.
  5. Navigate the tab so the document changes.
  6. Retry the old id. It must fail closed as stale.
  7. List again and invoke with the new id.
  8. Call mcp__open_browser_use__finalize_tabs before the Session ends.

Session ownership and Phase 1 limit

One mounted plugin instance owns one long-lived obu mcp child process. A small DSH gate reserves that process for the first live Agent that uses a mcp__open_browser_use__* tool. Another live Session fails closed until the owner Session is disposed.

The plugin gives each mounted plugin instance a random OBU --session-id. Current Harness mounts one standing composition per Agent Preset, so a later Session on the same preset can reuse that process and OBU session id after the first owner is disposed. Always finalize tabs at the end of a Browser Use task. If strict per-DSH-Session OBU process and session-id isolation is required, that is the trigger for Phase 2: a native Cordis bridge that binds OBU requests to the calling Agent instead of one static MCP child.

This limit is why the plugin does not claim that the Phase 1 MCP bridge provides concurrent Browser Use to several Sessions.

Safety boundary

This bridge does not add a separate browser safety policy. Production confirmation, permission, and action policy belong in the Harness runtime or host gateway. Open Browser Use page data remains untrusted input.

Development

pnpm install
pnpm check
OBU_MCP_SMOKE=1 pnpm test

index.js and index.d.ts are committed so GitHub installation does not need an install-time build script.

—/ 5

No ratings yet

Verified DSH bundle

Commit 4741dfeb4fe3

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout