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

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.0.tar.gz (17.5 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.0-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pvl_webtools-0.1.0.tar.gz
  • Upload date:
  • Size: 17.5 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.0.tar.gz
Algorithm Hash digest
SHA256 081c0117108f66c62fd378ee8322d430db5f63e8edd7ea93400120bfa40c8cac
MD5 c93b1d982ce9b38efbfd451d27e6cfee
BLAKE2b-256 317cb3e8977a213cd8be053eedd8cff72d7ab29b7ca8a24180b14fdb4bb28d67

See more details on using hashes here.

Provenance

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

Publisher: publish.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.0-py3-none-any.whl.

File metadata

  • Download URL: pvl_webtools-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.0 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 438208b5ce809da836f7fd9dfc37b45d07d07e6269fea217956044730b18cb10
MD5 7cfa3de3ff2d3175326c1fd5c16fe306
BLAKE2b-256 bcefc56fc8ff681781d7684963acb68102a1350f6946351c4be47d9e9c5b4d55

See more details on using hashes here.

Provenance

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

Publisher: publish.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