Hermes Web MCP:免 Key 的網頁搜索與自動化工具

前言

DSH 桌面端及各類 MCP 客戶端在處理網頁任務時,通常面臨 API Key 限制、付費門檻或功能不全的問題。hermes-web-mcp 是一個 Keyless MCP 服務器,它通過本地服務鏈路實現了網頁搜索、內容提取以及基於真實瀏覽器的自動化操作,無需調用外部付費 API 即可完成基礎的網頁交互任務。

插件簡介

hermes-web-mcp 是一個 MCP (Model Context Protocol) 服務器,由 ShadowMiner 維護,採用 MIT 許可證。它爲 DSH 及其他 MCP 客戶端提供了一套完整的網頁工具集,核心價值在於“免 Key”和“本地化渲染”。

核心能力

該插件提供 9 個工具,分爲三類:

  1. 網頁搜索:web_search
    • 通過直接連接 cn.bing 或 DuckDuckGo 進行搜索,無需搜索 API Key。
  2. 網頁提取:web_extract
    • 通過本地 playwright-service 渲染頁面,再經由 html-to-md 轉換爲 Markdown,無需抓取 API Key。
  3. 真實瀏覽器自動化:page_* 系列(共 7 個)
    • 在隔離上下文中通過 CDP (Chrome DevTools Protocol) 連接共享的 Chrome 實例進行操作,不干擾宿主瀏覽器標籤頁。

工作原理

服務端依賴三個本地組件構成處理鏈路:

  • Playwright Service:負責實際渲染網頁,暴露 /scrape 接口。
  • HTML-to-MD Service:負責將 HTML 轉換爲 Markdown,暴露 /convert 接口。
  • CDP Chrome 實例:提供真實瀏覽器環境,分爲 direct (端口 9333) 和 proxy (端口 9334) 兩個實例,用於處理不同網絡環境。

web_extract 會優先嚐試 CDP 渲染,失敗後自動降級爲普通 fetch。page_* 工具通過 playwright chromium.connectOverCDP 連接同一組 Chrome 實例,確保操作在隔離環境中進行。

環境變量

運行前需配置以下環境變量,默認值如下:

變量名 默認值 說明
WEBMCP_PW D:/path/to/playwright-service/node_modules/playwright Playwright 安裝路徑,用於 connectOverCDP
WEBMCP_SCRAPE http://127.0.0.1:3003/scrape Playwright Service 抓取接口
WEBMCP_CONVERT http://127.0.0.1:8080/convert HTML 轉 Markdown 接口
WEBMCP_CDP_DIRECT http://127.0.0.1:9333 直連 CDP Chrome 端點
WEBMCP_CDP_PROXY http://127.0.0.1:9334 代理 CDP Chrome 端點

部署前置條件

在配置 DSH 之前,需確保本地環境滿足以下依賴:

  1. Node.js:版本需 >= 22。
  2. playwright-service:本地運行的爬取服務。
  3. html-to-md:本地運行的轉換服務。
  4. CDP Chrome 實例:啓動兩個 Chrome 實例,分別監聽 9333 和 9334 端口(支持直連和代理)。
  5. Playwright 安裝:需在 WEBMCP_PW 指定的路徑下存在 chromium 驅動。

配置示例

在 MCP 客戶端(如 Claude Desktop)中,服務器名稱配置爲 hermes-web。

{
  "mcpServers": {
    "hermes-web": {
      "command": "node",
      "args": ["D:/path/to/hermes-web-mcp/hermes-web-mcp.js"],
      "env": {
        "WEBMCP_PW": "D:/path/to/playwright-service/node_modules/playwright",
        "WEBMCP_SCRAPE": "http://127.0.0.1:3003/scrape",
        "WEBMCP_CONVERT": "http://127.0.0.1:8080/convert",
        "WEBMCP_CDP_DIRECT": "http://127.0.0.1:9333",
        "WEBMCP_CDP_PROXY": "http://127.0.0.1:9334"
      }
    }
  }
}

在 DSH 的 SQLite 註冊表中插入記錄(需根據實際表結構調整字段):

INSERT INTO mcp_servers (name, command, args, env) VALUES (
  'hermes-web',
  'node',
  JSON_ARRAY('D:/path/to/hermes-web-mcp/hermes-web-mcp.js'),
  JSON_OBJECT(
    'WEBMCP_PW',         'D:/path/to/playwright-service/node_modules/playwright',
    'WEBMCP_SCRAPE',     'http://127.0.0.1:3003/scrape',
    'WEBMCP_CONVERT',    'http://127.0.0.1:8080/convert',
    'WEBMCP_CDP_DIRECT', 'http://127.0.0.1:9333',
    'WEBMCP_CDP_PROXY',  'http://127.0.0.1:9334'
  )
);

典型用法

依賴所有前置服務運行後,可使用以下命令進行測試:

node smoke.js

工具調用示例:

  • 搜索:web_search("DeepSeek", max_results=5)
  • 提取:web_extract("https://example.com", via_proxy=false, wait_ms=2500)
  • 自動化:
    • page_open("https://example.com")
    • page_type("#input", "test", enter=true)
    • page_shot(full_page=true)
    • page_read()

注意事項

  • 權限隔離:page_* 工具運行在隔離上下文中,不會觸碰宿主瀏覽器的標籤頁。
  • 依賴完整性:插件運行依賴於本地多個服務(playwright-service、html-to-md、CDP Chrome)的可用性。
  • 源碼審查:插件以當前進程權限運行,建議在啓用前檢查源碼與許可證。

該插件旨在提供輕量級的網頁交互能力,適合需要本地化處理、規避 API Key 限制的開發場景。更多詳情可查閱 GitHub 倉庫:https://github.com/ShadowMiner/hermes-web-mcp

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜