Integrated web search MCP server with multi-engine parallel execution, automatic fallback, BM25 relevance filtering, and content extraction. Supports DuckDuckGo and Naver (news, web, encyclopedia) searches.
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find.
Install from
M8ven verifies MCPs across every public registry — install directly from whichever one you prefer.
process.env. You'll be asked to provide them before it can run.NAVER_CLIENT_IDS— / NAVER_CLIENT_SECRETS 네이버 Client ID/Secret 배열 (콤마 구분, 순서로 짝지어짐) (없음)NAVER_CLIENT_SECRETS— NAVER_CLIENT_IDS / 네이버 Client ID/Secret 배열 (콤마 구분, 순서로 짝지어짐) (없음)NAVER_CLIENT_IDNAVER_CLIENT_SECRETLOG_FILE— LOG_LEVEL / 로그 레벨 / 파일 경로 INFO / search.logLOG_LEVEL— / LOG_FILE 로그 레벨 / 파일 경로 INFO / search.logEXCLUDE_OVERFETCH_COUNT— 필터링 활성 시 미리 넉넉히 가져올 개수 10RELEVANCE_FILTER— BM25 관련성 필터 (, 기본 켜짐): 전체 엔진 결과를 합쳐서 각 결과의 제목+설명(엔진이 이미 돌려준 텍스트, 추가 요청 없음)을 bm25_search와 동일한 BM25 모델로 검색어와 비교하고, 이번 배치 최고점 대비 RELEVANCE_MIN_SCORE_RATIO(기본 0.15) 미만인 결과는 본문 보강 이전에 제외합니다.RELEVANCE_MIN_SCORE_RATIO— BM25 관련성 필터 (RELEVANCE_FILTER, 기본 켜짐): 전체 엔진 결과를 합쳐서 각 결과의 제목+설명(엔진이 이미 돌려준 텍스트, 추가 요청 없음)을 bm25_search와 동일한 BM25 모델로 검색어와 비교하고, 이번 배치 최고점 대비 (기본 0.15) 미만인 결과는 본문 보강 이전에 제외합니다.SEARCH_ENGINE_TIMEOUT_SECONDS— 동시 실행 + 시간 초과: 요청된 엔진들은 스레드풀로 한 번에 실행되고(순차 실행 대비 훨씬 빠름), 안에 응답 없는 엔진은 건너뜁니다.NAVER_DAILY_LIMIT— / NAVER_LIMIT_THRESHOLD 키 1개당 1일 호출 한도 / 이 비율 도달 시 다음 키로 순환 25000 / 0.8NAVER_LIMIT_THRESHOLD— NAVER_DAILY_LIMIT / 키 1개당 1일 호출 한도 / 이 비율 도달 시 다음 키로 순환 25000 / 0.8NAVER_SEARCH_ENDPOINT— / _2 / _3 네이버 검색 종류 (뉴스/웹문서/백과사전), 같은 키로 3개까지 등록 가능 news / webkr / encycNAVER_SEARCH_ENDPOINT_2NAVER_SEARCH_ENDPOINT_3FETCH_CONTENT— / FETCH_CONTENT_TOP_N / FETCH_CONTENT_MAX_CHARS / FETCH_CONTENT_MIN_USEFUL_CHARS 본문 보강 켜기/끄기, 보강할 개수/최대 글자수/최소 유효 글자수 true / 3 / 3000 / 200FETCH_CONTENT_TOP_N— FETCH_CONTENT / / FETCH_CONTENT_MAX_CHARS / FETCH_CONTENT_MIN_USEFUL_CHARS 본문 보강 켜기/끄기, 보강할 개수/최대 글자수/최소 유효 글자수 true / 3 / 3000 / 200FETCH_CONTENT_MAX_CHARS— FETCH_CONTENT / FETCH_CONTENT_TOP_N / / FETCH_CONTENT_MIN_USEFUL_CHARS 본문 보강 켜기/끄기, 보강할 개수/최대 글자수/최소 유효 글자수 true / 3 / 3000 / 200FETCH_CONTENT_MIN_USEFUL_CHARS— FETCH_CONTENT / FETCH_CONTENT_TOP_N / FETCH_CONTENT_MAX_CHARS / 본문 보강 켜기/끄기, 보강할 개수/최대 글자수/최소 유효 글자수 true / 3 / 3000 / 200SEARCH_ENGINE_MODE— engines: "duckduckgo", "naver"(뉴스), "naver_web"(일반 웹문서), "naver_encyc"(백과사전/용어사전) 중 콤마로 구분해 지정하거나, 기본값 "all"(=.env의 DEFAULT_ENGINES 또는 프리셋)을 사용합니다.DEFAULT_ENGINES— engines: "duckduckgo", "naver"(뉴스), "naver_web"(일반 웹문서), "naver_encyc"(백과사전/용어사전) 중 콤마로 구분해 지정하거나, 기본값 "all"(=.env의 또는 SEARCH_ENGINE_MODE 프리셋)을 사용합니다.HIT_COUNT_LOG_FILE— / HIT_COUNT_INTERVAL_SECONDS 별도 호출 현황 로그 파일 / 기록 주기(초) hit_count.log / 60HIT_COUNT_INTERVAL_SECONDS— HIT_COUNT_LOG_FILE / 별도 호출 현황 로그 파일 / 기록 주기(초) hit_count.log / 60MCP_TRANSPORT— 1. 직접 실행 (수동 테스트/확인용) — =stdio(기본값)일 때는 클라이언트 연결을 기다리며 대기하고, 자체 출력은 없습니다(stdout은 MCP 프로토콜 전용이라 로그도 search.log/stderr로만 나감).MCP_HOST— 3. 네트워크(sse/streamable-http)로 띄워 여러 클라이언트가 공유 — .env에서 MCP_TRANSPORT=sse(또는 streamable-http)로 바꾸고 위와 동일하게 실행하면 :MCP_PORT(기본 127.0.0.1:8000)에서 대기합니다. 이 경우 클라이언트는 명령이 아니라 URL로 등록합니다.MCP_PORT— 3. 네트워크(sse/streamable-http)로 띄워 여러 클라이언트가 공유 — .env에서 MCP_TRANSPORT=sse(또는 streamable-http)로 바꾸고 위와 동일하게 실행하면 MCP_HOST:(기본 127.0.0.1:8000)에서 대기합니다. 이 경우 클라이언트는 명령이 아니라 URL로 등록합니다.[](https://m8ven.ai/mcp/choidonghee-ktds-lens-rfpkjx)