Skip to main content
Glama
DeepSpringAI

parquet mcp server

by DeepSpringAI

parquet_mcp_server

鍛冶屋のバッジ

ウェブ検索や類似コンテンツの検索ツールを提供する強力なMCP(モデル制御プロトコル)サーバーです。このサーバーはClaude Desktopと連携するように設計されており、主に以下の2つの機能を提供します。

  1. ウェブ検索: ウェブ検索を実行し、結果をスクレイピングする

  2. 類似検索: 過去の検索から関連情報を抽出します

このサーバーは特に次の場合に役立ちます:

  • ウェブ検索機能を必要とするアプリケーション

  • 検索クエリに基づいて類似コンテンツを見つける必要があるプロジェクト

インストール

Smithery経由でインストール

Smithery経由で Claude Desktop 用の Parquet MCP Server を自動的にインストールするには:

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 .

環境

次の変数を含む.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_key

Related 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"
      ]
    }
  }
}

利用可能なツール

サーバーは主に 2 つのツールを提供します。

  1. ウェブ検索: ウェブ検索を実行し、結果をスクレイピングします

    • 必須パラメータ:

      • queries : 検索クエリのリスト

    • オプションパラメータ:

      • page_number : 検索結果のページ番号(デフォルトは1)

  2. 検索から情報を抽出: 以前の検索から関連情報を抽出します

    • 必須パラメータ:

      • 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"])

トラブルシューティング

  1. SSL検証エラーが発生した場合は、 .envファイルのSSL設定が正しいことを確認してください。

  2. 埋め込みが生成されない場合は、以下を確認してください。

    • Ollamaサーバーは稼働しておりアクセス可能です

    • 指定されたモデルはOllamaサーバーで利用可能です

    • 入力Parquetファイルにテキスト列が存在します

  3. DuckDB 変換が失敗した場合は、以下を確認してください。

    • 入力Parquetファイルが存在し、読み取り可能である

    • 出力ディレクトリへの書き込み権限があります

    • Parquetファイルは破損していません

  4. 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 tools
search-webC

Perform a web search and scrape results

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesList of search queries
page_numberNoPage number for the search results

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 2 tool updatesv1.0.0
    • First observedextract-info-from-search
    • First observedsearch-web

TDQS

C2.5/5.0

Scored across 2 tools

Disambiguation4/5

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.

Naming Consistency5/5

Both tool names follow a consistent snake_case verb_noun pattern. 'search-web' and 'extract-info-from-search' both clearly indicate action and target.

Tool Count3/5

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.

Completeness3/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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 npm
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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
    -
  • F
    license
    A
    quality
    Not graded
    maintenance
    A 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
    -
  • A
    license
    A
    quality
    Not graded
    maintenance
    An 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
    -