UNPKG

@endlessblink/like-i-said-v2

Version:

Task Management & Memory for Claude - Track tasks, remember context, and maintain continuity across sessions with 27 powerful tools. Works with Claude Desktop and Claude Code.

169 lines (147 loc) โ€ข 5.36 kB
#!/usr/bin/env node import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); // Expected configurations for each client const expectedConfigs = { cursor: { path: '~/.cursor/mcp.json', content: { mcpServers: { 'like-i-said-memory-v2': { command: 'npx', args: ['-p', '@endlessblink/like-i-said-v2', 'like-i-said-v2', 'start'] } } } }, windsurf: { path: '~/.codeium/windsurf/mcp_config.json', content: { mcp: { servers: { 'like-i-said-memory-v2': { command: 'npx', args: ['-p', '@endlessblink/like-i-said-v2', 'like-i-said-v2', 'start'] } } } } }, 'claude-code': { command: 'claude mcp add like-i-said-memory-v2 -- npx -p @endlessblink/like-i-said-v2@latest like-i-said-v2', validates: [ 'Uses correct NPM package name: @endlessblink/like-i-said-v2', 'Includes -p flag for NPX', 'Specifies @latest version', 'Correct MCP server name: like-i-said-memory-v2' ] } }; // Simulate config generation function simulateConfigGeneration(client, config) { console.log(`\n๐Ÿ“„ ${client.toUpperCase()} Configuration:`); console.log('=' .repeat(50)); if (config.path) { console.log(`Path: ${config.path}`); console.log('Content:'); console.log(JSON.stringify(config.content, null, 2)); // Validate the configuration const serverConfig = config.content.mcpServers?.['like-i-said-memory-v2'] || config.content.mcp?.servers?.['like-i-said-memory-v2']; if (serverConfig) { console.log('\nโœ… Validation:'); if (serverConfig.command === 'npx') { console.log(' โœ“ Uses NPX command'); } if (serverConfig.args.includes('-p')) { console.log(' โœ“ Includes -p flag'); } if (serverConfig.args.includes('@endlessblink/like-i-said-v2')) { console.log(' โœ“ Uses correct package name'); } if (serverConfig.args.includes('start')) { console.log(' โœ“ Includes start command'); } } } else if (config.command) { console.log(`Command: ${config.command}`); console.log('\nโœ… Validation:'); config.validates.forEach(validation => { console.log(` โœ“ ${validation}`); }); } } // Test wrapper script function testWrapperScript() { console.log('\n๐Ÿ”ง Testing MCP Server Wrapper'); console.log('=' .repeat(50)); const wrapperPath = path.join(__dirname, '..', 'mcp-server-wrapper.js'); if (fs.existsSync(wrapperPath)) { const wrapperContent = fs.readFileSync(wrapperPath, 'utf8'); console.log('โœ“ Wrapper script exists'); if (wrapperContent.includes('server-markdown.js')) { console.log('โœ“ Wrapper correctly references server-markdown.js'); } if (wrapperContent.includes('stdio: \'inherit\'')) { console.log('โœ“ Wrapper inherits stdio for proper JSON-RPC communication'); } if (wrapperContent.includes('DO NOT MOVE THIS FILE')) { console.log('โœ“ Wrapper includes critical path warning'); } } else { console.log('โœ— Wrapper script not found!'); } } // Test NPX execution function testNPXExecution() { console.log('\n๐Ÿš€ Testing NPX Execution Paths'); console.log('=' .repeat(50)); const testScenarios = [ { name: 'Direct NPX install', command: 'npx -p @endlessblink/like-i-said-v2@latest like-i-said-v2 install', expected: 'Runs cli.js with install command' }, { name: 'NPX start (for MCP)', command: 'npx -p @endlessblink/like-i-said-v2@latest like-i-said-v2 start', expected: 'Runs cli.js with start command โ†’ executes mcp-server-wrapper.js' }, { name: 'NPX without command', command: 'npx -p @endlessblink/like-i-said-v2@latest like-i-said-v2', expected: 'Runs cli.js without args โ†’ starts MCP server via wrapper' } ]; testScenarios.forEach(scenario => { console.log(`\n${scenario.name}:`); console.log(`Command: ${scenario.command}`); console.log(`Expected: ${scenario.expected}`); }); } // Main test runner function runTests() { console.log('๐Ÿงช Configuration Generation Verification'); console.log('======================================'); // Test each client configuration Object.entries(expectedConfigs).forEach(([client, config]) => { simulateConfigGeneration(client, config); }); // Test wrapper script testWrapperScript(); // Test NPX execution paths testNPXExecution(); // Summary console.log('\n\n๐Ÿ“Š Summary'); console.log('=' .repeat(50)); console.log('โœ… All configurations use the correct NPX command format'); console.log('โœ… Package name is consistent: @endlessblink/like-i-said-v2'); console.log('โœ… Claude Code command properly formatted for MCP CLI'); console.log('โœ… IDE configurations (Cursor, Windsurf) properly structured'); console.log('\n๐Ÿ’ก Installation will work correctly across all platforms!'); } // Run tests runTests();