Skip to main content
Glama

Memory Bank MCP Server

by t3ta
logger-consistency-plan.json8.75 kB
{ "schema": "memory_document_v2", "metadata": { "id": "7b6a5c4d-3e2f-1d0c-9b8a-7c6d5e4f3b2a", "title": "ロガー使用一貫性改善計画", "documentType": "plan", "path": "logger-consistency-plan.json", "tags": [ "improvement", "logging", "mcp" ], "lastModified": "2025-03-30T05:40:32.360Z", "createdAt": "2025-03-30T05:40:32.360Z", "version": 1 }, "content": { "overview": { "title": "MCP-1: ロガー使用の一貫性確保", "description": "すべてのコンポーネントでcomponentLoggerを一貫して使用するための詳細実装計画。直接loggerを使用している箇所をすべてcomponentLoggerに置き換え、構造化ロギングの質を向上させる。" }, "currentState": { "description": "現在、多くのコンポーネントではcomponentLoggerが定義されているにもかかわらず、実際のログ出力で直接loggerを使用している箇所が多い。これにより、コンポーネント固有のコンテキスト情報が継承されず、ログの質が低下している。", "examples": [ "// コンポーネントロガーは定義されているが...\nprivate readonly componentLogger = logger.withContext({\n component: 'BranchController'\n});\n\n// 実際のコードでは直接loggerを使用している\nlogger.info('Reading branch document', { branchName, path });" ], "affectedFiles": [ "BranchController.ts", "GlobalController.ts", "FileSystemBranchMemoryBankRepository.ts" ] }, "targetState": { "description": "すべてのログ出力でcomponentLoggerを一貫して使用し、各操作に関連するコンテキスト情報(操作名、リソース識別子など)を常に付与する。これにより、ログの追跡性と分析性が向上する。", "examples": [ "// コンポーネントロガーの定義\nprivate readonly componentLogger = logger.withContext({\n component: 'BranchController'\n});\n\n// コンポーネントロガーの一貫した使用\nthis.componentLogger.info('Reading branch document', { \n operation: 'readDocument',\n branchName: branchInfo.name, \n path: document.path.value\n});" ], "standardContext": [ "component: コンポーネント名", "operation: 実行中の操作名", "resourceType: 操作対象のリソースタイプ", "resourceId: 操作対象のリソース識別子" ] }, "implementationPlan": { "fileUpdates": [ { "path": "/packages/mcp/src/interface/controllers/BranchController.ts", "changes": [ { "type": "検索", "pattern": "logger.info", "description": "すべてのlogger.info呼び出しをthis.componentLogger.info呼び出しに変更" }, { "type": "検索", "pattern": "logger.error", "description": "すべてのlogger.error呼び出しをthis.componentLogger.error呼び出しに変更" }, { "type": "検索", "pattern": "logger.debug", "description": "すべてのlogger.debug呼び出しをthis.componentLogger.debug呼び出しに変更" }, { "type": "検索", "pattern": "logger.warn", "description": "すべてのlogger.warn呼び出しをthis.componentLogger.warn呼び出しに変更" }, { "type": "拡張", "description": "各ログメッセージに操作名(operation)を追加" } ] }, { "path": "/packages/mcp/src/interface/controllers/GlobalController.ts", "changes": [ { "type": "検索", "pattern": "logger.info", "description": "すべてのlogger.info呼び出しをthis.componentLogger.info呼び出しに変更" }, { "type": "検索", "pattern": "logger.error", "description": "すべてのlogger.error呼び出しをthis.componentLogger.error呼び出しに変更" }, { "type": "検索", "pattern": "logger.debug", "description": "すべてのlogger.debug呼び出しをthis.componentLogger.debug呼び出しに変更" }, { "type": "検索", "pattern": "logger.warn", "description": "すべてのlogger.warn呼び出しをthis.componentLogger.warn呼び出しに変更" }, { "type": "拡張", "description": "各ログメッセージに操作名(operation)を追加" } ] }, { "path": "/packages/mcp/src/infrastructure/repositories/file-system/FileSystemBranchMemoryBankRepository.ts", "changes": [ { "type": "検索", "pattern": "logger.info", "description": "すべてのlogger.info呼び出しをthis.componentLogger.info呼び出しに変更" }, { "type": "検索", "pattern": "logger.error", "description": "すべてのlogger.error呼び出しをthis.componentLogger.error呼び出しに変更" }, { "type": "検索", "pattern": "logger.debug", "description": "すべてのlogger.debug呼び出しをthis.componentLogger.debug呼び出しに変更" }, { "type": "検索", "pattern": "logger.warn", "description": "すべてのlogger.warn呼び出しをthis.componentLogger.warn呼び出しに変更" }, { "type": "追加", "description": "componentLoggerが未定義の場合は定義を追加", "code": "private readonly componentLogger = logger.withContext({\n component: 'FileSystemBranchMemoryBankRepository'\n});" }, { "type": "拡張", "description": "各ログメッセージにリソース情報(branchName, path)を追加" } ] } ], "additionalFiles": [], "templateExamples": [ { "operation": "読み取り操作", "template": "this.componentLogger.info('Reading document', { \n operation: 'readDocument',\n branchName: branchInfo.name, \n path: document.path.value,\n documentType: document.determineDocumentType()\n});" }, { "operation": "書き込み操作", "template": "this.componentLogger.info('Writing document', { \n operation: 'saveDocument',\n branchName: branchInfo.name, \n path: document.path.value,\n documentType: document.determineDocumentType()\n});" }, { "operation": "エラー状況", "template": "this.componentLogger.error('Failed to process document', { \n operation: 'processDocument',\n branchName: branchInfo.name, \n path: document.path.value,\n error: ErrorUtils.formatForLogging(error)\n});" } ] }, "testingPlan": { "approach": "ユニットテストとロギング検証", "verificationSteps": [ "1. モックロガーを使用してログ出力を検証するテストを追加または更新", "2. 各コントローラーメソッドがcomponentLoggerを使用していることを確認", "3. ログメッセージに必要なコンテキスト情報が含まれていることを検証" ], "mockExample": "// ログ出力検証用モック\nconst mockComponentLogger = {\n info: jest.fn(),\n error: jest.fn(),\n debug: jest.fn(),\n warn: jest.fn()\n};\n\n// テスト内でモックを設定\nconst controller = new BranchController(...);\n(controller as any).componentLogger = mockComponentLogger;\n\n// テスト後に検証\nexpect(mockComponentLogger.info).toHaveBeenCalledWith(\n 'Reading branch document',\n expect.objectContaining({\n operation: 'readDocument',\n branchName: 'feature/test'\n })\n);" }, "benefits": [ "ログの一貫性と品質向上", "トラブルシューティングの効率化", "操作の追跡性向上", "ログフィルタリングの効率化" ], "dependencies": [ "shared/utils/logger.ts - 既存のロガーインターフェース", "shared/utils/ErrorUtils.ts - エラーフォーマット関数" ] } }

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