mcpField
F
firestore-data

firestore-data

github.com/clineデータ・データベース40930 回インストール15 週間前に更新
リポジトリ

firestore-data について

Node.js スクリプトで Firestore のドキュメントやコレクションを操作するスキルです。ドキュメントの CRUD、コレクション一覧、Firestore の型付き JSON 値を使った絞り込み検索に対応します。

主な機能

  1. 01ドキュメントの追加、取得、更新、削除
  2. 02ルートおよびネストしたコレクションの一覧
  3. 03コレクション検索の絞り込みと並べ替え
  4. 04Firestore の型付き JSON 値に対応
  5. 05クエリ実行指標の確認

活用シーン

  1. 01型付きフィールド値でのドキュメント作成
  2. 02指定フィールドの更新や削除
  3. 03条件と順序を指定したドキュメント検索
  4. 04クエリ実行統計の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cline/skills --skill firestore-data

インストール後、Claude Code で/firestore-dataを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
add_documents.js
delete_documents.js
get_documents.js
list_collections.js
query_collection.js
update_document.js

詳細

使用方法

すべてのスクリプトは Node.js で実行できます。<param_name> と <param_value> は実際の値に置き換えてください。

Bash: node <skill_dir>/scripts/<script_name>.js '{"<param_name>": "<param_value>"}'

PowerShell: node <skill_dir>/scripts/<script_name>.js '{\"<param_name>\": \"<param_value>\"}'

注:スクリプトは、さまざまな .env ファイルから環境変数を自動的に読み込みます。環境変数が不足してスキルの実行に失敗した場合を除き、ユーザーに変数の設定を求めないでください。

スクリプト

add_documents

Firestore コレクションに新しいドキュメントを追加します。次のベストプラクティスに従ってください:

  1. documentData では常に型付きの値を使用してください。各フィールドは適切な型インジケーターで囲む必要があります(例:{"stringValue": "text"})。
  2. documentData の整数値は文字列で指定できます。このツールは整数値を文字列として受け付けます(例:{"integerValue": "1500"})。
  3. returnData は必要な場合にのみ true に設定してください。書き込まれた正確なデータの確認が必要な場合にのみ設定します。
  4. 送信前にデータを検証してください。データが Firestore のネイティブ JSON 形式に準拠していることを確認してください。
  5. タイムスタンプは適切に処理してください。タイムスタンプ文字列には RFC3339 形式を使用してください。
  6. バイナリデータは Base64 でエンコードしてください。バイナリデータは bytesValue フィールドで Base64 エンコードする必要があります。
  7. セキュリティルールを考慮してください。対象コレクションでのドキュメント作成が Firestore のセキュリティルールで許可されていることを確認してください。
パラメーター
名前型説明必須デフォルト
collectionPath文字列ドキュメントを追加するコレクションの相対パスです(例:'users' または 'users/userId/posts')。注:これは相対パスであり、'projects/{project_id}/databases/{database_id}/documents/...' のような絶対パスではありません。はい
documentDataオブジェクトFirestore のネイティブ JSON 形式のドキュメントデータです。各フィールドは型インジケーターで囲む必要があります:
  • 文字列:{"stringValue": "text"}
  • 整数:{"integerValue": "123"} または {"integerValue": 123}
  • 浮動小数点数:{"doubleValue": 123.45}
  • ブール値:{"booleanValue": true}
  • タイムスタンプ:{"timestampValue": "2025-01-07T10:00:00Z"}
  • 地理座標:{"geoPointValue": {"latitude": 34.05, "longitude": -118.24}}
  • 配列:{"arrayValue": {"values": [{"stringValue": "item1"}, {"integerValue": "2"}]}}
  • マップ:{"mapValue": {"fields": {"key1": {"stringValue": "value1"}, "key2": {"booleanValue": true}}}}
  • Null:{"nullValue": null}
  • バイト列:{"bytesValue": "base64EncodedString"}
  • 参照:{"referenceValue": "collection/document"} | はい | | | returnData | ブール値 | true に設定すると、出力に作成されたドキュメントのデータが含まれます。このフラグを false に設定すると、エージェントのコンテキストが過剰になるのを防げます。 | いいえ | false |

delete_documents

Firestore から複数のドキュメントを削除します

パラメーター
名前型説明必須デフォルト
documentPaths配列Firestore から削除するドキュメントの相対パスの配列です(例:'users/userId' または 'users/userId/posts/postId')。注:これらは相対パスであり、'projects/{project_id}/databases/{database_id}/documents/...' のような絶対パスではありません。はい

get_documents

パスを指定して、Firestore から複数のドキュメントを取得します

パラメーター
名前型説明必須デフォルト
documentPaths配列Firestore から取得するドキュメントの相対パスの配列です(例:'users/userId' または 'users/userId/posts/postId')。注:これらは相対パスであり、'projects/{project_id}/databases/{database_id}/documents/...' のような絶対パスではありません。はい

list_collections

指定した親パスの Firestore コレクションを一覧表示します

パラメーター
名前型説明必須デフォルト
parentPathstringサブコレクションの一覧を取得する相対親ドキュメントパス(例:'users/userId')。指定しない場合は、ルートコレクションの一覧を取得します。注:これは相対パスであり、'projects/{project_id}/databases/{database_id}/documents/...'のような絶対パスではありませんいいえ

query_collection

現在のプロジェクトのデータベース内にあるコレクションから、完全なドキュメントパスで指定したコレクションの Firestore ドキュメントを1件以上取得します。 コレクションの正確なパスと、ドキュメントに適用したいフィルタ条件がわかっている場合に使用してください。

パラメーター
名前型説明必須デフォルト
collectionPathstringクエリ対象の Firestore コレクションへの相対パス(例:'users' または 'users/userId/posts')。注:これは相対パスであり、'projects/{project_id}/databases/{database_id}/documents/...'のような絶対パスではありませんはい
filtersarrayクエリに適用するフィルターオブジェクトの配列です。各フィルターは、次の内容を含む JSON 文字列です:
- field:フィルター対象のフィールド名
- op:使用する演算子("<", "<=", ">", ">=", "==", "!=", "array-contains", "array-contains-any", "in", "not-in")
- value:比較対象の値(文字列、数値、ブール値、または配列)
例:{"field": "age", "op": ">", "value": 18}
はい
orderBystring並べ替え対象のフィールドと方向を指定する JSON 文字列(例:{"field": "name", "direction": "ASCENDING"})。指定しない場合は空欄にしますはい
limitinteger返すドキュメントの最大数いいえ100
analyzeQuerybooleantrue の場合、実行統計を含むクエリの説明メトリクスを返しますいいえfalse

update_document

Firestore の既存ドキュメントを更新します。ドキュメント全体の更新と、更新マスクを使用した特定フィールドの更新の両方に対応しています。次のベストプラクティスに従ってください:

  1. 正確に更新するには更新マスクを使用します。特定のフィールドのみを更新する場合は、意図しない変更を防ぐためにupdateMaskパラメーターを使用します
  2. documentDataでは必ず型付きの値を使用します。各フィールドは適切な型インジケーターでラップする必要があります(例:{"stringValue": "text"})
  3. 更新マスクを使ってフィールドを削除します。削除するフィールドをupdateMaskに含め、documentDataからは省略します
  4. 整数値は文字列で指定できます。このスキルでは整数値を文字列として受け付けます(例:{"integerValue": "1500"})
  5. returnDataは必要な場合にのみtrueに設定し、更新後の正確なデータを確認するときに限って使用します
  6. タイムスタンプは適切に処理します。タイムスタンプ文字列にはRFC3339形式を使用します
  7. セキュリティルールを考慮します。Firestoreのセキュリティルールでドキュメントの更新が許可されていることを確認してください
パラメーター
名前型説明必須デフォルト
documentPathstring更新するドキュメントの相対パスです(例:'users/userId' または 'users/userId/posts/postId')。注:これは相対パスであり、'projects/{project_id}/databases/{database_id}/documents/...' のような絶対パスではありません。はい
documentDataobjectFirestore ネイティブの JSON 形式のドキュメントデータです。各フィールドは型を示す値で囲む必要があります:
- 文字列:{"stringValue": "text"}
- 整数:{"integerValue": "123"} または {"integerValue": 123}
- 浮動小数点数:{"doubleValue": 123.45}
- ブール値:{"booleanValue": true}
- タイムスタンプ:{"timestampValue": "2025-01-07T10:00:00Z"}
- 地理座標:{"geoPointValue": {"latitude": 34.05, "longitude": -118.24}}
- 配列:{"arrayValue": {"values": [{"stringValue": "item1"}, {"integerValue": "2"}]}}
- マップ:{"mapValue": {"fields": {"key1": {"stringValue": "value1"}, "key2": {"booleanValue": true}}}}
- Null:{"nullValue": null}
- バイト列:{"bytesValue": "base64EncodedString"}
- 参照:{"referenceValue": "collection/document"}
はい
updateMaskarray更新対象のフィールドを指定します。指定しない場合、documentData 内のすべてのフィールドが更新されます。指定した場合、指定されたフィールドのみが更新されます。マスクで参照されているものの documentData に存在しないフィールドは、ドキュメントから削除されます。いいえ
returnDatabooleantrue に設定すると、更新後のドキュメントのデータが出力されます。このフラグを false に設定すると、エージェントのコンテキストが過剰になるのを防げます。いいえfalse

コメント