An MCP server for web and similarity search, designed for Claude Desktop. It integrates with various external embedding and API services.
A powerful MCP (Model Control Protocol) server that provides tools for performing web searches and finding similar content. This server is designed to work with Claude Desktop and offers two main functionalities:
This server is particularly useful for:
To install Parquet MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @DeepSpringAI/parquet_mcp_server --client claude
git clone ...
cd parquet_mcp_server
uv venv
.venv\Scripts\activate # On Windows
source .venv/bin/activate # On macOS/Linux
uv pip install -e .
Create a .env
file with the following variables:
EMBEDDING_URL=http://sample-url.com/api/embed # URL for the embedding service
OLLAMA_URL=http://sample-url.com/ # URL for Ollama server
EMBEDDING_MODEL=sample-model # Model to use for generating embeddings
SEARCHAPI_API_KEY=your_searchapi_api_key
FIRECRAWL_API_KEY=your_firecrawl_api_key
VOYAGE_API_KEY=your_voyage_api_key
AZURE_OPENAI_ENDPOINT=http://sample-url.com/azure_openai
AZURE_OPENAI_API_KEY=your_azure_openai_api_key
Add this to your Claude Desktop configuration file (claude_desktop_config.json
):
{
"mcpServers": {
"parquet-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/home/${USER}/workspace/parquet_mcp_server/src/parquet_mcp_server",
"run",
"main.py"
]
}
}
}
The server provides two main tools:
Search Web: Perform a web search and scrape results
queries
: List of search queriespage_number
: Page number for the search results (defaults to 1)Extract Info from Search: Extract relevant information from previous searches
queries
: List of search queries to mergeHere are some example prompts you can use with the agent:
"Please perform a web search for 'macbook' and 'laptop' and scrape the results from page 1"
"Please extract relevant information from the previous searches for 'macbook'"
The project includes a comprehensive test suite in the src/tests
directory. You can run all tests using:
python src/tests/run_tests.py
Or run individual tests:
# Test Web Search
python src/tests/test_search_web.py
# Test Extract Info from Search
python src/tests/test_extract_info_from_search.py
You can also test the server using the client directly:
from parquet_mcp_server.client import (
perform_search_and_scrape, # New web search function
find_similar_chunks # New extract info function
)
# Perform a web search
perform_search_and_scrape(["macbook", "laptop"], page_number=1)
# Extract information from the search results
find_similar_chunks(["macbook"])
.env
file are correct.env
file are correctTo perform vector similarity searches in PostgreSQL, you can use the following function:
-- Create the function for vector similarity search
CREATE OR REPLACE FUNCTION match_web_search(
query_embedding vector(1024), -- Adjusted vector size
match_threshold float,
match_count int -- User-defined limit for number of results
)
RETURNS TABLE (
id bigint,
metadata jsonb,
text TEXT, -- Added text column to the result
date TIMESTAMP, -- Using the date column instead of created_at
similarity float
)
LANGUAGE plpgsql
AS $$
BEGIN
RETURN QUERY
SELECT
web_search.id,
web_search.metadata,
web_search.text, -- Returning the full text of the chunk
web_search.date, -- Returning the date timestamp
1 - (web_search.embedding <=> query_embedding) as similarity
FROM web_search
WHERE 1 - (web_search.embedding <=> query_embedding) > match_threshold
ORDER BY web_search.date DESC, -- Sort by date in descending order (newest first)
web_search.embedding <=> query_embedding -- Sort by similarity
LIMIT match_count; -- Limit the results to the match_count specified by the user
END;
$$;
This function allows you to perform similarity searches on vector embeddings stored in a PostgreSQL database, returning results that meet a specified similarity threshold and limiting the number of results based on user input. The results are sorted by date and similarity.
CREATE TABLE web_search (
id SERIAL PRIMARY KEY,
text TEXT,
metadata JSONB,
embedding VECTOR(1024),
-- This will be auto-updated
date TIMESTAMP DEFAULT NOW()
);
Performs deep web searches for information using the Tavily API.
An MCP server for web and local search using the Brave Search API.
Unlock geospatial intelligence through Mapbox APIs like geocoding, POI search, directions, isochrones and more.
IP2Location.io API integration to retrieve the geolocation information for an IP address.
An enhanced MCP server for SearXNG web searching, utilizing a category-aware web-search, web-scraping, and includes a date/time retrieval tool.
A zero-configuration job aggregation service that fetches job listings from major recruitment websites.
Provides information about Java conferences worldwide by parsing data from the javaconferences.github.io repository.
Get any answer from the Facebook Ads Library, conduct deep research including messaging, creative testing and comparisons in seconds.
Provides access to Typesense search capabilities, requiring a connection to a Typesense server.
A Model Context Protocol Server for SearXNG