- TypeScript 93.7%
- JavaScript 6.2%
- Dockerfile 0.1%
| .github/workflows | ||
| .mcp | ||
| __tests__ | ||
| scripts | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| CONFIGURATION.md | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| eslint.config.js | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| quick-start.png | ||
| README.md | ||
| searxng_news_headlines.png | ||
| searxng_video_search.png | ||
| tsconfig.json | ||
mcp-searxng
A fork of mcp-searxng: an MCP server for querying a SearXNG instance from an MCP client.
This fork keeps the package name mcp-searxng, adds structured search-oriented tools, and disables arbitrary direct URL reads by default.
Repository: https://git.carpocratian.org/sibyl/mcp-searxng.git
What This Fork Does
- Exposes SearXNG-backed search tools over MCP
- Returns normalized structured search results by default
- Supports dedicated news, image, video, and research evidence tools
- Keeps
web_url_readavailable only behindENABLE_WEB_URL_READ=true - Supports both STDIO and HTTP transport
Security Posture
The direct web_url_read tool is disabled by default in this fork.
That means:
searxng_researchstill performs controlled internal reads of selected search results- internal fetch-and-convert logic still exists for top search results
- arbitrary user-supplied URL reads are not exposed unless you opt in
To enable direct URL reads in a trusted deployment:
ENABLE_WEB_URL_READ=true
If you expose the HTTP transport on a network, also use the hardened HTTP settings described in CONFIGURATION.md.
Build
git clone https://git.carpocratian.org/sibyl/mcp-searxng.git
cd mcp-searxng
npm install
npm run build
Quick Start
Example MCP client configuration using the local build:
{
"mcpServers": {
"searxng": {
"command": "node",
"args": ["/absolute/path/to/mcp-searxng/dist/index.js"],
"env": {
"SEARXNG_URL": "https://search.example.com"
}
}
}
}
Tools
searxng_web_search
General SearXNG search with structured normalized output by default.
Key inputs:
querypagenocategoriesenginestime_rangelanguageresponse_mode
searxng_news_headlines
News-focused wrapper around SearXNG with news category and same-day recency defaults.
searxng_image_search
Image-focused wrapper around SearXNG.
searxng_video_search
Video-focused wrapper around SearXNG.
searxng_research
Searches first, reads selected result pages, chunks the Markdown, and returns ranked source evidence.
Key inputs:
querymax_resultsmax_chunksmax_chunks_per_sourcemax_content_lengthchunk_target_charschunk_overlap_chars
web_url_read
Disabled by default.
Enable it only for trusted deployments:
ENABLE_WEB_URL_READ=true
Transport
By default the server uses STDIO.
To enable HTTP transport:
MCP_HTTP_PORT=3000
HTTP mode exposes:
POST /mcpGET /mcpDELETE /mcpGET /health
Configuration
The most important variables are:
SEARXNG_URLENABLE_WEB_URL_READMCP_HTTP_PORTMCP_HTTP_HARDENMCP_HTTP_AUTH_TOKENMCP_HTTP_ALLOWED_ORIGINSMCP_SERVER_NAME
Full reference: CONFIGURATION.md
Development
npm test
npm run build
Notes
- This fork currently keeps the original package name.
- The MCP package identifier in
package.jsonstill reflects the upstream namespace.


