Qdrant Persistence 搭載 MCP メモリサーバー
この MCP サーバーは、Qdrant ベクター データベースを活用したセマンティック検索機能を備えたナレッジ グラフ実装を提供します。
特徴
エンティティと関係性を用いたグラフベースの知識表現
ファイルベースの永続性(memory.json)
Qdrantベクターデータベースを使用したセマンティック検索
意味的類似性のためのOpenAI埋め込み
リバースプロキシ互換性を備えたHTTPSサポート
簡単に導入できるDockerサポート
Related MCP server: MCP Qdrant Server with OpenAI Embeddings
環境変数
次の環境変数が必要です。
# OpenAI API key for generating embeddings
OPENAI_API_KEY=your-openai-api-key
# Qdrant server URL (supports both HTTP and HTTPS)
QDRANT_URL=https://your-qdrant-server
# Qdrant API key (if authentication is enabled)
QDRANT_API_KEY=your-qdrant-api-key
# Name of the Qdrant collection to use
QDRANT_COLLECTION_NAME=your-collection-name設定
ローカルセットアップ
依存関係をインストールします:
npm installサーバーを構築します。
npm run buildDockerのセットアップ
Docker イメージをビルドします。
docker build -t mcp-qdrant-memory .必要な環境変数を使用して Docker コンテナを実行します。
docker run -d \
-e OPENAI_API_KEY=your-openai-api-key \
-e QDRANT_URL=http://your-qdrant-server:6333 \
-e QDRANT_COLLECTION_NAME=your-collection-name \
-e QDRANT_API_KEY=your-qdrant-api-key \
--name mcp-qdrant-memory \
mcp-qdrant-memoryMCP 設定に追加:
{
"mcpServers": {
"memory": {
"command": "/bin/zsh",
"args": ["-c", "cd /path/to/server && node dist/index.js"],
"env": {
"OPENAI_API_KEY": "your-openai-api-key",
"QDRANT_API_KEY": "your-qdrant-api-key",
"QDRANT_URL": "http://your-qdrant-server:6333",
"QDRANT_COLLECTION_NAME": "your-collection-name"
},
"alwaysAllow": [
"create_entities",
"create_relations",
"add_observations",
"delete_entities",
"delete_observations",
"delete_relations",
"read_graph",
"search_similar"
]
}
}
}ツール
エンティティ管理
create_entities: 複数の新しいエンティティを作成するcreate_relations: エンティティ間の関係を作成するadd_observations: エンティティに観測を追加するdelete_entities: エンティティとその関係を削除するdelete_observations: 特定の観測を削除するdelete_relations: 特定のリレーションを削除するread_graph: 完全なナレッジグラフを取得する
セマンティック検索
search_similar: 意味的に類似したエンティティと関係を検索するinterface SearchParams { query: string; // Search query text limit?: number; // Max results (default: 10) }
実装の詳細
サーバーは 2 つの形式の永続性を維持します。
ファイルベース (memory.json):
完全な知識グラフ構造
完全なグラフへの高速アクセス
グラフ操作に使用される
Qdrant ベクター DB:
実体と関係の意味的埋め込み
類似検索を可能にする
ファイルストレージと自動的に同期
同期
エンティティまたはリレーションが変更された場合:
変更はmemory.jsonに書き込まれます
埋め込みはOpenAIを使用して生成される
ベクトルはQdrantに保存されます
両方のストレージシステムは一貫性を維持
検索プロセス
検索する場合:
クエリテキストは埋め込みに変換されます
Qdrantは類似検索を実行します
結果にはエンティティと関係の両方が含まれます
結果は意味的類似性によってランク付けされます
使用例
// Create entities
await client.callTool("create_entities", {
entities: [{
name: "Project",
entityType: "Task",
observations: ["A new development project"]
}]
});
// Search similar concepts
const results = await client.callTool("search_similar", {
query: "development tasks",
limit: 5
});HTTPSとリバースプロキシの設定
サーバーはHTTPSおよびリバースプロキシ経由でQdrantに接続できます。これは特に以下の場合に便利です。
NginxやApacheなどのリバースプロキシの背後でQdrantを実行する
自己署名証明書の使用
カスタム SSL/TLS 構成の要求
リバースプロキシの設定
リバース プロキシを構成します (Nginx を使用する例):
server {
listen 443 ssl;
server_name qdrant.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:6333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}環境変数を更新します。
QDRANT_URL=https://qdrant.yourdomain.comセキュリティに関する考慮事項
サーバーは、以下を使用して堅牢な HTTPS 処理を実装します。
カスタムSSL/TLS構成
適切な証明書検証オプション
接続プールとキープアライブ
指数バックオフによる自動再試行
設定可能なタイムアウト
HTTPS接続のトラブルシューティング
接続の問題が発生した場合:
証明書を確認します:
openssl s_client -connect qdrant.yourdomain.com:443直接接続をテストします。
curl -v https://qdrant.yourdomain.com/collectionsプロキシ設定を確認します:
env | grep -i proxy貢献
リポジトリをフォークする
機能ブランチを作成する
変更を加える
プルリクエストを送信する
ライセンス
マサチューセッツ工科大学