The pairing is the point: most search tools give an assistant a fresh page of links every time it asks, and the earlier results are gone. Storing the scraped text as vectors means a follow-up question is answered against the material already gathered, which is both cheaper and more consistent across a long session. The cost is a real dependency stack — a search key, a scraping key, an embedding provider and a Postgres with pgvector — so this is infrastructure, not a drop-in.
An MCP server with two connected jobs: run a web search and scrape the results, then find the relevant pieces inside those earlier searches. Scraped text is embedded and stored, so the second step is a similarity lookup over what you have already collected rather than a fresh trip to the web.
- A web search over one or more queries with the results scraped, taking a list of queries and an optional page number that defaults to 1 — the Search Web tool
- The relevant material extracted from searches you already ran, merging across a list of queries — the Extract Info from Search tool
- Storage you can query directly: results land in a Postgres table with a 1024-dimension embedding column, and the README includes the pgvector similarity function and table definition to run alongside it
Several third-party keys, depending on what you switch on: `SEARCHAPI_API_KEY` and `FIRECRAWL_API_KEY` for search and scraping, plus embeddings from either an Ollama server (`OLLAMA_URL`, `EMBEDDING_URL`, `EMBEDDING_MODEL`), Voyage (`VOYAGE_API_KEY`) or Azure OpenAI (`AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_API_KEY`), all set in a `.env` file. Python with the uv package manager: `uv venv`, activate, then `uv pip install -e .`; the client entry runs `uv` with `--directory` pointing at `src/parquet_mcp_server` and `main.py` as the target. For the similarity search, a Postgres database with the pgvector extension installed. The pyproject name is `parquet_mcp_server` (0.1.0).
One command plus a key — npx -y @smithery/cli install @DeepSpringAI/parquet_mcp_server --client claude, then supply credentials
