Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

MCP ツールリファレンス

laurus MCP サーバーは以下のツールを公開しています。

connect

実行中の laurus-server gRPC エンドポイントに接続します。--endpoint フラグなしでサーバーを起動した場合や、実行時に別の laurus-server に切り替える場合に、他のツールを使用する前にこのツールを呼び出してください。

パラメーター

名前必須説明
endpointstringはいgRPC エンドポイント URL(例: http://localhost:50051

Tool: connect
endpoint: "http://localhost:50051"

結果: Connected to laurus-server at http://localhost:50051.


create_index

指定されたスキーマで新しい検索インデックスを作成します。

パラメーター

名前必須説明
schema_jsonstringはいJSON 文字列としてのスキーマ定義

スキーマ JSON フォーマット

FieldOption は serde の externally-tagged 表現を使用します(バリアント名がキーになります):

{
  "dynamic_field_policy": "Dynamic",
  "fields": {
    "title":     { "Text":    { "indexed": true, "stored": true } },
    "body":      { "Text":    {} },
    "score":     { "Float":   {} },
    "count":     { "Integer": {} },
    "active":    { "Boolean": {} },
    "created":   { "DateTime": {} },
    "embedding": { "Hnsw":    { "dimension": 384 } }
  }
}

オプションの dynamic_field_policy キーは、スキーマに宣言されていないフィールドが投入ドキュメントに含まれる場合の挙動を制御します。指定可能な値は "Strict" / "Dynamic"(デフォルト)/ "Ignore"警告: "Dynamic" では integer フィールドに入ってきた float 値が静かに切り捨てられます(3.143)。厳密さが必要なら "Strict" を使用してください。詳細な挙動マトリクスは スキーマとフィールド を参照してください。

Tool: create_index
schema_json: {"fields": {"title": {"Text": {}}, "body": {"Text": {}}}}

結果: Index created successfully at /path/to/index.

3D ECEF 座標を扱う Geo3d フィールドを含むスキーマ:

{
  "fields": {
    "title":    { "Text":  { "indexed": true, "stored": true } },
    "position": { "Geo3d": { "indexed": true, "stored": true } }
  }
}

座標系については 3D 地理検索 (ECEF) を参照してください。Geo3d フィールドは geo3d_distance / geo3d_bbox / geo3d_nearest の DSL 形式で検索できます(後述の search ツールを参照)。


get_stats

現在の検索インデックスの統計情報(ドキュメント数、ベクトルフィールド情報など)を取得します。

パラメーター

なし。

結果

{
  "document_count": 42,
  "vector_fields": ["embedding"]
}

get_schema

現在のインデックスのスキーマ(全フィールド定義と設定)を取得します。

パラメーター

なし。

結果

{
  "fields": {
    "title": { "Text": { "indexed": true, "stored": true } },
    "body": { "Text": {} },
    "embedding": { "Hnsw": { "dimension": 384 } }
  },
  "default_fields": ["title", "body"]
}

put_document

インデックスにドキュメントを上書き(upsert)します。同じ ID のドキュメントが既に存在する場合、全チャンクが削除されてから新しいドキュメントがインデックスされます。ドキュメント追加後は commit を呼び出してください。

パラメーター

名前必須説明
idstringはい外部ドキュメント識別子
documentobjectはいJSON オブジェクトとしてのドキュメントフィールド

Tool: put_document
id: "doc-1"
document: {"title": "Hello World", "body": "これはテストドキュメントです。"}

結果: Document 'doc-1' put (upserted). Call commit to persist changes.

Geo3d 値を含む例:

Tool: put_document
id: "drone-1"
document: {"title": "東京上空のドローン", "position": {"x": -3955182.0, "y": 3350553.0, "z": 3700276.0}}

MCP サーバーは 3D ECEF 点を xyz キーを持つ JSON オブジェクト(メートル単位)として受け付けます。これは HTTP ゲートウェイの挙動とは異なり、HTTP ゲートウェイでは現在 JSON から Geo3d を推論しません。MCP では書き込み・読み出しともに完全対応しています。


add_document

インデックスにドキュメントを新しいチャンクとして追加します。put_document とは異なり、同じ ID の既存ドキュメントを削除せずに追記します。大きなドキュメントをチャンクに分割する際に便利です。ドキュメント追加後は commit を呼び出してください。

パラメーター

名前必須説明
idstringはい外部ドキュメント識別子
documentobjectはいJSON オブジェクトとしてのドキュメントフィールド

Tool: add_document
id: "doc-1"
document: {"title": "Hello World - Part 2", "body": "これは続きです。"}

結果: Document 'doc-1' added as chunk. Call commit to persist changes.


get_documents

外部 ID で全ドキュメント(チャンクを含む)を取得します。

パラメーター

名前必須説明
idstringはい外部ドキュメント識別子

結果

{
  "id": "doc-1",
  "documents": [
    { "title": "Hello World", "body": "これはテストドキュメントです。" }
  ]
}

delete_documents

外部 ID で全ドキュメント(チャンクを含む)を削除します。削除後は commit を呼び出してください。

パラメーター

名前必須説明
idstringはい外部ドキュメント識別子

結果: Documents 'doc-1' deleted. Call commit to persist changes.


commit

保留中の変更をディスクにコミットします。変更を検索可能かつ永続的にするため、put_documentadd_document、または delete_documents の後に必ず呼び出してください。

パラメーター

なし。

結果: Changes committed successfully.


add_field

インデックスにフィールドを追加します。

パラメーター

名前必須説明
namestringはいフィールド名
field_option_jsonstringはいJSON 形式のフィールド設定

{
  "name": "category",
  "field_option_json": "{\"Text\": {\"indexed\": true, \"stored\": true}}"
}

delete_field

インデックスからフィールドを削除します。既にインデックスされたデータは残りますが、削除されたフィールドにはアクセスできなくなります。

パラメーター

名前必須説明
namestringはい削除するフィールド名

Tool: delete_field
name: "category"

結果: Field 'category' deleted.


laurus 統一クエリ DSL を使用してドキュメントを検索します。Lexical 検索、Vector 検索、ハイブリッド検索を単一のクエリ文字列でサポートします。

パラメーター

名前必須説明
querystringはいlaurus 統一クエリ DSL による検索クエリ
limitintegerいいえ最大結果数(デフォルト: 10)
offsetintegerいいえページネーション用スキップ数(デフォルト: 0)
fusionstringいいえハイブリッド検索用の融合アルゴリズム(JSON)
field_boostsstringいいえフィールド毎のブースト係数(JSON)

クエリ DSL の例

Lexical 検索

クエリ説明
helloデフォルトフィールド全体のターム検索
title:helloフィールド指定のターム検索
title:hello AND body:worldブール AND
"exact phrase"フレーズ検索
roam~2ファジー検索(編集距離 2)
count:[1 TO 10]範囲検索
title:helo~1フィールド指定のファジー検索

3D 地理検索

クエリ説明
position:geo3d_distance(x, y, z, distance_m)(x, y, z) を中心とした最大距離(メートル単位)の球
position:geo3d_bbox(min_x, min_y, min_z, max_x, max_y, max_z)3D 軸並行バウンディングボックス
position:geo3d_nearest(x, y, z, k)(x, y, z) に最も近い k 個の近傍点

position はフィールド名で、スキーマで宣言した実際の Geo3d 型フィールドに置き換えてください。完全な DSL 構文は Query DSL → 3D 地理クエリ を参照してください。

Vector 検索

クエリ説明
content:"cute kitten"特定フィールドでの Vector 検索(クォート付き)
content:python特定フィールドでの Vector 検索(クォートなし)
content:"cute kitten"^0.8重み付き Vector 検索
a:"cats" b:"dogs"^0.5複数の Vector クエリ

ハイブリッド検索

クエリ説明
title:hello content:"cute kitten"Lexical + Vector(OR/union — いずれかの結果を返す)
title:hello +content:"cute kitten"Lexical + Vector(AND/intersection — 両方にマッチした結果のみ)
+title:hello +content:"cute kitten"両方必須(AND)。Lexical フィールドの + は required clause
title:hello AND body:world content:"cats"^0.8ブール Lexical + 重み付き Vector

融合アルゴリズムの例

{"rrf": {"k": 60.0}}
{"weighted_sum": {"lexical_weight": 0.7, "vector_weight": 0.3}}

フィールドブーストの例

{"title": 2.0, "body": 1.0}

結果

{
  "total": 2,
  "results": [
    {
      "id": "doc-1",
      "score": 3.14,
      "document": { "title": "Hello World", "body": "..." }
    },
    {
      "id": "doc-2",
      "score": 1.57,
      "document": { "title": "Hello Again", "body": "..." }
    }
  ]
}

典型的なワークフロー

1. connect          → 実行中の laurus-server に接続
2. create_index     → スキーマを定義(インデックスが存在しない場合)
3. add_field        → フィールドを追加(必要に応じて)
   delete_field     → フィールドを削除(必要に応じて)
4. put_document     → ドキュメントを上書き(必要に応じて繰り返し)
   add_document     → ドキュメントチャンクを追記(必要に応じて)
5. commit           → 変更をディスクに永続化
6. search           → インデックスを検索
7. get_documents    → ID でドキュメントを取得
8. delete_documents → ドキュメントを削除
9. commit           → 変更を永続化