Skip to main content
Glama
am24check

mcp-web-search-server

by am24check

mcp-web-search-server

HTTP를 통해 web_search 및 web_fetch 도구를 노출하는 독립형 MCP 서버입니다. 모든 MCP 클라이언트(Claude Desktop, Cursor 등)가 연결하여 웹 검색을 수행하고 웹 페이지를 가져올 수 있습니다.

API 키 없이 바로 작동합니다: web_search/web_search_exa는 Exa의 공개 MCP 엔드포인트를 사용하며, 인증 없이(속도 제한 있음) 요청을 허용합니다. 더 높은 한도를 원하면 EXA_API_KEY를 설정하고, web_search_parallel도 활성화하려면 PARALLEL_API_KEY를 설정하세요.

도구

도구

설명

web_fetch

URL을 가져와 파싱하고, 마크다운 또는 일반 텍스트로 반환

web_search

Exa 또는 Parallel AI를 사용하여 웹 검색(세션별 자동 선택)

web_search_exa

Exa AI를 사용하여 검색

web_search_parallel

Parallel AI를 사용하여 검색

작동 방식:

┌──────────────┐     MCP HTTP      ┌──────────────────────────┐     HTTP      ┌──────────────┐
│  MCP Client   │ ◄───────────────► │  web-search-server        │ ◄──────────► │  Exa AI      │
│  (Claude,     │     Streamable    │  :9877/mcp               │               │  mcp.exa.ai  │
│   Cursor,     │                   │                          │               └──────────────┘
│   etc.)       │                   │  Tools:                  │
└──────────────┘                   │  • web_search (auto)     │ ── HTTP ──► ┌──────────────┐
                                   │  • web_search_exa        │               │  Parallel    │
                                   │  • web_search_parallel   │               │  search.     │
                                   │  • web_fetch             │               │  parallel.ai │
                                   └──────────────────────────┘               └──────────────┘

주요 설계 결정 사항:

  1. 순수 async/await — 프레임워크 없음, 네이티브 fetch(Bun의 fetch)만 사용

  2. Streamable HTTP 전송 — @modelcontextprotocol/sdk의 WebStandardStreamableHTTPServerTransport 사용, 클라이언트 연결당 하나의 세션(전송 + 서버 인스턴스)

  3. 공급자 선택 — 세션 ID의 해시가 일반 web_search 도구에 대해 exa/parallel을 선택하며, 환경 변수로 재정의 가능

  4. HTML→Markdown — 마크다운 추출에는 turndown, 일반 텍스트 추출에는 작은 상태 머신 사용

Related MCP server: free-web-mcp

빠른 시작

# Install dependencies
bun install

# Run the server (default port 9877)
bun run src/index.ts

구성

환경 변수:

변수

기본값

설명

PORT

9877

수신 대기할 HTTP 포트

HOSTNAME

0.0.0.0

바인딩할 호스트

EXA_API_KEY

-

선택 사항인 Exa API 키, 더 높은 속도 제한

PARALLEL_API_KEY

-

Parallel API 키(web_search_parallel 활성화)

ENABLE_EXA

1 (기본적으로 켜짐)

0으로 설정하면 web_search_exa 비활성화

ENABLE_PARALLEL

PARALLEL_API_KEY에서 유추

키 없이 Parallel 강제 활성화

WEBSEARCH_PROVIDER

해시 기반

web_search에 대해 exa 또는 parallel 강제

MCP 클라이언트에서 연결

MCP 클라이언트를 다음 주소로 지정하세요: http://localhost:9877/mcp

Streamable HTTP 전송을 사용하는 표준 MCP 서버입니다.

사용 예시

웹 페이지를 마크다운으로 가져오기

{
  "name": "web_fetch",
  "arguments": {
    "url": "https://example.com",
    "format": "markdown"
  }
}

웹 검색

{
  "name": "web_search",
  "arguments": {
    "query": "latest JavaScript features 2026",
    "numResults": 5
  }
}

개발

# Type check
bunx tsc --noEmit

# Run in foreground
bun run src/index.ts

아키텍처

  • web_search는 Exa 및 Parallel MCP 엔드포인트에 프록시

  • web_fetch는 네이티브 fetch와 HTML→Markdown 변환(turndown) 및 Cloudflare 폴백 사용

  • MCP 서버는 @modelcontextprotocol/sdk와 WebStandardStreamableHTTPServerTransport 사용

  • 표준 HTTP에서 수신 대기(stdio 불필요)

web_search/web_fetch 도구 구현은 원래 OpenCode의 내장 웹 검색 도구에서 가져와 이 독립형 서버로 추출되었습니다.

라이선스

MIT

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers