DuckDB RAG MCP Sample

Local 2025-09-01 00:22:29 0

An MCP server that enables RAG (Retrieval-Augmented Generation) on markdown documents by converting them to embedding vectors and performing vector search using DuckDB.


markdown ドキュメントを埋め込みベクトル化して、MCP から RAG で解説できるようにするサンプルです。

ベクトル化には Plamo-Embedding-1B を使用しています。

機能

  • markdown ファイルからテキスト抽出・ベクトル化
  • DuckDB を使用したベクトル検索
  • Parquet ファイルによるベクトルデータの永続化
  • MCP からベクトル検索

使用方法

ベクトルデータ生成

最初に検索対象にしたい markdown ファイルを特定のディレクトリに配置し、以下のコマンドで Parquet ファイルに変換してください。

uv run main.py --directory ~/path/to/markdown/files --parquet vectors.parquet

MCP の設定

ビルド

以下のコマンドでシングルバイナリが dist/server として生成されます。

uv run pyinstaller --clean --strip --noconfirm --onefile server.py

MCP のクライアント設定

利用したいクライアントに応じて設定してください。

Claude Desktop の場合は以下のような感じです。

VECTOR_PARQUET は先ほど変換したファイルを指定してください。

uv run mcp install server.py -v VECTOR_PARQUET=/path/to/vectors.parquet

以下のように設定されます。 ```JSON:~/Library/Application Support/Claude/claude_desktop_config.json { "mcpServers": { "DuckDB-RAG-MCP-Sample": { "command": "/path/to/dist/server", "env": { "VECTOR_PARQUET": "/path/to/vectors.parquet" } } } }


### 開発用サーバー起動

```bash
uv run mcp dev server.py

ライセンス

DuckDB RAG MCP Sampleは、Apache License, Version 2.0の下で提供されています。