SearXNG MCP 서버
SearXNG 인스턴스와 통합하여 웹 검색 기능을 제공하는 MCP(Model Context Protocol) 서버입니다.
기능
웹 검색: 여러 엔진에서 강력한 통합 검색을 수행합니다.
검색: 사용 가능한 카테고리와 엔진을 프로그래밍 방식으로 검색합니다.
상태 비저장 HTTP: 모든 표준 JSON-RPC 클라이언트와 호환됩니다.
유연한 구성: 환경 변수 및 명령줄 인수를 지원합니다.
Related MCP server: SearXNG MCP Server
MCP 서버와 함께 SearXNG를 실행하기 위한 compose.yml 예시
services:
searxng:
image: searxng/searxng:latest
ports:
- 8080:8080
volumes:
- ./searxng/etc/:/etc/searxng/
- ./searxng/data/:/var/cache/searxng/
restart: always
searxng-mcp:
image: ghcr.io/aicrafted/searxng-mcp:latest
restart: unless-stopped
depends_on:
# Ensure SearXNG starts before the MCP server
- searxng
environment:
SEARXNG_URL: http://searxng:8080
MCP_HOST: 0.0.0.0
MCP_PORT: 32123
MCP_TRANSPORT: "http"
ports:
- "32123:32123"MCP 클라이언트 구성
HTTP 전송 (권장)
{
"mcpServers": {
"searxng": {
"type": "http",
"url": "http://localhost:32123/mcp"
}
}
}SSE 전송
{
"mcpServers": {
"searxng": {
"type": "sse",
"url": "http://localhost:32123/sse"
}
}
}참고: SSE 전송은
/mcp가 아닌/sse엔드포인트를 사용합니다. HTTP 전송은/mcp를 사용합니다.
소스에서 실행하기 위한 필수 조건
Python 3.10+
실행 중인 SearXNG 인스턴스.
설치
저장소를 복제하고 해당 디렉토리로 이동합니다.
종속성을 설치합니다:
pip install -r requirements.txt.env파일을 설정합니다 (선택 사항):SEARXNG_URL=http://your-searxng-instance:8080 MCP_PORT=32123 MCP_HOST=127.0.0.1
사용법
uv 또는 표준 python을 사용하여 서버를 실행합니다:
python searxng_mcp.py --transport http --port 32123 --searxng http://searx.lanDocker로 실행
이미지 빌드:
docker build -t searxng-mcp .컨테이너 실행:
docker run -d \ -p 32123:32123 \ -e SEARXNG_URL=http://your-searxng-instance:8080 \ --name searxng-mcp \ searxng-mcp
전송 옵션
stdio: 표준 입출력 (일부 MCP 클라이언트의 기본값).http: 상태 비저장 HTTP (streamable-http).sse: 서버 전송 이벤트 (Server-Sent Events).
검색 기능 가이드
SearXNG는 다양한 소스에서 결과를 집계합니다. 이 가이드는 web_search 도구를 통해 사용할 수 있는 기능을 설명합니다.
검색 카테고리
카테고리는 콘텐츠 유형별로 검색을 구체화하는 데 도움이 됩니다. categories 매개변수(쉼표로 구분)에 이를 사용하세요.
카테고리 | 설명 |
| 기본 웹 검색 (Google, Brave, DuckDuckGo 등) |
| 이미지 검색 결과 |
| YouTube, Vimeo 등의 비디오 콘텐츠 |
| 최근 뉴스 기사 |
| 지리 및 지도 정보 |
| IT 관련 검색 (StackOverflow, GitHub 등) |
| 과학 논문 및 기사 (ArXiv, Google Scholar) |
| 토렌트 및 파일 검색 |
| 소셜 플랫폼의 게시물 및 프로필 |
지원되는 엔진
SearXNG는 130개 이상의 엔진을 쿼리할 수 있습니다. 구성된 엔진에는 일반적으로 다음이 포함됩니다:
웹: Google, Brave, DuckDuckGo, Qwant, Startpage
지식: Wikipedia, Wikidata
개발: GitHub, StackOverflow, PyPI
소셜: Reddit, Twitter/X
고급 검색 매개변수
categories: 특정 유형별로 필터링 (예:news,it).engines: 특정 엔진 강제 지정 (예:google,wikipedia).language: 검색 언어 지정 (예:en,es,fr).pageno: 여러 페이지의 결과 탐색.time_range: 날짜별 필터링 (day,month,year).safesearch: 콘텐츠 필터링 제어 (0=없음, 1=보통, 2=엄격).
프로그래밍 방식의 검색
web_search_info 도구를 사용하여 인스턴스에서 활성화된 카테고리 및 엔진 목록을 동적으로 검색하세요.
Windows 문제 해결
Docker 컨테이너 실행 중 localhost에 연결할 수 없음
증상: http://localhost:<port>/가 연결 거부 또는 잘못된 서비스로 연결되지만, 컨테이너 내부에서 curl은 정상적으로 작동함.
근본 원인: WSL2 포트 릴레이 고스트
WSL2는 wslrelay.exe를 사용하여 Linux VM에서 Windows 호스트로 포트를 자동으로 전달합니다. WSL 내부의 프로세스가 포트에서 수신 대기하면, WSL은 Windows 측의 [::1]:<port>(IPv6 루프백)에 바인딩된 릴레이를 생성합니다.
해당 WSL 프로세스가 중지되면 wslrelay.exe는 종종 포트를 해제하지 않습니다. 릴레이 항목은 [::1]:<port>에서 좀비 리스너로 계속 살아 있습니다.
나중에 Docker가 컨테이너를 동일한 호스트 포트에 매핑하면 0.0.0.0:<port>에 올바르게 바인딩되지만, [::1]:<port>는 이미 오래된 릴레이에 의해 점유된 상태입니다.
Windows에서 localhost는 먼저 ::1(IPv6)로 확인됩니다. 따라서 브라우저와 curl 요청이 localhost:<port>로 전달되면 Docker 컨테이너 대신 죽은 wslrelay.exe 항목에 도달하여 연결 오류나 예상치 못한 응답이 발생합니다.
명시적 IPv4 주소 127.0.0.1:<port>를 통해 연결하면 릴레이를 우회하여 Docker에 올바르게 도달합니다.
진단 방법:
# Check what is listening on the port
netstat -ano | findstr :<port>
# Identify the processes
Get-Process -Id <pid1>,<pid2> | Select-Object Id,Name동일한 포트에 대해 com.docker.backend가 소유한 항목과 wslrelay가 소유한 항목 등 두 개의 항목이 보이면 이것이 문제입니다.
해결 방법:
옵션 | 명령어 | 참고 |
IPv4 직접 사용 |
| 즉시 적용, 재시작 불필요 |
WSL 재시작 |
| 모든 오래된 릴레이 종료; 다음 사용 시 WSL 재시작 |
Docker 포트 재매핑 |
| 충돌을 완전히 방지 |
영구적인 수정:
wsl --shutdown 후 Docker 컨테이너를 다시 시작하세요. 릴레이가 더 이상 존재하지 않게 되며, WSL 내부에서 동일한 포트가 다시 사용되기 전까지 localhost:<port>가 정상적으로 작동합니다.
예방:
WSL과 Docker에서 동일한 포트로 서비스를 정기적으로 실행하는 경우 다음 중 하나를 선호하세요:
해당 서비스에는 항상 Docker를 사용하고 WSL을 직접 사용하지 마세요.
WSL 개발 인스턴스와 Docker 프로덕션 인스턴스에 서로 다른 포트를 사용하세요.
docker-compose.yml에127.0.0.1:<port>:<port>명시적 바인딩을 추가하여 IPv4를 강제하세요.
관련 항목
WSL GitHub 이슈 트래커:
wslrelay port leak검색
This server cannot be installed
Maintenance
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aicrafted/searxng-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
