Skip to main content
Glama

Memory Bank MCP Server

by t3ta
systemPatterns.json11.8 kB
{ "schema": "memory_document_v2", "metadata": { "id": "18978310-6b8f-4ea4-9bcc-56e359712dd4", "title": "システムパターン", "documentType": "system_patterns", "path": "systemPatterns.json", "tags": [ "system-patterns", "json-patch", "design-patterns" ], "lastModified": "2025-03-24T19:25:00.000Z", "createdAt": "2025-03-24T09:55:09.525Z", "version": 3 }, "content": { "technicalDecisions": [ { "id": "6554529b-81e6-484e-bd59-6da94920ef92", "title": "JSON Patch (RFC 6902)の採用", "context": "メモリバンクのJSONドキュメントに対する部分的な更新機能が必要。更新操作の標準化と互換性の確保が重要。", "decision": "RFC 6902で定義されているJSON Patchを採用し、add/remove/replace/move/copy/testの全操作をサポートする。", "consequences": { "positive": [ "標準化された操作セットによる一貫性の確保", "将来の拡張性の確保", "他のツールとの互換性", "明確な仕様に基づく実装の容易さ" ], "negative": [ "初期実装の複雑さの増加", "全操作の完全なテストカバレッジの必要性" ] }, "status": "accepted", "date": "2025-03-24T11:29:00.000Z", "alternatives": [ "カスタム更新操作の定義", "シンプルな置換操作のみのサポート" ] }, { "id": "d3c8e1a4-f5b6-47e9-92d1-13c6e2f89a3b", "title": "ValueObjectパターンを活用した実装アプローチ", "context": "JSON Patchの異なるコンポーネント(パス、操作など)を表現するための最適な設計パターンが必要。", "decision": "JsonPath、JsonPatchOperationなどをValueObjectとして実装し、不変性と自己完結性を確保する。", "consequences": { "positive": [ "明確な責任分担と単一責任の原則に沿った実装", "堅牢なバリデーションとエラーハンドリング", "テスト容易性の向上", "ドメイン言語としての表現力の向上" ], "negative": [ "コード量の増加", "初期実装コストの増大" ] }, "status": "accepted", "date": "2025-03-24T16:35:00.000Z", "alternatives": [ "単純なオブジェクトリテラルの使用", "サービスベースのアプローチ" ] }, { "id": "87f2e9c6-1a3b-4d5e-8f7c-9a0b1c2d3e4f", "title": "エラーハンドリング戦略", "context": "JSON Patch操作は複数のエラーを発生させる可能性があり、明確なエラー報告と処理が必要。", "decision": "専用のエラークラス階層を作成し、詳細なエラーコードとメッセージを提供する。操作失敗時はアトミックな動作を確保。", "consequences": { "positive": [ "明確なエラーメッセージによるデバッグと問題解決の容易化", "一貫したエラー処理パターン", "クライアントへの有用なフィードバック" ], "negative": [ "エラー処理コードの追加が必要", "エラーケースのテストカバレッジの確保が必要" ] }, "status": "accepted", "date": "2025-03-24T16:35:00.000Z", "alternatives": [ "一般的なエラーメッセージの使用", "例外を使わないアプローチ" ] }, { "id": "2a3b4c5d-6e7f-8g9h-0i1j-2k3l4m5n6o7p", "title": "fast-json-patchライブラリの採用", "context": "JSON Patch実装の効率性と信頼性を確保するため、既存の実装の活用を検討。", "decision": "fast-json-patchライブラリを採用し、アダプターパターンを使用して統合する。", "consequences": { "positive": [ "実装コストの大幅削減", "広く使われているライブラリによる信頼性の確保", "性能最適化の恩恵を受けられる", "メンテナンスコストの軽減" ], "negative": [ "外部依存関係の追加", "カスタマイズの自由度の制限", "ライブラリのバージョン管理が必要" ] }, "status": "accepted", "date": "2025-03-24T19:25:00.000Z", "alternatives": [ "完全にカスタム実装を行う", "他のJSON Patchライブラリの検討" ] } ], "implementationPatterns": [ { "id": "json-patch-implementation", "name": "JSON Patch実装パターン(fast-json-patchベース)", "description": "fast-json-patchライブラリを活用したRFC 6902準拠のJSON Patch実装", "components": [ { "name": "JsonPath", "type": "ValueObject", "responsibility": "JSONパスの解析と検証", "details": { "properties": [ { "name": "path", "type": "string", "description": "パス文字列(例: '/a/b/c')" }, { "name": "segments", "type": "string[]", "description": "パスセグメントの配列" } ], "methods": [ { "name": "parse", "signature": "static parse(path: string): JsonPath", "description": "パス文字列を解析してJsonPathオブジェクトを生成" }, { "name": "validate", "signature": "validate(): void", "description": "パスの妥当性を検証" }, { "name": "toFastJsonPatchPath", "signature": "toFastJsonPatchPath(): string", "description": "fast-json-patch形式のパス文字列に変換" } ] } }, { "name": "JsonPatchOperation", "type": "ValueObject", "responsibility": "パッチ操作の表現とバリデーション", "details": { "properties": [ { "name": "op", "type": "string", "description": "操作タイプ(add/remove/replace/move/copy/test)" }, { "name": "path", "type": "JsonPath", "description": "対象のパス" }, { "name": "value", "type": "any", "description": "操作に使用する値(操作タイプによって必須または任意)" }, { "name": "from", "type": "JsonPath", "description": "移動・コピー元のパス(move/copy操作時に使用)" } ], "methods": [ { "name": "create", "signature": "static create(op: string, path: string, value?: any, from?: string): JsonPatchOperation", "description": "パッチ操作オブジェクトを生成" }, { "name": "validate", "signature": "validate(): void", "description": "操作の妥当性を検証" }, { "name": "toFastJsonPatchOperation", "signature": "toFastJsonPatchOperation(): any", "description": "fast-json-patch形式の操作オブジェクトに変換" } ] } }, { "name": "FastJsonPatchAdapter", "type": "Adapter", "responsibility": "fast-json-patchライブラリとの連携", "details": { "methods": [ { "name": "applyPatch", "signature": "applyPatch(document: any, operations: JsonPatchOperation[]): any", "description": "fast-json-patchを使用してパッチを適用" }, { "name": "validate", "signature": "validate(document: any, operations: JsonPatchOperation[]): boolean", "description": "fast-json-patchを使用してパッチ操作の妥当性を検証" }, { "name": "compare", "signature": "compare(document1: any, document2: any): JsonPatchOperation[]", "description": "2つのドキュメント間の差分をパッチ操作として取得" } ] } }, { "name": "JsonPatchService", "type": "Interface", "responsibility": "パッチ操作適用のインターフェース定義", "details": { "methods": [ { "name": "apply", "signature": "apply(document: any, operations: JsonPatchOperation[]): any", "description": "ドキュメントにパッチ操作を適用" }, { "name": "validate", "signature": "validate(document: any, operations: JsonPatchOperation[]): boolean", "description": "パッチ操作の妥当性を検証" }, { "name": "generatePatch", "signature": "generatePatch(source: any, target: any): JsonPatchOperation[]", "description": "2つのドキュメント間のパッチ操作を生成" } ] } }, { "name": "JsonPatchUseCase", "type": "UseCase", "responsibility": "ユースケースレベルでの操作のハンドリング", "details": { "methods": [ { "name": "execute", "signature": "execute(documentId: string, operations: JsonPatchOperation[]): Document", "description": "特定のドキュメントに対してパッチ操作を実行" } ], "dependencies": [ "JsonPatchService", "DocumentRepository" ] } } ], "workflow": [ "1. JsonPathによるパス解析と検証", "2. JsonPatchOperationによる操作のバリデーション", "3. FastJsonPatchAdapterを通じて操作をfast-json-patchライブラリ形式に変換", "4. ライブラリによる操作の適用", "5. 結果の検証と返却" ], "dependencies": [ { "name": "fast-json-patch", "version": "^3.1.0", "license": "MIT", "repository": "https://github.com/Starcounter-Jack/JSON-Patch" } ] } ] } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/t3ta/memory-bank-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server