DeepSeek Harness plugin

kimi-webbridge-mcp

MCP stdio server exposing the local Kimi WebBridge daemon (127.0.0.1:10086) as MCP tools — usable from DSH, Claude Code, Codex, and any MCP client.

Jump to install

Source facts

Repository
LosEcher/kimi-webbridge-mcp
Latest update
Aug 15, 2026
Category
Tools & Capabilities
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-21

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/LosEcher/kimi-webbridge-mcp
Plugin: kimi-webbridge-mcp
Author: LosEcher

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

kimi-webbridge-mcp

把本地 Kimi WebBridge daemon(http://127.0.0.1:10086)包装成标准 MCP stdio server, 让任何 MCP 客户端都能用真实浏览器工具:DSH(@deepseek-ai/dsh-mcp-client)、Claude Code、Codex 等。

零依赖:单个 server.mjs,Node ≥ 18 直接运行,新行分隔 JSON-RPC 2.0 over stdio。

> Kimi 官方 kimi-webbridge install-skill 只会把 skill 装进 Claude Code / Codex / Kimi CLI / Hermes, > 不装 DSH。本仓库补上 DSH(及任意 MCP 客户端)这一环,且工具带 JSON Schema, > 优于纯文本 skill 调用。

快速开始

# 1. daemon 就绪?(没有会自动拉起)
~/.kimi-webbridge/bin/kimi-webbridge status

# 2. 冒烟测试(mock 模式不碰浏览器;真实模式只做只读调用)
node test/test-client.mjs --mock
node test/test-client.mjs

# 3. 任意 MCP 客户端指向这个命令即可:
node path/to/kimi-webbridge-mcp/server.mjs   # 或安装后直接 webbridge-mcp

接入 DSH

安装 bundle 后用自带的 overlay 补丁(@deepseek-ai/dsh-mcp-client 插件,stdio transport):

dsh plugin --profile web add github:LosEcher/kimi-webbridge-mcp#main
dsh web --patch <path/to/dsh-webbridge.cordis.yml>

工具以 mcp__webbridge__<name> 出现在模型面前(如 mcp__webbridge__navigate)。 想永久启用,把 dsh-webbridge.cordis.yml 里的 insert 合并进 $DSH_HOME/cordis.patch.yml (或对应 profile 的 cordis.patch.yml)。

工具

MCP 工具说明关键参数
navigate打开 URL(真实浏览器)url*、newTabgroup_title
find_tab重选本会话打开的标签页;active:true 借用用户正在看的页url*、active
snapshot当前页无障碍树(文本),返回 @e 引用
click点击元素(@e 引用或 CSS)selector*
fill填输入框/textarea/contenteditable(clear-and-insert)selector*、value*
evaluate页内执行 JS(支持 async)code*
cdpchrome.debugger 原始 CDP 透传(逃生通道)method*、params
screenshot截图(整页或元素),返回本地文件路径formatqualityselectorpath
network网络活动采集/查看cmd*(start/stop/list/detail)、filterrequestId
upload上传文件到 <input type=file>selector*、files*
save_as_pdf当前页存 PDF,返回本地路径paper_formatlandscapescaleprint_backgroundpath
list_tabs列出会话内标签页
close_tab关闭当前标签页
close_session关闭会话全部标签页(仅用户明确要求时调用)
webbridge_statusdaemon/扩展状态(走 kimi-webbridge status CLI)

所有工具都接受可选 session 参数:一个任务 = 一个 session = 一个标签组, 同一任务的所有调用传同一个 session(缺省 webbridge-mcp)。 group_title(用户语言的可见组名)在任务的第一次 navigate 上设置。

环境变量

变量默认说明
WEBBRIDGE_DAEMON_URLhttp://127.0.0.1:10086daemon 地址
WEBBRIDGE_DAEMON_BIN~/.kimi-webbridge/bin/kimi-webbridge自动拉起/状态查询用的 CLI
WEBBRIDGE_MCP_TIMEOUT_MS60000单次调用超时
WEBBRIDGE_MCP_AUTOSTART1连接失败时自动 kimi-webbridge start(幂等)
WEBBRIDGE_MCP_DEFAULT_SESSIONwebbridge-mcp缺省会话名
WEBBRIDGE_MCP_MOCK01 = 罐头响应,不碰 daemon/浏览器(测试用)

行为与协议

  • daemon 合约(v1.11.x):POST /command body {action, args, session}

成功 {ok:true, ...result}(兼容 {ok:true, data:{...}}),失败 HTTP 502 + {ok:false, error:{code,message}}

  • 错误传播:daemon 的 code/message 原样透出为 MCP isError 结果,例如

no extension connectedsession "x" has no tab — navigate or find_tab first

  • 自动拉起:连接被拒(daemon 未运行)时自动 kimi-webbridge start 一次并重试;

扩展未连接这类业务错误不触发拉起。

  • 结果:统一以 text 块返回 JSON 字符串;screenshot/save_as_pdf 返回本地文件路径

由模型用 Read 工具读图/读 PDF(daemon 协议本来就不回 base64)。

故障排查

  • {"error":"... no extension connected"} → 浏览器扩展未连接:打开浏览器连接 Kimi WebBridge

扩展(帮助页 https://www.kimi.com/zh-cn/features/webbridge ),再重试。

  • webbridge extension_error: ... / tool_error: session "x" has no tab → 先 navigatefind_tab
  • daemon unreachable 且自动拉起失败 → 手动 ~/.kimi-webbridge/bin/kimi-webbridge startstatus 确认。
  • 提示"Please update the Kimi WebBridge extension" → 扩展版本落后,让用户更新扩展(不要自行处理)。
  • Vivaldi(非官方支持浏览器)上 navigate(newTab:true) 必现 page load timeout (30s)

扩展等新标签 load 事件回调 30s 超时(连 about:blank 也一样),官方只支持 Chrome/Edge。 但 find_tab(借用现有标签)、evaluate、以及借用后不带 newTabnavigate 全部正常。 绕行:先用 AppleScript 让 Vivaldi 建标签(秒开),再用 find_tab active:true 借用, 之后一切操作正常。已封装为 ./vivaldi-open.mjs <url> [session](见下方示例)。

# Vivaldi 绕行打开页面(替代 navigate(newTab:true))——macOS 专属(AppleScript)
node extras/vivaldi-open.mjs "https://example.com" my-session
# → {"ok":true,"tabId":...,"url":"https://example.com","borrowed":true}
# 然后对 my-session 正常用 evaluate / snapshot / click / navigate(不带 newTab)

安全注意

工具操作的是用户真实浏览器及其登录态。不要在用户未要求时打开敏感页面; close_session 只在用户明确要求关闭标签时调用(工具描述里已写明该约束)。