🔥

FirecrawlをDocker ComposeでMCP Serverとして起動する方法

に公開

最初にまとめ

  • Firecrawl を Docker Compose を使って MCP Server として起動します
  • Mac で動作させるため、ローカルビルドに変更します
  • Firecrawl が提供する Tool の中で、firecrawl_search は SearchAPI のキーが必要でした。

詳細は以降で説明します。

この記事の概要

Web スクレイピングツールである Firecrawl を Docker Compose を使って MCP (Model Context Protocol) Server として起動する方法を紹介します。Firecrawl は Web ページのスクレイピング、クローリング、検索、データ抽出など様々な機能を提供するツールです。クラウドサービスとして利用する場合料金がかかりますが、OSS として公開されていますので、ローカルで起動して利用すると無料で利用できちゃいます。

Firecrawl とは

Firecrawl は、Web サイトを LLM が使いやすい形式(Markdown、HTML、構造化データ)に変換するツールです。以下のような機能を提供します:

  • Scrape: 単一ページのコンテンツ抽出
  • Map: Web サイト内の全 URL の検出
  • Search: Web 検索と検索結果からのコンテンツ抽出
  • Crawl: 複数ページの一括クローリング
  • Extract: LLM を使った構造化データの抽出

書かないこと

以下の内容は本記事では説明しません。

  • MCP (Model Context Protocol) の具体的な内容
  • Docker や Docker Compose の基本的な使い方

バージョン・環境

  • Mac (ARM環境での注意点も記載)
  • Docker Desktop
  • Firecrawl: 2.4.0

1. GitHub から Clone

Firecrawl のレポジトリから git clone します。また、最新版は時々ビルドが通らなかったり、一部の機能が動作しなかったりしましたので、いずれかのリリースタグに check out することをお勧めします。今回は v2.4.0 を利用しました。

https://github.com/firecrawl/firecrawl/tree/main

2. 環境変数の設定

2.1 .envファイルの作成

apps/api/.env.example を参考に、Firecrawl のルートディレクトリ(docker-compose.yaml と同じ階層)に .env ファイルを作成します。

# ルートディレクトリに.envファイルを作成
cp apps/api/.env.example .env

2.2 Docker環境用の設定調整

.env ファイルで以下の設定を確認・調整します:

USE_DB_AUTHENTICATION=false

# オプション(必要に応じて設定)後述します。
SEARCHAPI_API_KEY=<your_searchapi_key_here>

# 接続するためのキー。今回は fc-test とします。
TEST_API_KEY=fc-test

3. 実行手順

3.1 サービス起動

# ルートディレクトリから実行
docker compose up -d

3.2 MCPとしての利用

Firecrawl を MCP Server として利用する場合、以下のように MCP 設定を行います:

{
  "command": "npx",
  "args": [
    "-y",
    "firecrawl-mcp"
  ],
  "env": {
    "FIRECRAWL_API_URL": "http://localhost:3002",
    "FIRECRAWL_API_KEY": "fc-test"
  }
}

4. Firecrawl の機能と動作確認

Firecrawl は以下の6つの主要な Tool を提供します:

Tool Name 説明 補足
firecrawl_scrape 単一ページのコンテンツ抽出
firecrawl_map Web サイト内の全 URL の検出
firecrawl_search Web 検索と結果の抽出 SearchAPI の API Key が必要
firecrawl_crawl 複数ページの一括クローリング
firecrawl_check_crawl_status クローリング状態の確認
firecrawl_extract LLM を使った構造化データ抽出 未実施。恐らく、OpenAI API Key が必要

4.1 firecrawl_search について

firecrawl_search を利用する場合、SearchAPI の API Key が必要です。SearchAPI は無料枠がありますが、詳細は SearchAPI のページで確認ください。

利用する場合は先述した .env ファイルに以下を追加します:

SEARCHAPI_API_KEY=<your_searchapi_key_here>

4.2 firecrawl_extract について

firecrawl_extract については 動作テストをしても正常応答しませんでした。恐らく、LLM を利用した構造化データ抽出機能であるため、OpenAI の API Key が必要と考えられますが、本稿では実施しません。

4.3 ARM環境下での注意事項

レポジトリにある docker-compose.yml にはローカルで Docker image をビルドしたくない場合のために Image URL が記載されていました。しかし、現時点では、ARM 版イメージが用意されていないようです。ARM 版イメージでない場合でも Docker でエミュレーションが働いて動作はしますが、パフォーマンスが大幅に劣化します。

おわりに

以上、Firecrawl を Docker Compose を使って MCP Server として起動する方法を紹介しました!
Firecrawl は強力な Web スクレイピング機能を提供するため、LLM アプリケーションと組み合わせることで、様々な用途に活用できます。

少しでも、ご参考になれば幸いです。

参考リンク

https://docs.firecrawl.dev/
https://github.com/firecrawl/firecrawl
https://docs.firecrawl.dev/mcp-server

Discussion