web-mcp
Provides web search and page fetch tools for LLM assistants, extracting content and enabling text search within fetched pages.
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/httpsURL を取得し、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
}
}
主な code は FETCH_FAILED、FETCH_TIMEOUT、UNSUPPORTED_CONTENT_TYPE、BROWSER_RENDER_FAILED です。
PDF は現時点では UNSUPPORTED_CONTENT_TYPE として返します。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。