@mendableai/firecrawl Mcp Server について
@mendableai/firecrawl Mcp Server は、MCP サーバーを通じて AI エージェントや MCP 対応クライアントに Firecrawl のウェブデータ機能を提供します。検索、スクレイピング、ページ操作、クロール、文書解析に対応します。
主な機能
- 01ウェブ検索とページ内容の取得
- 02URL を Markdown、JSON、画像に変換
- 03操作やプロンプトによるページ操作
- 04サイトのクロールと URL の発見
- 05PDF、DOCX などの文書解析
- 06URL の一括取得と変更の監視
活用シーン
- 01検索結果からページ内容を収集
- 02ウェブページや文書から構造化データを抽出
- 03情報抽出前にページを操作
- 04サイト内のページ収集や内容変更の追跡
MCP 対応
この MCP サーバーは、ウェブ検索、スクレイピング、ページ操作、クロール、文書解析などの Firecrawl 機能を MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🔥 Firecrawl
ウェブを大規模に検索、スクレイピング、操作するための API です。Firecrawl は AI エージェント向けのコンテキスト API です。🔥 オープンソースで、ホスト型サービスとして利用できます。
ねえ、そこのあなた、スターを付けて応援してください :)
Firecrawl を選ぶ理由
- 業界最高水準の信頼性:JS を多用したページを含むウェブの 96% をカバーします。プロキシの面倒な設定は不要で、クリーンなデータを取得できます(ベンチマークを見る)
- 圧倒的な高速性:数百万ページにわたる P95 レイテンシは 3.4 秒。リアルタイムのエージェントや動的アプリ向けに構築されています
- LLM 対応の出力:クリーンな Markdown、構造化 JSON、スクリーンショットなどを提供します。トークンを節約し、より優れた AI アプリを構築できます
- 面倒な処理はお任せください:ローテーションプロキシ、オーケストレーション、レート制限、JS でブロックされたコンテンツなどに対応し、設定は不要です
- エージェント対応:1 つのコマンドで、Firecrawl をあらゆる AI エージェントまたは MCP クライアントに接続できます
- ドキュメント解析:PDF、DOCX、その他のドキュメントをクリーンな Markdown または構造化 JSON に変換します
- 操作:コンテンツを抽出する前に、クリック、スクロール、入力、待機、キー押下を実行できます
- オープンソース:透明性と協調性を重視して開発されています。ぜひコミュニティに参加してください
機能概要
主要エンドポイント
| 機能 | 説明 |
|---|---|
| 検索 | ウェブを検索し、検索結果からページ全体のコンテンツを取得します |
| スクレイピング | あらゆる URL を Markdown、HTML、スクリーンショット、または構造化 JSON に変換します |
| 操作 | ページをスクレイピングした後、AI プロンプトまたはコードを使って操作します |
その他
| 機能 | 説明 |
|---|---|
| 解析 | PDF、DOCX、その他のドキュメントをクリーンな Markdown または構造化 JSON に変換します |
| エージェント | 必要なデータを説明するだけで、自動的に収集できます |
| クロール | 1 回のリクエストでウェブサイトのすべての URL をスクレイピングします |
| マップ | ウェブサイト上のすべての URL をすぐに検出します |
| 一括スクレイピング | 数千の URL を非同期でスクレイピングします |
| モニター | ウェブサイトのコンテンツが変更されたときに通知を受け取ります |
クイックスタート
firecrawl.dev で登録して、API キーを取得してください。プレイグラウンドで動作をお試しいただけます。
検索
ウェブを検索し、検索結果の全コンテンツを取得します。
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
search_result = app.search("firecrawl", limit=5)
Node.js / cURL / CLI
Node.js
import { Firecrawl } from 'firecrawl';
const app = new Firecrawl({apiKey: "fc-YOUR_API_KEY"});
app.search("firecrawl", { limit: 5 })
cURL
curl -X POST 'https://api.firecrawl.dev/v2/search' \
-H 'Authorization: Bearer fc-YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "firecrawl",
"limit": 5
}'
CLI
firecrawl search "firecrawl" --limit 5
出力:
[
{
"url": "https://firecrawl.dev",
"title": "Firecrawl",
"markdown": "Turn websites into..."
},
{
"url": "https://docs.firecrawl.dev",
"title": "Firecrawl Docs",
"markdown": "# Getting Started..."
}
]
スクレイピング
あらゆるウェブサイトから、LLM が利用しやすいコンテキスト(Markdown、JSON、スクリーンショットなど)を取得します。
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
result = app.scrape('firecrawl.dev')
Node.js / cURL / CLI
Node.js
import { Firecrawl } from 'firecrawl';
const app = new Firecrawl({ apiKey: "fc-YOUR_API_KEY" });
app.scrape('firecrawl.dev')
cURL
curl -X POST 'https://api.firecrawl.dev/v2/scrape' \
-H 'Authorization: Bearer fc-YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"url": "firecrawl.dev"
}'
CLI
firecrawl scrape https://firecrawl.dev
firecrawl https://firecrawl.dev --only-main-content
出力:
# Firecrawl
Firecrawl helps AI agents search, scrape, and interact with the web.
## Features
- Search: Find information across the web
- Scrape: Clean data from any page
- Interact: Click, navigate, and operate pages
- Agent: Autonomous data gathering
操作
ページをスクレイピングしてから、AI プロンプトまたはコードを使って操作します。
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
result = app.scrape("https://amazon.com")
scrape_id = result.metadata.scrape_id
app.interact(scrape_id, prompt="Search for 'mechanical keyboard'")
app.interact(scrape_id, prompt="Click the first result")
Node.js / cURL / CLI
Node.js
import { Firecrawl } from 'firecrawl';
const app = new Firecrawl({apiKey: "fc-YOUR_API_KEY"});
const result = await app.scrape("https://amazon.com");
await app.interact(result.metadata.scrapeId, {
prompt: "Search for 'mechanical keyboard'"
});
await app.interact(result.metadata.scrapeId, {
prompt: "Click the first result"
});
cURL
# 1. Scrape the page
curl -X POST 'https://api.firecrawl.dev/v2/scrape' \
-H 'Authorization: Bearer fc-YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"url": "https://amazon.com"}'
# 2. Interact with the page (use scrapeId from step 1)
curl -X POST 'https://api.firecrawl.dev/v2/scrape/SCRAPE_ID/interact' \
-H 'Authorization: Bearer fc-YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"prompt": "Search for mechanical keyboard"}'
CLI
firecrawl scrape https://amazon.com
firecrawl interact exec --prompt "Search for 'mechanical keyboard'"
firecrawl interact exec --prompt "Click the first result"
出力:
{
"success": true,
"output": "Keyboard available at $100",
"liveViewUrl": "https://liveview.firecrawl.dev/..."
}
エージェントを強化
Firecrawl をあらゆる AI エージェントまたは MCP クライアントに数分で接続できます。
スキル
1つのコマンドで、エージェントからリアルタイムのウェブデータに簡単にアクセスできるようにします。
npx -y firecrawl-cli@latest init --all --browser
インストール後、エージェントを再起動してください。Claude Code、Antigravity、OpenCodeなどで利用できます。
MCP
MCP 対応クライアントを数秒でウェブに接続できます。
{
"mcpServers": {
"firecrawl-mcp": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "fc-YOUR_API_KEY"
}
}
}
}
エージェントのオンボーディング
AI エージェントですか?このスキルを取得して、ユーザーの登録と API キーの取得を行い、Firecrawl を使った開発を始めましょう。
curl -s https://firecrawl.dev/agent-onboarding/SKILL.md
利用可能なすべてのコマンドについては、Skill + CLI のドキュメントをご覧ください。MCP については、firecrawl-mcp-serverをご覧ください。
その他のエンドポイント
エージェント
**ウェブからデータを取得する最も簡単な方法です。**必要な情報を説明すると、AI エージェントが検索、ナビゲーション、取得を行います。URL は必要ありません。
エージェントは /extract エンドポイントを進化させたもので、より高速で信頼性が高く、事前に URL を把握しておく必要もありません。
curl -X POST 'https://api.firecrawl.dev/v2/agent' \
-H 'Authorization: Bearer fc-YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"prompt": "Find the pricing plans for Notion"
}'
レスポンス:
{
"success": true,
"data": {
"result": "Notion offers the following pricing plans:\n\n1. Free - $0/month...\n2. Plus - $10/seat/month...\n3. Business - $18/seat/month...",
"sources": ["https://www.notion.so/pricing"]
}
}
構造化出力を使ったエージェント
スキーマを使って構造化データを取得します:
from firecrawl import Firecrawl
from pydantic import BaseModel, Field
from typing import List, Optional
app = Firecrawl(api_key="fc-YOUR_API_KEY")
class Founder(BaseModel):
name: str = Field(description="Full name of the founder")
role: Optional[str] = Field(None, description="Role or position")
class FoundersSchema(BaseModel):
founders: List[Founder] = Field(description="List of founders")
result = app.agent(
prompt="Find the founders of Firecrawl",
schema=FoundersSchema
)
print(result.data)
{
"founders": [
{"name": "Eric Ciarla", "role": "Co-founder"},
{"name": "Nicolas Camara", "role": "Co-founder"},
{"name": "Caleb Peffer", "role": "Co-founder"}
]
}
URL を指定したエージェント(任意)
特定のページを対象にエージェントを実行します:
result = app.agent(
urls=["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
prompt="Compare the features and pricing information"
)
推論量の選択
エージェントがタスクに費やす推論量を設定します:
| 推論量 | 最適な用途 |
|---|---|
low | 1つのサイトでの簡単な検索 |
medium | 数ページにわたる複数ステップのタスク |
high | 詳細な調査、複雑なナビゲーション、重要なデータ |
result = app.agent(
prompt="Compare enterprise features across Firecrawl, Apify, and ScrapingBee",
effort="high"
)
すべての推論量で spark-2 モデルが実行されます。推論量によって変わるのは推論予算であり、モデルではありません。
モデル
エージェントの実行では、デフォルトの spark-2 が使用されるため、model を設定する必要はありません。廃止された spark-1-pro と spark-1-mini も後方互換性のために引き続き受け付けられますが、非推奨であり、実行時には spark-2 が使用されます。
Spark モデルの詳細は、エージェントのドキュメントをご覧ください。
クロール
ウェブサイト全体をクロールし、すべてのページからコンテンツを取得します。
curl -X POST 'https://api.firecrawl.dev/v2/crawl' \
-H 'Authorization: Bearer fc-YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://docs.firecrawl.dev",
"limit": 100,
"scrapeOptions": {
"formats": ["markdown"]
}
}'
ジョブ ID が返されます:
{
"success": true,
"id": "123-456-789",
"url": "https://api.firecrawl.dev/v2/crawl/123-456-789"
}
クロールのステータスを確認
curl -X GET 'https://api.firecrawl.dev/v2/crawl/123-456-789' \
-H 'Authorization: Bearer fc-YOUR_API_KEY'
{
"status": "completed",
"total": 50,
"completed": 50,
"creditsUsed": 50,
"data": [
{
"markdown": "# Page Title\n\nContent...",
"metadata": {"title": "Page Title", "sourceURL": "https://..."}
}
]
}
注:SDKは、開発者が使いやすいようにポーリングを自動で処理します。
マップ
ウェブサイト上のすべての URL をすぐに検出します。
curl -X POST 'https://api.firecrawl.dev/v2/map' \
-H 'Authorization: Bearer fc-YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"url": "https://firecrawl.dev"}'
レスポンス:
{
"success": true,
"links": [
{"url": "https://firecrawl.dev", "title": "Firecrawl", "description": "The context API for AI agents"},
{"url": "https://firecrawl.dev/pricing", "title": "Pricing", "description": "Firecrawl pricing plans"},
{"url": "https://firecrawl.dev/blog", "title": "Blog", "description": "Firecrawl blog"}
]
}
検索を使ったマップ
サイト内で特定の URL を見つけます:
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
result = app.map("https://firecrawl.dev", search="pricing")
# Returns URLs ordered by relevance to "pricing"
バッチスクレイピング
複数の URL を一度にスクレイピングします:
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
job = app.batch_scrape([
"https://firecrawl.dev",
"https://docs.firecrawl.dev",
"https://firecrawl.dev/pricing"
], formats=["markdown"])
for doc in job.data:
print(doc.metadata.source_url)
SDK
SDK を使うと、Firecrawl のすべての機能を便利に利用でき、非同期処理のポーリングも自動で処理されます。
Python
SDK をインストールします:
pip install firecrawl
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
# Scrape a single URL
doc = app.scrape("https://firecrawl.dev", formats=["markdown"])
print(doc.markdown)
# Use the Agent for autonomous data gathering
result = app.agent(prompt="Find the founders of Stripe")
print(result.data)
# Crawl a website (automatically waits for completion)
docs = app.crawl("https://docs.firecrawl.dev", limit=50)
for doc in docs.data:
print(doc.metadata.source_url, doc.markdown[:100])
# Search the web
results = app.search("best AI data tools 2024", limit=10)
print(results)
Node.js
SDK をインストールします:
npm install firecrawl
import { Firecrawl } from 'firecrawl';
const app = new Firecrawl({ apiKey: 'fc-YOUR_API_KEY' });
// Scrape a single URL
const doc = await app.scrape('https://firecrawl.dev', { formats: ['markdown'] });
console.log(doc.markdown);
// Use the Agent for autonomous data gathering
const result = await app.agent({ prompt: 'Find the founders of Stripe' });
console.log(result.data);
// Crawl a website (automatically waits for completion)
const docs = await app.crawl('https://docs.firecrawl.dev', { limit: 50 });
docs.data.forEach(doc => {
console.log(doc.metadata.sourceURL, doc.markdown.substring(0, 100));
});
// Search the web
const results = await app.search('best AI data tools 2024', { limit: 10 });
results.data.web.forEach(result => {
console.log(`${result.title}: ${result.url}`);
});
Go
SDK をインストールします:
go get github.com/firecrawl/firecrawl/apps/go-sdk
package main
import (
"context"
"fmt"
"log"
firecrawl "github.com/firecrawl/firecrawl/apps/go-sdk"
"github.com/firecrawl/firecrawl/apps/go-sdk/option"
)
func main() {
// Create a client (reads FIRECRAWL_API_KEY from environment)
client, err := firecrawl.NewClient(option.WithAPIKey("fc-YOUR_API_KEY"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Scrape a single URL
doc, err := client.Scrape(ctx, "https://firecrawl.dev", &firecrawl.ScrapeOptions{
Formats: []string{"markdown"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(doc.Markdown)
// Use the Agent for autonomous data gathering
agent, err := client.Agent(ctx, &firecrawl.AgentOptions{
Prompt: "Find the founders of Stripe",
})
if err != nil {
log.Fatal(err)
}
fmt.Println(agent.Data)
// Crawl a website (automatically waits for completion)
job, err := client.Crawl(ctx, "https://docs.firecrawl.dev", &firecrawl.CrawlOptions{
Limit: firecrawl.Int(50),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Crawled %d pages\n", len(job.Data))
// Search the web
results, err := client.Search(ctx, "best AI data tools 2024", &firecrawl.SearchOptions{
Limit: firecrawl.Int(10),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(results)
}
Java
依存関係を追加します(Gradle/Maven):
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.firecrawl:firecrawl-java-sdk:2.0'
}
import dev.firecrawl.client.FirecrawlClient;
import dev.firecrawl.model.*;
FirecrawlClient client = new FirecrawlClient(
System.getenv("FIRECRAWL_API_KEY"), null, null
);
// Scrape a single URL
ScrapeParams scrapeParams = new ScrapeParams();
scrapeParams.setFormats(new String[]{"markdown"});
FirecrawlDocument doc = client.scrapeURL("https://firecrawl.dev", scrapeParams);
System.out.println(doc.getMarkdown());
// Use the Agent for autonomous data gathering
AgentParams agentParams = new AgentParams("Find the founders of Stripe");
AgentResponse start = client.createAgent(agentParams);
AgentStatusResponse result = client.getAgentStatus(start.getId());
System.out.println(result.getData());
// Crawl a website (polls until completion)
CrawlParams crawlParams = new CrawlParams();
crawlParams.setLimit(50);
CrawlStatusResponse job = client.crawlURL("https://docs.firecrawl.dev", crawlParams, null, 10);
for (FirecrawlDocument page : job.getData()) {
System.out.println(page.getMetadata().get("sourceURL"));
}
// Search the web
SearchParams searchParams = new SearchParams("best AI data tools 2024");
searchParams.setLimit(10);
SearchResponse results = client.search(searchParams);
for (SearchResult r : results.getResults()) {
System.out.println(r.getTitle() + ": " + r.getUrl());
}
Elixir
依存関係を追加します:
def deps do
[
{:firecrawl, "~> 1.0"}
]
end
# Scrape a URL
{:ok, response} = Firecrawl.scrape_and_extract_from_url(
url: "https://firecrawl.dev",
formats: ["markdown"]
)
# Crawl a website
{:ok, response} = Firecrawl.crawl_urls(
url: "https://docs.firecrawl.dev",
limit: 50
)
# Search the web
{:ok, response} = Firecrawl.search_and_scrape(
query: "best AI data tools 2024",
limit: 10
)
# Map URLs
{:ok, response} = Firecrawl.map_urls(url: "https://example.com")
Rust
依存関係を追加します:
[dependencies]
firecrawl = "2"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
use firecrawl::{Client, ScrapeOptions, Format, CrawlOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new("fc-YOUR_API_KEY")?;
// Scrape a URL
let document = client.scrape("https://firecrawl.dev", None).await?;
println!("{:?}", document.markdown);
// Crawl a website
let options = CrawlOptions {
limit: Some(50),
..Default::default()
};
let result = client.crawl("https://docs.firecrawl.dev", options).await?;
println!("Crawled {} pages", result.data.len());
// Search the web
let response = client.search("best web scraping tools 2024", None).await?;
println!("{:?}", response.data);
Ok(())
}
Ruby
SDK をインストールします:
gem install firecrawl-sdk
require "firecrawl"
client = Firecrawl::Client.new(api_key: "fc-YOUR_API_KEY")
# Scrape a single URL
doc = client.scrape("https://firecrawl.dev",
Firecrawl::Models::ScrapeOptions.new(formats: ["markdown"]))
puts doc.markdown
# Use the Agent for autonomous data gathering
result = client.agent(
Firecrawl::Models::AgentOptions.new(prompt: "Find the founders of Stripe"))
puts result.data
# Crawl a website (automatically waits for completion)
job = client.crawl("https://docs.firecrawl.dev",
Firecrawl::Models::CrawlOptions.new(limit: 50))
job.data.each { |d| puts d.metadata.source_url }
# Search the web
results = client.search("best AI data tools 2024",
Firecrawl::Models::SearchOptions.new(limit: 10))
puts results
.NET
SDK をインストールします:
dotnet add package firecrawl-sdk
using Firecrawl;
using Firecrawl.Models;
var client = new FirecrawlClient("fc-YOUR_API_KEY");
// Scrape a single URL
var doc = await client.ScrapeAsync("https://firecrawl.dev",
new ScrapeOptions { Formats = new List<object> { "markdown" } });
Console.WriteLine(doc.Markdown);
// Crawl a website (automatically waits for completion)
var job = await client.CrawlAsync("https://docs.firecrawl.dev",
new CrawlOptions { Limit = 50 });
Console.WriteLine($"Crawled {job.Data.Count} pages");
// Search the web
var results = await client.SearchAsync("best AI data tools 2024",
new SearchOptions { Limit = 10 });
Console.WriteLine(results);
PHP
SDK をインストールします:
composer require firecrawl/firecrawl-sdk
<?php
use Firecrawl\Client\FirecrawlClient;
use Firecrawl\Models\ScrapeOptions;
use Firecrawl\Models\CrawlOptions;
use Firecrawl\Models\SearchOptions;
$client = FirecrawlClient::create(apiKey: 'fc-YOUR_API_KEY');
// Scrape a single URL
$doc = $client->scrape('https://firecrawl.dev', ScrapeOptions::with(
formats: ['markdown'],
));
echo $doc->getMarkdown();
// Crawl a website (automatically waits for completion)
$job = $client->crawl('https://docs.firecrawl.dev', CrawlOptions::with(limit: 50));
foreach ($job->getData() as $page) {
echo $page->getMetadata()['sourceURL'] . "\n";
}
// Search the web
$results = $client->search('best AI data tools 2024', SearchOptions::with(limit: 10));
print_r($results);
インテグレーション
エージェントと AI ツール
- Firecrawl Skills Catalog —
npx skills add firecrawl/skillsでインストール - Firecrawl CLI
- Firecrawl MCP
製品コードに Firecrawl を統合するビルドスキルは、このリポジトリの skills/ に作成されており、CI によってカタログにミラーリングされます。スキルへの貢献をお考えですか?CLI スキル(リサーチ/開発者向けインデックススキルを含む)→ PR firecrawl/cli。ビルド/SDK スキル → このリポジトリ(skills/)に PR。ワークフロースキル → PR firecrawl/firecrawl-workflows。カタログ(firecrawl/skills)は読み取り専用です。直接 PR を作成しないでください。
プラットフォーム
お探しのツールが見つかりませんか? Issue を作成してお知らせください!
リソース
オープンソース版とクラウド版
Firecrawl は AGPL-3.0 ライセンスのオープンソースです。firecrawl.dev のクラウド版には、追加機能が含まれています。

ローカルで実行する方法については、貢献ガイドをご覧ください。セルフホストする方法については、セルフホストガイドをご覧ください。
貢献
皆様からの貢献を歓迎します!プルリクエストを送信する前に、貢献ガイドをお読みください。
コントリビューター
ライセンス
このプロジェクトは主に GNU Affero General Public License v3.0(AGPL-3.0)の下でライセンスされています。SDK と一部の UI コンポーネントは MIT ライセンスの下でライセンスされています。詳細は各ディレクトリにある LICENSE ファイルをご覧ください。
**スクレイピングの際にウェブサイトのポリシーを遵守することは、エンドユーザーの単独の責任です。**ユーザーは、適用されるプライバシーポリシーと利用規約を遵守することが推奨されます。Firecrawl はデフォルトで robots.txt の指示を尊重します。Firecrawl を使用することで、これらの条件に従うことに同意したものとみなされます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。