web-mcp

web-mcp

Provides web search and page fetch tools for LLM assistants, extracting content and enabling text search within fetched pages.

Category
访问服务器

README

Web MCP Server

Claude Code / Codex から利用する Web 検索・Web ページ取得用の MCP サーバーです。

コマンド

開発は Windows でも行えますが、運用時は Docker 上の Ubuntu で動かす前提です。

Linux / Docker コンテナ内の想定:

npm install
npm run build
npm run dev

Windows 開発環境:

npm install
npm run build
npm run dev

Docker イメージで起動:

docker build -t web-mcp .
docker run --rm -i web-mcp

MCP stdio サーバーなので、通常はクライアントが node dist/index.js を起動します。 Docker で使う場合も標準入力・標準出力をクライアントへ接続する必要があります。

ビルド後、MCP クライアントからは以下のように起動できます。

{
  "mcpServers": {
    "web-mcp": {
      "command": "node",
      "args": ["/app/mcp/dist/index.js"],
      "env": {
        "WEB_MCP_DEFAULT_RENDER": "auto",
        "WEB_MCP_FETCH_TIMEOUT_MS": "15000",
        "WEB_MCP_USER_AGENT": "LocalLLM-WebMCP/0.1"
      }
    }
  }
}

提供ツール

  • web_search: 現時点では接続確認用の mock 検索結果を返します。
  • web_fetch: http / https URL を取得し、HTML から本文・タイトル・リンクを抽出します。
  • web_find: web_fetch 相当の取得結果から指定文字列を検索します。

検索プロバイダー方針

検索プロバイダーは無料で使えるものを優先します。

初期実装候補:

  • DuckDuckGo HTML 検索: API キー不要で始められる
  • SearxNG: 社内またはローカルで立てるメタ検索。将来的な推奨候補

Brave Search などの API キーが必要な provider は、無料枠が必要になった場合の拡張候補として扱います。

設定

環境変数で主な既定値を変更できます。

環境変数 既定値 用途
WEB_MCP_SERVER_NAME web-mcp MCP サーバー名
WEB_MCP_DEFAULT_MAX_RESULTS 10 web_search の既定件数
WEB_MCP_DEFAULT_MAX_CHARS 20000 web_fetch の既定最大文字数
WEB_MCP_DEFAULT_RENDER auto 既定の render 指定
WEB_MCP_FETCH_TIMEOUT_MS 15000 静的 fetch のタイムアウト
WEB_MCP_BROWSER_TIMEOUT_MS 20000 将来のブラウザ取得用タイムアウト
WEB_MCP_USER_AGENT LocalLLM-WebMCP/0.1 静的 fetch で送信する User-Agent

現在の実装範囲

実装済み:

  • MCP stdio server
  • web_search / web_fetch / web_find の登録
  • AbortController による静的 fetch timeout
  • 設定値からの User-Agent 送信
  • redirect 後の final_url 返却
  • 静的 HTML / XHTML / plain text fetch
  • Content-Type 判定と未対応形式の error レスポンス
  • Readability + Turndown による Markdown 風テキスト化
  • Readability が本文を十分に抽出できない場合の DOM fallback 抽出
  • max_chars / truncated 対応と Markdown 破損を抑える切り詰め
  • include_links 指定時のリンク抽出
  • fetch 失敗 / timeout の error レスポンス

未実装:

  • 実検索 provider 連携
  • Playwright によるブラウザレンダリング取得
  • PDF テキスト抽出
  • 取得済みページのキャッシュ

エラー形式

失敗時も MCP ツールとしては JSON を返し、error に原因を入れます。

{
  "error": {
    "code": "FETCH_TIMEOUT",
    "message": "The operation was aborted.",
    "url": "https://example.com",
    "retryable": true
  }
}

主な codeFETCH_FAILEDFETCH_TIMEOUTUNSUPPORTED_CONTENT_TYPEBROWSER_RENDER_FAILED です。 PDF は現時点では UNSUPPORTED_CONTENT_TYPE として返します。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选