Skip to main content
Glama

WebSearch - 고급 웹 검색 및 콘텐츠 추출 도구

특허파이썬 버전파이어크롤자외선

Python으로 구축된 강력한 웹 검색 및 콘텐츠 추출 도구로, 고급 웹 스크래핑, 검색 및 콘텐츠 분석 기능을 제공하는 Firecrawl API를 활용합니다.

🚀 특징

  • 고급 웹 검색 : 사용자 정의 가능한 매개변수를 사용하여 지능형 웹 검색을 수행합니다.

  • 콘텐츠 추출 : 자연어 프롬프트를 사용하여 웹 페이지에서 특정 정보를 추출합니다.

  • 웹 크롤링 : 구성 가능한 깊이와 제한으로 웹사이트 크롤링

  • 웹 스크래핑 : 다양한 출력 형식을 지원하여 웹 페이지 스크래핑

  • MCP 통합 : 원활한 통합을 위한 MCP(Model Context Protocol) 서버로 구축됨

Related MCP server: Firecrawl MCP Server

📋 필수 조건

  • Python 3.8 이상

  • uv 패키지 관리자

  • Firecrawl API 키

  • OpenAI API 키(선택 사항, 향상된 기능용)

  • Tavily API 키(선택 사항, 추가 검색 기능용)

🛠️ 설치

  1. uv 설치:

지엑스피1

  1. 저장소를 복제합니다.

git clone https://github.com/yourusername/websearch.git
cd websearch
  1. uv를 사용하여 가상 환경을 만들고 활성화합니다.

# Create virtual environment
uv venv

# Activate on Windows
.\.venv\Scripts\activate.ps1

# Activate on Unix/MacOS
source .venv/bin/activate
  1. uv를 사용하여 종속성을 설치합니다.

# Install from requirements.txt
uv sync
  1. 환경 변수 설정:

# 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 도구에 액세스할 수 있습니다.

  1. Claude for Desktop 구성 파일을 찾거나 만드세요.

    • 윈도우: %env:AppData%\Claude\claude_desktop_config.json

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  2. mcpServers 섹션에 WebSearch 서버 구성을 추가합니다.

{
  "mcpServers": {
    "websearch": {
      "command": "uv",
      "args": [
        "--directory",
        "D:\\ABSOLUTE\\PATH\\TO\\WebSearch",
        "run",
        "main.py"
      ]
    }
  }
}
  1. 디렉토리 경로를 WebSearch 프로젝트 폴더의 절대 경로로 바꿔야 합니다.

  2. 구성 파일을 저장하고 Claude for Desktop을 다시 시작합니다.

  3. 구성이 완료되면 WebSearch 도구가 Claude for Desktop의 도구 메뉴(망치 아이콘)에 나타납니다.

사용 가능한 도구

  1. 찾다

  2. 정보 추출

  3. 웹사이트 크롤링

  4. 스크랩 콘텐츠

📚 API 참조

찾다

  • query (str): 검색 쿼리

  • 반환: JSON 형식의 검색 결과

발췌

  • urls (List[str]): 정보를 추출할 URL 목록

  • prompt (str): 추출 지침

  • enableWebSearch (bool): 보충 웹 검색을 활성화합니다.

  • showSources (bool): 소스 참조 포함

  • 반환: 지정된 형식으로 추출된 정보

기다

  • url (str): 시작 URL

  • maxDepth (int): 최대 크롤링 깊이

  • limit (int): 크롤링할 최대 페이지 수

  • 반환: 마크다운/HTML 형식의 크롤링된 콘텐츠

긁다

  • url (str): 대상 URL

  • 반환: 선택적 스크린샷이 포함된 스크래핑된 콘텐츠

🔧 구성

환경 변수

이 도구가 작동하려면 특정 API 키가 필요합니다. 템플릿으로 사용할 수 있는 .env.example 파일이 제공됩니다.

  1. 예제 파일을 복사하세요:

# On Unix/MacOS
cp .env.example .env

# On Windows
copy .env.example .env
  1. API 키로 .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_here

API 키 가져오기

  1. OpenAI API 키 :

    • OpenAI 플랫폼 방문

    • 가입 또는 로그인

    • API 키 섹션으로 이동

    • 새로운 비밀 키 생성

  2. Firecrawl API 키 :

모든 것이 올바르게 구성되었다면 검색 결과가 포함된 JSON 응답을 받게 됩니다.

문제 해결

오류가 발생하는 경우:

  1. 모든 필수 API 키가 .env 파일에 설정되어 있는지 확인하세요.

  2. API 키가 유효하고 만료되지 않았는지 확인하세요.

  3. .env 파일이 프로젝트의 루트 디렉토리에 있는지 확인하세요.

  4. 환경 변수가 올바르게 로드되는지 확인하세요.

🤝 기여하기

  1. 저장소를 포크하세요

  2. 기능 브랜치를 생성합니다( git checkout -b feature/AmazingFeature )

  3. 변경 사항을 커밋합니다( git commit -m 'Add some AmazingFeature' )

  4. 브랜치에 푸시( git push origin feature/AmazingFeature )

  5. 풀 리퀘스트 열기

📝 라이센스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

🙏 감사의 말

  • 강력한 웹 스크래핑 API를 제공하는 Firecrawl

  • AI 기능을 위한 OpenAI

  • MCP 프로토콜 사양을 위한 MCP 커뮤니티

📬 문의하기

호세 마르틴 로드리게스 모르탈로니(José Martín Rodriguez Mortaloni) - @m4s1t425 - jmrodriguezm13@gmail.com


Python과 Firecrawl을 사용하여 ❤️로 만들었습니다.

Available Tools

4 tools
crawlB

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
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
maxDepthYes
limitYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
promptYes
enabaleWebSearchYes
showSourcesYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

D1/5.0
Behavior1/5

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.

Conciseness1/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose1/5

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.

Usage Guidelines1/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedcrawl
    • First observedextract
    • First observedscrape
    • First observedsearch

TDQS

C2.4/5.0

Scored across 4 tools

Disambiguation2/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness3/5

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that enables web scraping, crawling, and content extraction capabilities through integration with Firecrawl.
    8
    22,552 npm
    2
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A 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
    -