LabscoMCP early access ↗
DeepSpringAIMCP SERVER

Parquet Search MCP Server

Search the web, scrape the results, and later pull the relevant chunks back out — search results are embedded and stored, not thrown away.

by DeepSpringAI ↗Vector Stores & RAG RetrievalCommunity

LABSCO SUMMARY

Search results become a corpus, which is the unusual half.

Most search servers hand back results and forget them. Storing scraped content as embeddings means the second and third question on a topic are answered from what you already paid to fetch, and the ordering — newest first, then by similarity — is tuned for research where recency matters. The cost is setup: this wants a search key, a scraping key, an embedding backend and somewhere to keep results — a Supabase Postgres with pgvector, or a local JSON file before the first query runs.

What it is

An MCP server that pairs a web search with a similarity search over what it already fetched. Searching scrapes the results; a second tool then extracts the relevant passages from those previous searches by embedding similarity, so a topic can be revisited without hitting the search API again.

What you get

  • Web search that takes a list of queries at once, with an optional page number defaulting to 1, and scrapes what it finds
  • Extraction from previous searches: pass the queries to merge and get back the relevant chunks from what was already stored
  • Storage in PostgreSQL with pgvector, using a 1024-dimension embedding column and a similarity function that filters by threshold and orders by date then similarity
  • Embeddings from the server you point EMBEDDING_URL at, such as a local Ollama, so embeddings need not go to a hosted provider

Requirements

Several keys, because the pipeline spans several services: SEARCHAPI_API_KEY for search, FIRECRAWL_API_KEY for scraping, and an embedding server at EMBEDDING_URL plus an Ollama server at OLLAMA_URL (with EMBEDDING_MODEL), which the search code calls for embeddings and summaries. The README's sample .env also lists VOYAGE_API_KEY, AZURE_OPENAI_ENDPOINT and AZURE_OPENAI_API_KEY, which the search and extraction code does not read. Somewhere to keep results: by default a Supabase project (PostgreSQL with the pgvector extension), reached through SUPABASE_URL and SUPABASE_KEY, with a web_search table plus the matching function created from the SQL in the README — or USE_SUPABASE=false, which keeps them in a local JSON file instead. Python with uv: clone, uv venv, then uv pip install -e ., launched through uv against main.py. The project is parquet_mcp_server (version 0.1.0); Smithery can install it for Claude Desktop automatically.

Setup effort

Build from source — git clone https://github.com/DeepSpringAI/search_mcp_server.git