Open WebUIにFirecrawlをセルフホストして、MCP経由でローカルLLMから使う
投稿日: 更新日:
Open WebUIでは、Webページを取得するローダーとしてFirecrawlを利用できます。
Firecrawlをセルフホストし、
- Open WebUIのWeb LoaderとしてFirecrawlを利用する
- Firecrawl MCP Serverを導入し、ローカルLLMから
Scrape・Map・Crawlを直接使えるようにする
ところまで構築します。
環境 💻
今回使用した環境は以下です。
OS: Windows 11
Open WebUI: v0.11.0
Docker Desktop
Ollama
Open WebUIはDocker Composeで構築済みであることを前提とします。
Firecrawlをセルフホストする
まずFirecrawl本体を構築します。
公式のセルフホスト手順に従い、リポジトリをcloneして使用するバージョンへcheckoutします。
参考:https://docs.firecrawl.dev/ja/contributing/self-host
git clone https://github.com/firecrawl/firecrawl.git
cd firecrawl
git checkout v2.11.162
次に、Firecrawlのルートディレクトリに.envを作成します。
USE_DB_AUTHENTICATION=false
POSTGRES_USER=postgres
POSTGRES_PASSWORD=RANDOM_TEXT_RANDOM_TEXT_RANDOM_TEXT
POSTGRES_DB=postgres
POSTGRES_PASSWORDには適当なランダム文字列を設定してください。
作成できたらFirecrawlを起動します。
docker compose up --build -d
Firecrawlの動作確認
まずHealth Checkを確認します。
WindowsのPowerShellではcurlが別コマンドのaliasになっている場合があるため、curl.exeと書くのが確実です。
curl.exe http://localhost:3002/v0/health/readiness
以下のように返ればFirecrawl API自体は起動しています。
{"status":"ok"}
実際にWebページを取得できるかも確認しておきましょう。
curl.exe `
--max-time 75 `
-X POST `
http://localhost:3002/v2/scrape `
-H "Content-Type: application/json" `
-d '{\"url\":\"https://example.com\",\"formats\":[\"markdown\"],\"timeout\":60000}'
成功すると、以下のようにMarkdown化されたページ内容が返ってきます。
{
"success": true,
"data": {
"markdown": "...",
"metadata": {
"statusCode": 200
}
}
}
これでFirecrawl本体の構築は完了です。
Open WebUIのWeb LoaderとしてFirecrawlを使う
単にOpen WebUIのWeb LoaderとしてFirecrawlを使用するだけであれば、Open WebUIの
設定 → ウェブ検索 → ローダー
から以下のように設定します。
- ローダー:
firecrawl - Firecrawl APIベースURL:
http://host.docker.internal:3002 - Firecrawl APIキー:
selfhosted

今回はFirecrawl側で、
USE_DB_AUTHENTICATION=false
としてAPI認証を無効にしています。
そのため、ここで指定しているselfhostedは実際の認証キーではなくダミー値です。
この状態でもOpen WebUIのfetch_urlからFirecrawlを経由してWebページを取得できるようになります。
FirecrawlをLLMにより活用させる
ここまででもFirecrawlは利用できます。
ただし、この構成ではFirecrawlはあくまでOpen WebUIのWebローダーとして使われています。
モデルから見ると基本的には、
fetch_url(url)
というツールしか見えません。
一方、Firecrawlには単純なURL取得以外にも、例えば以下の機能があります。
| 機能 | 内容 |
|---|---|
| Scrape | 1つのURLから本文などを取得 |
| Map | サイト内のURLを探索 |
| Crawl | リンクを辿って複数ページを取得 |
| Search | Web検索とページ取得 |
こういった機能をLLMに使わせるにはMCP経由で使わせる必要があります。
Firecrawl MCP Serverを導入する
Open WebUIを構築しているcompose.ymlに、Firecrawl MCP Serverを追加します。
portsやenvironment、volumesは既存の設定をつかってください。重要なのはextra_hostsです。ここは同じにしてください。
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
# 既存の設定
volumes:
- open-webui:/app/backend/data
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
# 既存の設定
# ...
restart: unless-stopped
firecrawl-mcp-server:
image: node:24-bookworm-slim
command: >
sh -c "npx -y firecrawl-mcp"
environment:
HTTP_STREAMABLE_SERVER: "true"
FIRECRAWL_API_URL: "http://host.docker.internal:3002"
HOST: "0.0.0.0"
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped
volumes:
open-webui:
external: true
追加したら起動します。
docker compose up -d
HOST=0.0.0.0について
私の環境では、HOSTを指定しない状態だとFirecrawl MCP Serverが、
http://localhost:3000/mcp
で待ち受けていました。
このlocalhostはFirecrawl MCP Serverコンテナ自身のlocalhostですから、別コンテナであるOpen WebUIから、
http://firecrawl-mcp-server:3000/mcp
へ接続できませんでした。
そこで、
HOST: "0.0.0.0"
を指定し、Dockerネットワーク側からもアクセスできるようにしています。
今回はOpen WebUIとFirecrawl MCP Serverのコンテナ間通信だけでよいため、
ports:
- "13000:3000"
のようにWindows側へMCP Serverのポートを公開する必要もありません。
Open WebUIにFirecrawl MCP Serverを登録する
次にOpen WebUI側でMCP Serverを登録します。
設定 → 連携 → External Tool Servers → +
と進みます。
以下のように設定します。
名前:
Firecrawl MCP
ID:
fc
URL:
http://firecrawl-mcp-server:3000/mcp
認証:
なし
そして今回、Function Name Filter Listには以下を設定しました。
firecrawl_scrape,firecrawl_map,firecrawl_crawl,firecrawl_check_crawl_status

保存したら設定完了です。
Function Name Filter Listについて
Firecrawl MCP Serverは非常に多くのツールを公開しています。
私の環境では27個のツールが公開されていました。
しかし、すべてのツールをそのままOllama側へ渡したところ、
Failed to initialize samplers: failed to parse grammar
というエラーが発生しました。
そこで、Open WebUIのFunction Name Filter Listを使い、今回使用したいツールだけをLLMへ公開しています。
使用している4つは以下です。
| Tool | 用途 |
|---|---|
| firecrawl_scrape | 1ページを取得 |
| firecrawl_map | サイト内のURLを探索 |
| firecrawl_crawl | 複数ページをクロール |
| firecrawl_check_crawl_status | Crawlジョブの進捗・結果を確認 |
なお、Firecrawlにはfirecrawl_searchもありますが、Open WebUIには既にsearch_webがあるため今回は公開していません。
検索はOpen WebUI、
search_web
ページ取得やサイト探索はFirecrawl、
fc_firecrawl_scrape
fc_firecrawl_map
fc_firecrawl_crawl
と役割を分けています。
チャットからFirecrawlを使う
チャットで使用する場合は、入力欄のIntegrationsからFirecrawl MCPをONにします。

MCP ServerのIDをfcとしているため、LLMからは例えば、
fc_firecrawl_scrape
のような名前でツールが見えます。
試しに以下のようなメッセージを送ります。
firecrawl_scrape を使って https://example.com を読み、
内容を1〜2文で要約してください。
fetch_url は使わないでください。
すると、実際にfc_firecrawl_scrapeが呼び出されてWebページを取得していることを確認できます。

よきローカルLLMライフを。