Skip to main content
Glama
iuiu-py
by iuiu-py

WebSearch MCP 포지

AI 에이전트를 위한 가볍고 통합된 WebSearch MCP.

하나의 MCP 서버로 공개 웹을 검색하고, 읽고, 크롤링하고, 파싱하고, 리서치하세요.

빠른 시작 · 도구 · 아키텍처 · 엔진 구성 · 中文文档

Python MCP SearXNG Windows

개요

WebSearch Forge MCP는 에이전트 기반 웹 리서치를 위한 독립형 MCP 서비스입니다:

Question → search sources → fetch pages → extract content → crawl related pages → compile evidence

다음과 같은 명확한 계층으로 구성됩니다:

  • transports는 MCP stdio와 선택적 FastAPI 어댑터를 제공합니다.

  • core는 구성, 캐싱, 보안 검사, 오케스트레이션 및 리서치 워크플로를 담당합니다.

  • providers는 검색, 가져오기, 추출, 크롤링 및 미디어 기능을 구현합니다.

  • SearXNG는 Bing, Baidu, Brave, DuckDuckGo 및 기타 구성된 엔진을 위한 단일 검색 게이트웨이입니다.

Related MCP server: myscrape

주요 기능

하나의 MCP 서버, 여섯 가지 기능

transports/mcp_stdio.py에 한 번만 연결하세요:

도구

용도

search_web

SearXNG를 통해 후보 소스 찾기

fetch_web_content

공개 URL 하나를 가져와 추출

search_and_fetch

검색 후 상위 결과 읽기

deep_research

여러 검색을 실행하고 보고서 작성

crawl_site

동일 도메인 사이트를 제한적으로 재귀 크롤링

youtube_transcript

YouTube 자막 가져오기

통합 검색 게이트웨이

engines 인수는 필터로 SearXNG에 전달됩니다. WebSearch Forge는 검색 웹사이트에 독립적으로 팬아웃하지 않습니다:

WebSearch Forge MCP → SearXNG → Bing / Baidu / Brave / DuckDuckGo

기본적으로 가벼움

MCP stdio는 노출된 애플리케이션 포트나 데이터베이스 서버가 필요 없습니다. 캐시는 SQLite입니다. 선택적 패키지는 MCP 계약을 변경하지 않고 Trafilatura, Readability, 스텔스 요청, Playwright, Office/PDF 파싱, Scrapy, YouTube 자막 및 FastAPI를 추가합니다.

제한된 크롤링

crawl_site는 의존성이 없는 네이티브 백엔드와 선택적 Scrapy 백엔드를 지원합니다. 페이지 및 깊이 제한을 적용하고, 시작 호스트에 머물며, 상대 링크를 해석하고, 페이지 실패를 격리합니다.

빠른 시작

다음 명령은 Windows PowerShell용입니다.

설치

cd D:\my-websearch\my_websearch
py -3.12 -m pip install -r requirements.txt

SearXNG 시작

docker version
cd D:\my-websearch\my_websearch
docker compose up -d searxng
docker compose ps

기본 게이트웨이는 http://127.0.0.1:8080입니다. 구성은 config/searxng/settings.yml에 있습니다.

MCP 클라이언트 구성

mcp_config.example.json을 사용하고 절대 경로를 유지하세요:

{
  "mcpServers": {
    "websearch-forge": {
      "command": "py",
      "args": [
        "-3.12",
        "D:\\my-websearch\\my_websearch\\transports\\mcp_stdio.py"
      ],
      "env": {
        "SEARXNG_URL": "http://127.0.0.1:8080",
        "CACHE_TTL": "300"
      }
    }
  }
}

stdio 어댑터는 Windows에서 UTF-8을 강제합니다. 루프백 트래픽은 기본적으로 머신 전체 프록시 변수를 우회합니다. 필요 시 PROXY_URL을 명시적으로 설정하세요.

도구

search_web

페이지 본문을 다운로드하지 않고 SearXNG를 통해 검색합니다.

{
  "name": "search_web",
  "arguments": {
    "query": "Python 3.14 new features",
    "engines": ["bing", "baidu", "brave"],
    "limit": 5,
    "time_range": "month"
  }
}

fetch_web_content

공개 URL 하나를 가져와 추출합니다. HTML, PDF, DOCX, XLSX, PPTX, CSV, Markdown 및 일반 텍스트가 지원됩니다.

{
  "name": "fetch_web_content",
  "arguments": {
    "url": "https://www.python.org",
    "max_chars": 10000,
    "stealth_mode": "off",
    "render_mode": "auto",
    "extraction_mode": "auto"
  }
}

응답에는 최종 URL, HTTP 상태, 제목, 추출 방법, 단어 수, 콘텐츠 및 발견된 링크가 포함됩니다.

search_and_fetch

먼저 검색한 다음 상위 결과를 독립적으로 가져옵니다. 실패한 페이지는 해당 항목에 기록되며 배치를 취소하지 않습니다.

{
  "name": "search_and_fetch",
  "arguments": {
    "query": "FastAPI MCP server",
    "limit": 3,
    "max_chars": 12000
  }
}

deep_research

관련 쿼리를 동시에 실행하고, 가장 강력한 결과를 가져와 소스 수준의 실패를 포함한 Markdown 보고서를 반환합니다.

{
  "name": "deep_research",
  "arguments": {
    "queries": ["SearXNG engine configuration", "MCP stdio deployment"],
    "breadth": 3,
    "max_chars": 12000
  }
}

crawl_site

하드 페이지 및 깊이 제한으로 동일 호스트 사이트를 크롤링합니다.

{
  "name": "crawl_site",
  "arguments": {
    "url": "https://www.python.org",
    "max_pages": 10,
    "max_depth": 2,
    "backend": "native",
    "stealth_mode": "off"
  }
}

native가 기본값입니다. Scrapy를 설치하고 backend를 scrapy로 설정하여 선택적 백엔드를 사용하세요. 각 페이지는 URL, 깊이, 상태, 가져오기 방법, 제목, 콘텐츠 및 단어 수를 보고합니다.

youtube_transcript

선택적 소스 및 번역 언어로 YouTube 자막을 가져옵니다.

응답 형식

{
  "query": "OpenAI",
  "provider": "searxng",
  "engines": ["bing", "baidu", "brave"],
  "total_results": 3,
  "results": [
    {
      "title": "OpenAI | Research & Deployment",
      "url": "https://openai.com/",
      "description": "...",
      "source": "openai.com",
      "engine": "bing",
      "score": 1.0
    }
  ],
  "partial_failures": []
}

성공적인 부분 결과는 보존됩니다. 엔진, 페이지 및 문서 오류는 구조화된 실패 항목으로 반환됩니다.

아키텍처

flowchart LR
    A[Agent / MCP Client] -->|stdio JSON-RPC| B[transports/mcp_stdio.py]
    B --> C[core/service.py]
    C --> D[providers/search]
    D --> E[SearXNG]
    E --> F[Bing / Baidu / Brave / DDG]
    C --> G[providers/content]
    G --> H[HTTP / stealth / Playwright]
    C --> I[providers/crawl]
    C --> J[providers/media]
    C --> K[(SQLite TTL cache)]
  • transports는 프로토콜을 조정합니다. MCP와 FastAPI는 동일한 서비스를 공유합니다.

  • core는 오케스트레이션, 캐시 정책, 구성 및 URL 보안을 담당합니다.

  • providers/search는 SearXNG와 통신하고 엔진 이름을 검증합니다.

  • providers/content는 HTTP, 스텔스 전송, 렌더링 및 추출을 처리합니다.

  • providers/crawl에는 네이티브 및 Scrapy 크롤링 백엔드가 포함됩니다.

  • providers/media에는 YouTube 자막 제공자가 포함됩니다.

검색 엔진 구성

프로젝트 소유의 SearXNG 소스는 다음과 같습니다:

config/searxng/settings.yml

엔진을 호출할 수 있는지 여부를 결정하는 두 가지 설정이 있습니다:

  1. settings.yml은 SearXNG 내부에서 엔진을 활성화합니다.

  2. providers/search/registry.py는 SUPPORTED_ENGINES에 허용된 이름을 나열합니다.

변경 후 재시작:

cd D:\my-websearch\my_websearch
docker compose up -d --force-recreate searxng

SearXNG가 아직 엔진을 제공하지 않으면 먼저 해당 SearXNG 엔진을 구현하세요.

보안 및 안정성

  • HTTP 및 HTTPS URL만 허용됩니다.

  • Localhost, 루프백, 사설 IPv4, 링크-로컬 및 사설 IPv6 대상은 거부됩니다.

  • 리디렉션 대상은 다시 검증됩니다.

  • 검색 및 가져오기 작업은 기본 300초의 SQLite TTL 캐시를 사용합니다.

  • 부분 실패는 성공한 작업을 폐기하지 않습니다.

  • stdout은 MCP JSON-RPC 전용으로 예약됩니다.

선택적 기능

기능

활성화 방법

Trafilatura / Readability

requirements-api.txt 설치

스텔스 요청

curl-cffi 설치 및 stealth_mode=high 사용

JavaScript 렌더링

Playwright 설치 및 render_mode=browser 사용

PDF / DOCX / XLSX / PPTX

해당 문서 패키지 설치

Scrapy 크롤링

Scrapy 설치 및 backend=scrapy 사용

FastAPI HTTP 서비스

py -3.12 -m transports.api 실행

YouTube 자막

youtube-transcript-api 설치

프로젝트 구조

my_websearch/
├── assets/                     # Project logo
├── config/searxng/             # SearXNG settings.yml
├── core/                       # Config, cache, security, orchestration
├── providers/
│   ├── search/                 # SearXNG gateway and engine allow-list
│   ├── content/                # Requests, rendering, extraction
│   ├── crawl/                  # Native and Scrapy backends
│   └── media/                  # YouTube transcript provider
├── transports/                 # MCP stdio and FastAPI adapters
├── tests/                      # Dependency-free self-checks
├── docker-compose.yml          # Local SearXNG gateway
├── mcp_config.example.json     # MCP client template
├── requirements.txt            # Dependency entry point
├── README.md                  # English documentation
└── README.zh-CN.md            # 中文文档

개발 확인

cd D:\my-websearch
py -3.12 -m my_websearch.tests.test_server

예상 출력:

my_websearch self-check: ok

선택적 FastAPI 서비스:

cd D:\my-websearch\my_websearch
py -3.12 -m transports.api

그런 다음 http://127.0.0.1:8787/docs를 엽니다.

라이선스

아직 라이선스가 부과되지 않았습니다. 공개 배포 전에 루트 수준의 LICENSE 파일을 추가하세요.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.
    42
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A self-contained web-research MCP server that lets local LLM agents search, fetch, and synthesize web content using tools like web_search, web_fetch, and web_research.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Multi-purpose research MCP server integrating web search, deep research, web scraping, research methodology routing, and GPT Researcher report generation.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that gives agents a unified search and perception layer across web search, Bilibili, Xiaohongshu, Zhihu, YouTube, academic metadata, recruitment sites, and webpage extraction, plus research planning, health checks, and task status.
    MIT