feat(tools): Add support for SearXNG web searches and ScraperMCP extraction#8106
feat(tools): Add support for SearXNG web searches and ScraperMCP extraction#8106cro wants to merge 1 commit into
Conversation
…allback to ScraperMCP's JS-enable extraction.
Adds SearXNG (https://docs.searxng.org) as a self-hosted, privacy-first web search backend alongside Firecrawl, Tavily, Exa, and Parallel. SearXNG is a meta-search engine that aggregates results from 70+ search engines. No API key needed -- just set SEARXNG_URL to your instance. Changes: - tools/web_tools.py: _get_searxng_url(), _searxng_search(), search dispatch, extract falls back to Firecrawl (SearXNG is search-only) - hermes_cli/tools_config.py: SearXNG provider in web tool picker - hermes_cli/config.py: SEARXNG_URL env var, diagnostics, set command - tests/tools/test_web_tools_searxng.py: 15 tests - optional-skills/research/searxng-search/: agent-guided skill - Docs: configuration.md, environment-variables.md, skills catalogs Based on #6071 by @gnanam1990, #8106 by @cro, #2572 by @bhovig, #2710 and #9961 by @StreamOfRon, #7258 by @coldxiangyu163
|
Merged via PR #11562 which consolidates SearXNG integration from multiple community PRs. Your category support and result formatting ideas were incorporated into the final implementation. Thank you for the contribution! |
|
Is that PR stuck for some reason? Still shows open. Also, my PR had code to enable ScraperMCP to extract web content. It doesn't seem to be in the new PR. Should I re-submit my PR with the SearXNG support removed and just the ScraperMCP functionality? |
|
its under the review process, once merged you can raise the scraperMCP PR and tag me for review. thanks! |
|
Greetings @kshitijk4poor , apologies if I don't understand the PR review process, but the pipeline for the PR seems to indicate that the Contributor Attribution check is failing and that's why the PR isn't merged yet. |
Adds SearXNG (https://docs.searxng.org) as a self-hosted, privacy-first web search backend alongside Firecrawl, Tavily, Exa, and Parallel. SearXNG is a meta-search engine that aggregates results from 70+ search engines. No API key needed -- just set SEARXNG_URL to your instance. Changes: - tools/web_tools.py: _get_searxng_url(), _searxng_search(), search dispatch, extract falls back to Firecrawl (SearXNG is search-only) - hermes_cli/tools_config.py: SearXNG provider in web tool picker - hermes_cli/config.py: SEARXNG_URL env var, diagnostics, set command - tests/tools/test_web_tools_searxng.py: 15 tests - optional-skills/research/searxng-search/: agent-guided skill - Docs: configuration.md, environment-variables.md, skills catalogs Based on NousResearch#6071 by @gnanam1990, NousResearch#8106 by @cro, NousResearch#2572 by @bhovig,
Adds SearXNG (https://docs.searxng.org) as a self-hosted, privacy-first web search backend alongside Firecrawl, Tavily, Exa, and Parallel. SearXNG is a meta-search engine that aggregates results from 70+ search engines. No API key needed -- just set SEARXNG_URL to your instance. Changes: - tools/web_tools.py: _get_searxng_url(), _searxng_search(), search dispatch, extract falls back to Firecrawl (SearXNG is search-only) - hermes_cli/tools_config.py: SearXNG provider in web tool picker - hermes_cli/config.py: SEARXNG_URL env var, diagnostics, set command - tests/tools/test_web_tools_searxng.py: 15 tests - optional-skills/research/searxng-search/: agent-guided skill - Docs: configuration.md, environment-variables.md, skills catalogs Based on NousResearch#6071 by @gnanam1990, NousResearch#8106 by @cro, NousResearch#2572 by @bhovig,
Add support for SearXNG web searches and ScraperMCP extraction with fallback to ScraperMCP's JS-enable extraction.
What does this PR do?
I kept running into API limits with Firecrawl, and I already had SearXNG and ScraperMCP setup in my environment. This PR adds support for changing Hermes' web search to SearXNG, and extracting results with ScraperMCP.
Type of Change
Changes Made
tests/tools/test_web_tools_config.py: Add tests for the integration
tools/web_tools.py: Add SearXNG as a valid search backend. Hand link results off to ScraperMCP for extraction.
website/docs/user-guide/configuration.md: Documentation
How to Test
Checklist
Code
fix(scope):,feat(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings) — or N/Acli-config.yaml.exampleif I added/changed config keys — or N/ACONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — or N/A