parquet mcp server
parquet_mcp_server
웹 검색을 수행하고 유사한 콘텐츠를 찾는 도구를 제공하는 강력한 MCP(모델 제어 프로토콜) 서버입니다. 이 서버는 Claude Desktop과 함께 작동하도록 설계되었으며 두 가지 주요 기능을 제공합니다.
웹 검색 : 웹 검색을 수행하고 결과를 스크래핑합니다.
유사 검색 : 이전 검색에서 관련 정보 추출
이 서버는 특히 다음과 같은 경우에 유용합니다.
웹 검색 기능이 필요한 애플리케이션
검색 쿼리를 기반으로 유사한 콘텐츠를 찾아야 하는 프로젝트
설치
Smithery를 통해 설치
Smithery를 통해 Claude Desktop용 Parquet MCP 서버를 자동으로 설치하려면:
지엑스피1
이 저장소를 복제하세요
git clone ...
cd parquet_mcp_server가상 환경 생성 및 활성화
uv venv
.venv\Scripts\activate # On Windows
source .venv/bin/activate # On macOS/Linux패키지를 설치하세요
uv pip install -e .환경
다음 변수를 사용하여 .env 파일을 만듭니다.
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_keyRelated MCP server: my-mcp-server
Claude Desktop과 함께 사용
Claude Desktop 구성 파일( 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"
]
}
}
}사용 가능한 도구
서버는 두 가지 주요 도구를 제공합니다.
웹 검색 : 웹 검색을 수행하고 결과를 스크래핑합니다.
필수 매개변수:
queries: 검색어 목록
선택 매개변수:
page_number: 검색 결과의 페이지 번호(기본값은 1)
검색에서 정보 추출 : 이전 검색에서 관련 정보 추출
필수 매개변수:
queries: 병합할 검색어 목록
예시 프롬프트
에이전트와 함께 사용할 수 있는 몇 가지 프롬프트 예시는 다음과 같습니다.
웹 검색의 경우:
"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'"MCP 서버 테스트
이 프로젝트에는 src/tests 디렉터리에 포괄적인 테스트 모음이 포함되어 있습니다. 다음을 사용하여 모든 테스트를 실행할 수 있습니다.
python src/tests/run_tests.py또는 개별 테스트를 실행합니다.
# Test Web Search
python src/tests/test_search_web.py
# Test Extract Info from Search
python src/tests/test_extract_info_from_search.py클라이언트를 직접 사용하여 서버를 테스트할 수도 있습니다.
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"])문제 해결
SSL 검증 오류가 발생하는 경우
.env파일의 SSL 설정이 올바른지 확인하세요.임베딩이 생성되지 않으면 다음을 확인하세요.
Ollama 서버가 실행 중이며 접근 가능합니다.
지정된 모델은 Ollama 서버에서 사용 가능합니다.
텍스트 열은 입력 Parquet 파일에 있습니다.
DuckDB 변환이 실패하면 다음을 확인하세요.
입력 Parquet 파일이 존재하며 읽을 수 있습니다.
출력 디렉토리에 쓰기 권한이 있습니다.
Parquet 파일이 손상되지 않았습니다.
PostgreSQL 변환이 실패하면 다음을 확인하세요.
.env파일의 PostgreSQL 연결 설정이 올바릅니다.PostgreSQL 서버가 실행 중이고 접근 가능합니다.
테이블을 생성/수정하는 데 필요한 권한이 있습니다.
pgvector 확장 프로그램이 데이터베이스에 설치되었습니다.
벡터 유사성 검색을 위한 PostgreSQL 함수
PostgreSQL에서 벡터 유사성 검색을 수행하려면 다음 함수를 사용할 수 있습니다.
-- 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;
$$;이 함수를 사용하면 PostgreSQL 데이터베이스에 저장된 벡터 임베딩에 대한 유사도 검색을 수행하여 지정된 유사도 임계값을 충족하는 결과를 반환하고 사용자 입력에 따라 결과 개수를 제한할 수 있습니다. 결과는 날짜 및 유사도 순으로 정렬됩니다.
Postgres 테이블 생성
CREATE TABLE web_search (
id SERIAL PRIMARY KEY,
text TEXT,
metadata JSONB,
embedding VECTOR(1024),
-- This will be auto-updated
date TIMESTAMP DEFAULT NOW()
);Available Tools
2 toolsextract-info-from-searchD
Extract relative information from previous searches
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | List of search queries to merge |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose any behavioral traits. It does not indicate whether the tool is read-only, mutates state, requires authentication, or what side effects occur. The phrase 'extract' is not clarified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief (4 words), but it sacrifices clarity for brevity. It is not front-loaded with key information and omits essential details, making it under-specified rather than appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, output schema, and the tool's potential relation to 'search-web', the description is inadequate. It does not explain what the tool returns, how it uses the queries, or how it differs from a regular search. The tool appears to be for refining or summarizing previous searches, but this is not conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides a clear description for the only parameter: 'List of search queries to merge'. The tool description adds no value and even introduces confusion by using 'extract' instead of 'merge'. Schema coverage is 100%, so the description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Extract relative information from previous searches', which is vague. The term 'relative' is ambiguous (likely meant 'relevant'), and 'previous searches' is unclear—does it mean past user searches or the provided queries? The schema indicates the tool merges queries, but the description doesn't align, causing confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'search-web'. There is no mention of prerequisites, context, or any criteria for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-webC
Perform a web search and scrape results
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | List of search queries | |
| page_number | No | Page number for the search results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states that results are scraped but provides no details on output format, pagination behavior, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no extraneous information, making it efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema or annotations, the description is insufficient for a web search tool. It does not explain return values, result structure, or how scraping integrates with search, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond the parameter descriptions, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: perform a web search and scrape results. It uses a specific verb-resource pair, but does not explicitly differentiate from the sibling tool 'extract-info-from-search'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling tool 'extract-info-from-search' or in what contexts it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.0- First observed
extract-info-from-search - First observed
search-web
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one for performing web searches and scraping results, the other for extracting information from those prior searches. While they are related, there is no functional overlap.
Both tool names follow a consistent snake_case verb_noun pattern. 'search-web' and 'extract-info-from-search' both clearly indicate action and target.
With only 2 tools, the server feels minimal for a web search and extraction domain. However, the tools cover a basic two-step workflow, making the count borderline acceptable.
The server provides a basic search and extraction cycle but lacks obvious features like managing search history, caching, or supporting different output formats. Minor gaps exist.
Maintenance
Related MCP Connectors
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server built with mcp-framework that allows users to create and manage custom tools for processing data, integrating with the Claude Desktop via CLI.9 npm5MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows integration with Claude Desktop by creating and managing custom tools that can be executed through the MCP framework.25 npm-
- FlicenseAqualityNot gradedmaintenanceA tutorial implementation MCP server that enables analysis of CSV and Parquet files. Allows users to summarize data and query file information through natural language interactions.2-
- AlicenseAqualityNot gradedmaintenanceAn MCP server that enables AI assistants to load, query, and analyze local CSV files using tools for filtering, aggregation, and grouping. It provides capabilities to describe schemas, calculate statistics, and sample data directly from CSV files.6-