Local web research · CLI & MCP

Web research on your computer. Evidence instead of raw pages.

ResearchStruct searches the web, fetches pages and text PDFs, removes duplicates and ranks the passages locally. You or Claude get a small evidence pack with sources. No language model is involved in any of these steps.

See how it works

Version 0.4.2 · MIT licence · Python 3.10+ · the repository is currently private.

ResearchStruct artwork: web pages and PDFs flow into a local pipeline that returns a short ranked list of evidence
  • Python CLI
  • Local MCP server
  • No API key
  • Source for every passage

What you get back.

  • Small, citable input

    A run returns 8 to 25 ranked passages, each with its source URL and, for PDFs, the page number.

  • Deterministic ranking

    BM25, TF-IDF, exact terms, headings, source quality and freshness, combined with fixed weights.

  • Honest about weak evidence

    Warnings such as missing key terms or a missing official source are part of every result.

From a question to an evidence pack.

  1. Ask

    Give it a question or a URL, on the command line or through Claude.

  2. Search & fetch

    It runs a web search and downloads the pages and text PDFs it finds.

  3. Clean & rank

    Main content is extracted, duplicates are removed and passages are ranked.

  4. Evidence pack

    The best passages are written to a folder as JSON and Markdown.

Why ResearchStruct?

Reading whole web pages into a conversation costs context and buries the relevant lines. ResearchStruct does the collecting and ranking on your computer, so the assistant only sees what was selected.

  • Runs locally: the only network traffic is the search and the pages it fetches
  • One core, two front-ends: the CLI and the MCP server run the same pipeline
  • Four MCP tools for Claude Code and Claude desktop
  • A second command turns a whole document into structured records
ResearchStruct logo artwork: several web pages merge into one ranked list of three results

Scope and limits.

ResearchStruct is pre-1.0 and maintained by one person. It is deliberately narrow.

  • No OCR: scanned PDFs are reported and skipped
  • No embeddings and no language model
  • One search backend
  • Not published on PyPI

Text returned from the web is treated as untrusted data, never as instructions.

Interested in ResearchStruct?

The repository is private for now. Write to me if you want to try it or use the same approach in your own project.

Get in touch

Back to projects