Skip to main content
Glama

Memory Bank MCP Server

by t3ta
generate-ai-embedding.ts5.26 kB
#!/usr/bin/env ts-node import * as path from 'path'; import * as fs from 'fs'; import { PackageAnalyzer } from './package-analyzer'; import { MermaidGenerator } from './mermaid-generator'; /** * AIプロンプト用のモノレポ構造埋め込みツール * スキーマパッケージの構造を解析し、AIプロンプト用の埋め込みテキストを生成する */ async function main() { try { // プロジェクトパス(カレントディレクトリ) const projectPath = process.cwd(); // 解析オプション設定 const analyzeOptions = { depth: 'basic' as 'basic', exclude: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/*.d.ts'], include: ['**/*.ts', '**/*.tsx'] }; console.log(`🔍 プロジェクト解析開始: ${projectPath}`); // プロジェクト解析 const analyzer = new PackageAnalyzer(); const structure = analyzer.analyzeProject(projectPath, analyzeOptions); // ディレクトリ構造図生成 const generator = new MermaidGenerator(); const diagramOptions = { type: 'directory' as 'directory', detailLevel: 'standard' as 'standard', title: 'モノレポパッケージ構造', direction: 'TB' as 'TB' }; const diagram = generator.generateDirectoryDiagram(structure, diagramOptions); // AIプロンプト用の埋め込みテキスト生成 const aiEmbedding = generateAIEmbedding(structure, diagram); // 出力ファイル保存 const outputPath = path.join(projectPath, 'ai-embedding.md'); fs.writeFileSync(outputPath, aiEmbedding); console.log(`✨ AI埋め込みファイル生成完了: ${outputPath}`); // クリップボードにコピー(コマンドによって異なる) try { fs.writeFileSync('/tmp/ai-embedding.txt', aiEmbedding); console.log('📋 クリップボードにコピーするには:'); console.log(' cat /tmp/ai-embedding.txt | pbcopy # macOS'); console.log(' cat /tmp/ai-embedding.txt | xclip -selection clipboard # Linux'); } catch (error) { console.error('一時ファイル作成に失敗しました', error); } } catch (error) { console.error('❌ エラー発生:', error); } } /** * AIプロンプト用の埋め込みテキストを生成 */ function generateAIEmbedding(structure: any, diagram: string): string { const packageInfo = extractPackageInfo(structure); return ` # モノレポ構造情報 このプロジェクトは以下のパッケージ構造を持つモノレポです。この情報を参考に、質問に対して正確な回答をしてください。 ## パッケージ概要 ${packageInfo.map(pkg => `- **${pkg.name}**: ${pkg.description || 'パッケージの説明なし'}`).join('\n')} ## ディレクトリ構造 \`\`\`mermaid ${diagram} \`\`\` ## ファイル構成の特徴 - モノレポ構造を採用し、複数のパッケージを管理しています - 各パッケージは独立したpackage.jsonを持ち、依存関係を管理しています - テストは各パッケージの tests/ ディレクトリ内に配置されています ## 重要なファイル ${packageInfo.flatMap(pkg => pkg.importantFiles.map(file => `- \`${pkg.name}/${file.path}\`: ${file.description || 'ファイルの説明なし'}`) ).join('\n')} ## 依存関係 ${packageInfo.map(pkg => `- ${pkg.name}: ${Object.keys(pkg.dependencies || {}).length > 0 ? Object.entries(pkg.dependencies || {}).map(([dep, ver]) => `${dep}@${ver}`).join(', ') : '外部依存なし'}` ).join('\n')} ## 開発時の注意点 - パッケージ間の依存関係に注意して開発を進めてください - モジュールのインポートには相対パスではなく、パッケージ名を使用してください - テストは対応するコードと同じディレクトリ構造で配置してください `; } /** * パッケージ情報を抽出 */ function extractPackageInfo(structure: any): any[] { const packages: any[] = []; // パッケージパスを使用 structure.packagePaths.forEach((packagePath: string, packageName: string) => { const packageJsonPath = path.join(packagePath, 'package.json'); let packageJson = {}; try { if (fs.existsSync(packageJsonPath)) { packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); } } catch (error) { console.error(`パッケージJSONの読み込みに失敗: ${packageJsonPath}`, error); } // 重要なファイルを特定(ここではシンプルに例示) const importantFiles = [ { path: 'src/index.ts', description: 'パッケージのメインエントリポイント' }, { path: 'package.json', description: 'パッケージの設定と依存関係' } ]; packages.push({ name: packageName, description: (packageJson as any).description || `${packageName} パッケージ`, dependencies: (packageJson as any).dependencies || {}, importantFiles }); }); return packages; } // 実行 main().catch(err => { console.error('💥 致命的エラー:', err); process.exit(1); });

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