WebSearch
WebSearch - 高度なWeb検索およびコンテンツ抽出ツール
Python で構築された強力な Web 検索およびコンテンツ抽出ツールで、Firecrawl API を活用して高度な Web スクレイピング、検索、コンテンツ分析機能を実現します。
🚀 機能
高度なウェブ検索: カスタマイズ可能なパラメータを使用してインテリジェントなウェブ検索を実行します
コンテンツ抽出:自然言語プロンプトを使用してWebページから特定の情報を抽出します
Web クロール: 設定可能な深さと制限で Web サイトをクロールします
Webスクレイピング: さまざまな出力形式をサポートしたWebページをスクレイピングします
MCP統合:シームレスな統合を実現するモデルコンテキストプロトコル(MCP)サーバーとして構築
Related MCP server: Firecrawl MCP Server
📋 前提条件
Python 3.8以上
UVパッケージマネージャー
Firecrawl APIキー
OpenAI API キー(オプション、拡張機能用)
Tavily API キー(オプション、追加の検索機能用)
🛠️ インストール
uvをインストールします:
# On Windows (using pip)
pip install uv
# On Unix/MacOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Add uv to PATH (Unix/MacOS)
export PATH="$HOME/.local/bin:$PATH"
# Add uv to PATH (Windows - add to Environment Variables)
# Add: %USERPROFILE%\.local\binリポジトリをクローンします。
git clone https://github.com/yourusername/websearch.git
cd websearchuv を使用して仮想環境を作成し、アクティブ化します。
# Create virtual environment
uv venv
# Activate on Windows
.\.venv\Scripts\activate.ps1
# Activate on Unix/MacOS
source .venv/bin/activateuv を使用して依存関係をインストールします。
# Install from requirements.txt
uv sync環境変数を設定します。
# Create .env file
touch .env
# Add your API keys
FIRECRAWL_API_KEY=your_firecrawl_api_key
OPENAI_API_KEY=your_openai_api_key🎯 使用方法
Claude のデスクトップ版の設定
サーバーを直接実行する代わりに、Claude for Desktop が WebSearch ツールにアクセスするように構成できます。
Claude for Desktop 構成ファイルを見つけるか作成します。
Windows:
%env:AppData%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
WebSearch サーバー構成を
mcpServersセクションに追加します。
{
"mcpServers": {
"websearch": {
"command": "uv",
"args": [
"--directory",
"D:\\ABSOLUTE\\PATH\\TO\\WebSearch",
"run",
"main.py"
]
}
}
}ディレクトリ パスを、WebSearch プロジェクト フォルダーへの絶対パスに置き換えてください。
設定ファイルを保存し、Claude for Desktop を再起動します。
設定が完了すると、WebSearch ツールが Claude for Desktop のツール メニュー (ハンマー アイコン) に表示されます。
利用可能なツール
検索
情報抽出
ウェブサイトをクロールする
コンテンツをスクレイピングする
📚 APIリファレンス
検索
query(str): 検索クエリ戻り値: JSON形式の検索結果
抽出する
urls(List[str]): 情報を抽出するURLのリストprompt(str): 抽出の指示enableWebSearch(bool): 補助的なウェブ検索を有効にするshowSources(bool): ソース参照を含める戻り値: 指定された形式で抽出された情報
クロール
url(str): 開始URLmaxDepth(int): 最大クロール深度limit(int): クロールする最大ページ数戻り値: クロールされたコンテンツをマークダウン/HTML形式で返します
削る
url(str): ターゲットURL戻り値: オプションのスクリーンショットを含むスクレイピングされたコンテンツ
🔧 構成
環境変数
このツールが機能するには特定のAPIキーが必要です。テンプレートとして使用できる.env.exampleファイルをご用意しております。
サンプルファイルをコピーします。
# On Unix/MacOS
cp .env.example .env
# On Windows
copy .env.example .envAPI キーを使用して
.envファイルを編集します。
# OpenAI API key - Required for AI-powered features
OPENAI_API_KEY=your_openai_api_key_here
# Firecrawl API key - Required for web scraping and searching
FIRECRAWL_API_KEY=your_firecrawl_api_key_hereAPIキーの取得
OpenAI APIキー:
OpenAIのプラットフォームを訪問する
サインアップまたはログイン
APIキーセクションに移動する
新しい秘密鍵を作成する
Firecrawl APIキー:
Firecrawlのウェブサイトをご覧ください
アカウントを作成する
ダッシュボードに移動する
新しいAPIキーを生成する
すべてが正しく設定されていれば、検索結果を含む JSON 応答が返されます。
トラブルシューティング
エラーが発生した場合:
.envファイルに必要なすべての API キーが設定されていることを確認します。APIキーが有効であり、期限が切れていないことを確認します
.envファイルがプロジェクトのルートディレクトリにあることを確認します。環境変数が正しく読み込まれていることを確認してください
🤝 貢献する
リポジトリをフォークする
機能ブランチを作成します(
git checkout -b feature/AmazingFeature)変更をコミットします(
git commit -m 'Add some AmazingFeature')ブランチにプッシュする (
git push origin feature/AmazingFeature)プルリクエストを開く
📝 ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。
🙏 謝辞
📬 お問い合わせ
ホセ・マルティン・ロドリゲス・モルタローニ - @m4s1t425 - jmrodriguezm13@gmail.com
PythonとFirecrawlを使って❤️で作りました
Available Tools
4 toolscrawlB
Crawls a website starting from the specified URL and extracts content from multiple pages. Args: - url: The complete URL of the web page to start crawling from - maxDepth: The maximum depth level for crawling linked pages - limit: The maximum number of pages to crawl
Returns:
- Content extracted from the crawled pages in markdown and HTML format
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| maxDepth | Yes | ||
| limit | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool crawls and extracts content, implying it performs read operations, but lacks details on permissions, rate limits, potential impacts on target sites, or error handling. For a web crawling tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a concise opening sentence states the purpose, followed by a bulleted list for args and returns. Every sentence earns its place by delivering essential information without redundancy, making it easy to parse and front-loaded with key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (web crawling with 3 parameters), no annotations, and no output schema, the description is moderately complete. It covers the basic purpose and parameters but lacks details on behavioral traits, error cases, or output format specifics beyond 'markdown and HTML format'. This is adequate for a minimal viable description but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial meaning beyond the input schema, which has 0% description coverage. It explains each parameter's purpose: 'url' as the starting point, 'maxDepth' for crawl depth, and 'limit' for page count. This compensates well for the schema's lack of descriptions, providing clear semantics for all three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Crawls a website starting from the specified URL and extracts content from multiple pages.' It specifies the verb ('crawls'), resource ('website'), and scope ('extracts content from multiple pages'), making the action clear. However, it doesn't explicitly differentiate from sibling tools like 'extract' or 'scrape', which likely have overlapping functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'extract' or 'scrape'. It mentions the tool's function but offers no context about prerequisites, exclusions, or comparative use cases. This leaves the agent without clear direction for tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extractB
Extracts specific information from a web page based on a prompt. Args: - url: The complete URL of the web page to extract information from - prompt: Instructions specifying what information to extract from the page - enabaleWebSearch: Whether to allow web searches to supplement the extraction - showSources: Whether to include source references in the response
Returns:
- Extracted information from the web page based on the prompt
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| prompt | Yes | ||
| enabaleWebSearch | Yes | ||
| showSources | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool extracts information and includes parameters for web search and source references, but doesn't describe what happens during extraction (e.g., rate limits, authentication needs, error conditions, or what 'extracted information' looks like). For a tool with 4 parameters and no annotations, this is insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement followed by parameter explanations and return value description. It's appropriately sized for a 4-parameter tool, though the 'Returns' section could be more specific. Every sentence adds value, and there's no unnecessary repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no annotations, no output schema), the description is moderately complete. It covers the basic purpose and parameters but lacks details about behavioral traits, error handling, and what the extracted information actually contains. Without an output schema, the return value description is vague ('Extracted information from the web page based on the prompt').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides clear semantic explanations for all 4 parameters beyond what the input schema offers (which has 0% description coverage). It explains that 'url' is for the web page, 'prompt' specifies what to extract, 'enableWebSearch' allows supplemental searches, and 'showSources' includes references. This adds significant value over the bare schema, though it doesn't detail parameter interactions or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: extracting specific information from a web page based on a prompt. It specifies the verb ('extracts') and resource ('web page'), but doesn't explicitly differentiate from sibling tools like 'crawl', 'scrape', or 'search' beyond the extraction focus. The description is specific about the action but lacks sibling tool comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'crawl', 'scrape', or 'search'. It doesn't mention prerequisites, use cases, or exclusions. The only implied usage is for extracting information from web pages, but with no context about when this is preferable to other tools on the server.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrapeD
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchC
Performs web searches and retrieves up-to-date information from the internet. Args: - prompt: Specific query or topic to search for on the internet - limit: Maximum number of results to return (between 1 and 20)
Returns:
- Search results with relevant information about the requested topic
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions retrieving 'up-to-date information' and a limit on results, which adds some context. However, it doesn't cover critical aspects like rate limits, authentication needs, error handling, or what 'up-to-date' means (e.g., real-time vs. cached). For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized, with a clear purpose statement followed by parameter and return sections. It uses bullet points for readability, and each sentence adds value without unnecessary fluff. However, the parameter mismatch slightly reduces efficiency, but overall it's concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and low schema coverage (0%), the description is incomplete. It provides basic purpose and some behavioral hints but lacks details on parameters (due to mismatch), error cases, or output structure. For a web search tool with potential complexity, this leaves the agent under-informed about how to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists two parameters (prompt and limit), but the input schema only has one parameter (query). This creates a contradiction, as 'prompt' in the description doesn't match 'query' in the schema. With 0% schema description coverage and mismatched parameters, the description fails to add meaningful semantics beyond the schema and actually misleads about the tool's inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Performs web searches and retrieves up-to-date information from the internet.' This specifies the verb ('performs web searches') and resource ('information from the internet'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like crawl, extract, or scrape, which likely have overlapping internet-related functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like crawl, extract, or scrape, nor does it specify scenarios where search is preferred over them. The usage context is implied (web searches for up-to-date information) but lacks explicit when/when-not instructions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
crawl - First observed
extract - First observed
scrape - First observed
search
TDQS
Scored across 4 tools
The tools have significant overlap and unclear boundaries. 'crawl' extracts content from multiple pages, 'extract' pulls specific info from a single page, and 'scrape' (with no description) is ambiguous—likely overlapping with both. 'search' is distinct for web searches, but the others could easily be confused for similar web content tasks.
All tool names follow a consistent, simple verb pattern (crawl, extract, scrape, search). They are short, clear, and uniformly styled without mixing conventions, making them predictable and easy to parse.
Four tools is reasonable for a web search domain, allowing coverage of crawling, extraction, scraping, and searching. It's slightly thin but manageable, as each tool addresses a core aspect of web data retrieval without being overly bloated.
There are notable gaps in the tool surface. The server covers basic retrieval (crawl, search) and extraction, but lacks update/delete operations (e.g., no tool to modify or clear cached data) and has a dead tool ('scrape' with no description), which limits functionality. However, agents can work around this for common web search tasks.
Related MCP Connectors
Firecrawl MCP — wraps the Firecrawl API (firecrawl.dev) for web
Scrape, crawl and search the web for AI agents via MCP.
Free web search for AI agents. No API key required. Hosted MCP in active development.
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol server that enables web search, scraping, crawling, and content extraction through multiple engines including SearXNG, Firecrawl, and Tavily.4121 npm141MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI assistants to perform advanced web scraping, crawling, searching, and data extraction through the Firecrawl API.922,552 npmMIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables web scraping, crawling, and content extraction capabilities through integration with Firecrawl.822,552 npm2MIT
- FlicenseAqualityDmaintenanceA production-ready Model Context Protocol (MCP) server that integrates with the Firecrawl API to give AI assistants the power to scrape, crawl, and search the web.3-
Appeared in Searches
- Web search tools and methods that don't require API keys
- A server for searching research papers, Kaggle datasets, and websites for ML/AI model training data
- iPhone 16e camera review summary and table creation in Italian
- Web scraping and content extraction
- Web scraping tool for extracting content from SearXNG search results