Skip to main content

PowerSearch MCP helps AI agents search and retrieve content from the public web with fewer broken fetches and clean, AI-friendly outputs ready to cite.

Project description

PowerSearch MCP

Lint, unit test status Release status Publish status

Project status License Python Version PyPi version

PowerSearch MCP helps AI agents search and retrieve content from the public web with fewer broken fetches and clean, AI-friendly outputs ready to cite.

Feature Roadmap:

  • SearXNG-backed meta search with configurable engines, language, safe-search, and pagination
  • ✅ Strong anti-bot fetching implementation via Scrapling and Camoufox
  • ✅ Search response caching at the tool-level to memory, disk, and Redis storage backends
  • ✅ Automatic retries with exponential backoff for both search and fetch operations
  • ✅ AI Agent-friendly responses: HTML pages are converted to markdown automatically via Trafilatura
  • ✅ Support for STDIO and streaming HTTP transports
  • ✅ Health check endpoint for HTTP transport
  • ✅ Extensive configuration suitable for many deployment scenarios
  • Authentication support for both JWT and opaque tokens
  • Authorization support for embedded Eunomia policies
  • ✅ Auto summarization of search results via MCP sampling
  • ✅ Optional server-side fallback for clients that don't support MCP sampling
  • 🗓️ (Future) Client selectable synchronous (current behavior) or asynchronous SEP-1686 execution for search / fetch tools
  • 🗓️ (Future) Containerization, publish public image
  • 🗓️ (Future) Prometheus metrics exporter
  • 🗓️ (Future) Helm chart

Setup

If you haven't already, go ahead and run make init to set up the Python virtual environment and dependencies.

Next, initialize Camoufox:

camoufox fetch

Finally, run a local instance of SearXNG.

docker run --rm -it \
    --name searxng-local \
    -p 127.0.0.1:9876:8080 \
    --tmpfs /etc/searxng:rw,noexec,nosuid,size=16m \
    --tmpfs /tmp:rw,noexec,nosuid,size=512m \
    --cap-drop=ALL \
    --security-opt=no-new-privileges:true \
    --env=SEARXNG_SETTINGS_PATH=/settings.yml \
    --volume=$(pwd)/searxng.yaml:/settings.yml:ro \
    searxng/searxng

Running the server

PowerSearch is run via the FastMCP CLI. See configuration.md for details on the available deployment settings.

  • STDIO (default): fastmcp run fastmcp.json --skip-env --project . - best for Claude Desktop and Inspector.
  • Streamable HTTP example: fastmcp run fastmcp-http.json --skip-env --project . - binds to 0.0.0.0:8092/mcp with CORS enabled.
  • Override deployment settings at launch with flags (for example --transport stdio, --host 0.0.0.0, --port 8912, --path /custom). CLI flags override the deployment block in the chosen config.

Both configs bake in the runtime dependencies to make first-time installs predictable; uv will reuse the local project via --project . and editable so local edits take effect. The HTTP app still exposes a /health endpoint and honors all POWERSEARCH_ environment variables for search behavior.

To run SearXNG locally in the background via Docker:

docker run -d \
    --name searxng-local \
    --pull=always \
    --restart unless-stopped \
    -p 127.0.0.1:9876:8080 \
    --tmpfs /etc/searxng:rw,noexec,nosuid,size=16m \
    --tmpfs /tmp:rw,noexec,nosuid,size=512m \
    --cap-drop=ALL \
    --security-opt=no-new-privileges:true \
    --health-cmd='python3 -c "import urllib.request; urllib.request.urlopen(\"http://127.0.0.1:8080/\", timeout=3).read(1)"' \
    --health-interval=10s \
    --health-timeout=3s \
    --health-retries=10 \
    --health-start-period=15s \
    --env SEARXNG_SETTINGS_PATH=/settings.yml \
    --volume "$(pwd)/searxng.yaml:/settings.yml:ro" \
    searxng/searxng

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

powersearch_mcp-0.3.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

powersearch_mcp-0.3.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file powersearch_mcp-0.3.0.tar.gz.

File metadata

  • Download URL: powersearch_mcp-0.3.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for powersearch_mcp-0.3.0.tar.gz
Algorithm Hash digest
SHA256 ebc9401eae10438291f9195c34994b2a32a74a258db030e03c43892a1a10f59b
MD5 d2e107143f440d76e02fbabf59229ddd
BLAKE2b-256 2da2bab77a1be3dc16043c2afcff261ad501a5c6a7e0c732745c290cc2806dfc

See more details on using hashes here.

File details

Details for the file powersearch_mcp-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: powersearch_mcp-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for powersearch_mcp-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6f82041d7586a3e2542bf6fbbacf1399044e4f71226e404ca226e338d5bd3cba
MD5 00a9d70c692310b450dfaf471450b080
BLAKE2b-256 a128bd21c737f23c696be00730286e8f7bf1a11d57757a3a3a7386a3b0508e74

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page