🚀 Parquet MCP Server
強力なMCP(モデル制御プロトコル)サーバーで、ウェブ検索の実行と類似内容の検索を行うためのツールを提供します。このサーバーはClaude Desktop用に設計されています。
🚀 クイックスタート
Parquet MCP Serverは、ウェブ検索や類似性検索を行うための強力なMCPサーバーです。Claude Desktopと連携して使用することができます。
✨ 主な機能
- ウェブ検索:ウェブ検索を実行し、結果を取得します。
- 類似性検索:過去の検索結果から関連情報を抽出します。
このサーバーは、以下のシチュエーションに特に適しています:
- ウェブ検索機能が必要なアプリケーション
- 検索クエリに基づいて類似内容を検索する必要があるプロジェクト
📦 インストール
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
source .venv/bin/activate
依存関係のインストール
プロジェクトに必要なPythonパッケージをインストールします:
pip install -r requirements.txt
📚 ドキュメント
設定
config.py
ファイルを更新し、以下の環境変数を設定します:
DB_HOST
: データベースのホストアドレス(デフォルト:localhost)
DB_PORT
: データベースのポート(デフォルト:5432)
DB_NAME
: データベース名(デフォルト:postgres)
DB_USER
: データベースのユーザー名(デフォルト:postgres)
DB_PASSWORD
: データベースのパスワード
VECTOR_SIZE
: ベクトルサイズ(デフォルト:1024)
使用方法
データベースの初期化
以下のSQLコマンドを実行して、PostgreSQLデータベースを初期化します:
CREATE EXTENSION IF NOT EXISTS pgvector;
データの挿入
insert_data.py
スクリプトを使用して、検索結果をデータベースに挿入します:
python insert_data.py --metadata "{'source': 'example.com', 'timestamp': '2023-10-01'}" --text "これはサンプルテキストです。"
データの検索
search_data.py
スクリプトを使用して、ベクトルの類似性に基づいてデータベース内の内容を検索します:
python search_data.py --query_embedding "0.5, 0.3, ..., 0.2" --threshold 0.7
サーバーのテスト
以下のコマンドを実行して、サーバーをテストします:
uvicorn main:app --reload
http://localhost:8000/docs
にアクセスして、APIドキュメントを確認します。
トラブルシューティング
ウェブ検索が失敗する場合
- インターネット接続を確認してください。
- 対象ウェブサイトがクローリングを許可していることを確認してください。
データベース接続に問題がある場合
- PostgreSQLサービスが実行中であることを確認してください。
- データベースの認証情報が正しいことを確認してください。
- PostgreSQLのログファイルを確認して、詳細な情報を取得してください。
ベクトル類似性検索のパフォーマンスが低い場合
- PostgreSQLのクエリを最適化してください。
- ベクトルインデックスを追加してください。
- 結果の制限を減らすか、類似性の閾値を下げてください。
PostgreSQL関数によるベクトル類似性検索
PostgreSQLを使用してベクトル類似性検索を実行するには、以下の関数を使用できます:
CREATE OR REPLACE FUNCTION match_web_search(
query_embedding vector(1024),
match_threshold float,
match_count int
)
RETURNS TABLE (
id bigint,
metadata jsonb,
text TEXT,
date TIMESTAMP,
similarity float
)
LANGUAGE plpgsql
AS $$
BEGIN
RETURN QUERY
SELECT
web_search.id,
web_search.metadata,
web_search.text,
web_search.date,
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,
web_search.embedding <=> query_embedding
LIMIT match_count;
END;
$$;
この関数を使用すると、PostgreSQLデータベース内でベクトル類似性検索を実行でき、指定された類似性閾値を満たす結果を返し、ユーザーの入力に基づいて結果数を制限できます。結果は日付と類似性で並べられます。
PostgreSQLテーブルの作成
CREATE TABLE web_search (
id SERIAL PRIMARY KEY,
text TEXT,
metadata JSONB,
embedding VECTOR(1024),
date TIMESTAMP DEFAULT NOW()
);
このテーブル構造は、ウェブ検索結果を格納するために使用され、テキスト内容、メタデータ、およびベクトル表現を含みます。