Skip to main content

Web search (SearXNG) and fetch tools with MCP server

Project description

pvl-webtools

Web search (via SearXNG) and fetch tools with MCP server.

Documentation

Installation

pip install pvl-webtools

# With MCP server support
pip install pvl-webtools[mcp]

# With markitdown for LLM-friendly markdown output (recommended)
pip install pvl-webtools[markdown]

# With trafilatura for article text extraction
pip install pvl-webtools[extraction]

# Everything
pip install pvl-webtools[all]

Usage

Direct Usage

import asyncio
from pvlwebtools import web_search, web_fetch

async def main():
    # Search (requires SEARXNG_URL env var)
    results = await web_search("python async best practices", max_results=5)
    for r in results:
        print(f"{r.title}: {r.url}")

    # Fetch and extract article
    page = await web_fetch("https://example.com/article")
    print(page.content)

asyncio.run(main())

With SearXNG Client

from pvlwebtools import SearXNGClient

client = SearXNGClient(url="http://localhost:8888")
if client.check_health():
    results = await client.search("query", domain_filter="wikipedia.org")

As MCP Server

# Set SearXNG URL
export SEARXNG_URL="http://localhost:8888"

# Run server
uvx pvl-webtools-mcp

Docker (Streamable HTTP)

# Pull and run
docker run -d -p 8000:8000 \
  -e SEARXNG_URL="http://your-searxng:8888" \
  ghcr.io/pvliesdonk/pvl-webtools:latest

# MCP endpoint available at http://localhost:8000/mcp

See Docker Deployment for full documentation.

Configuration

Environment Variable Description
SEARXNG_URL SearXNG instance URL (required for web_search)

Tools

web_search

Search the web via SearXNG metasearch engine.

  • query: Search query
  • max_results: 1-20 (default 5)
  • domain_filter: Limit to domain (e.g., "wikipedia.org")
  • recency: "all_time", "day", "week", "month", "year"

web_fetch

Fetch and extract content from URLs.

  • url: URL to fetch
  • extract_mode:
    • "markdown" (default): LLM-friendly markdown via markitdown
    • "article": Plain text via trafilatura
    • "raw": Raw HTML (truncated)
    • "metadata": Title, description, Open Graph tags

License

MIT

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

pvl_webtools-0.1.3.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

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

pvl_webtools-0.1.3-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file pvl_webtools-0.1.3.tar.gz.

File metadata

  • Download URL: pvl_webtools-0.1.3.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pvl_webtools-0.1.3.tar.gz
Algorithm Hash digest
SHA256 9a667a597900e093546f3cf509007598078aaaf963f192b30c3729baf6d10603
MD5 65309d40bd1b6be9fee4754397053fcf
BLAKE2b-256 f5e03aac1d2afc07cce6a2f3d494790821ff2b59655423874ec01d7aee442ac1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pvl_webtools-0.1.3.tar.gz:

Publisher: release.yml on pvliesdonk/pvl-webtools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pvl_webtools-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pvl_webtools-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pvl_webtools-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 69d0f5525593a9e98de16ef12de48fe84d2b38b44c3a3192d25edd4235e49ac0
MD5 b8b4ccdec475695a3c7cc29c3670b4ee
BLAKE2b-256 ebca3b140b4af1882decd5fcc072d74e6e5a1b54a3f8788d47976b65bb56e657

See more details on using hashes here.

Provenance

The following attestation bundles were made for pvl_webtools-0.1.3-py3-none-any.whl:

Publisher: release.yml on pvliesdonk/pvl-webtools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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