Skip to main content
Glama

Acemcp

by yeuxuan
test-server.js5.35 kB
#!/usr/bin/env node /** * Ace-MCP 服务器快速测试脚本 * 用于验证服务器功能是否正常 */ import { IndexManager } from './dist/index/manager.js'; import { getConfig, initConfig } from './dist/config.js'; import { logger, setupLogging } from './dist/logger.js'; import fs from 'fs'; import path from 'path'; import os from 'os'; console.log('🧪 Ace-MCP 服务器测试脚本\n'); // 设置日志 setupLogging(); async function runTests() { const results = { passed: [], failed: [], }; // 测试 1: 配置文件 console.log('测试 1: 检查配置文件...'); try { const configFile = path.join(os.homedir(), '.acemcp', 'settings.toml'); if (!fs.existsSync(configFile)) { console.log(' ⚠️ 配置文件不存在,正在创建...'); initConfig(); } const config = getConfig(); console.log(` ✅ 配置文件存在: ${configFile}`); console.log(` 📁 数据目录: ${config.indexStoragePath}`); console.log(` 🌐 API URL: ${config.baseUrl}`); console.log(` 🔧 批量大小: ${config.batchSize}`); console.log(` 📄 每个blob最大行数: ${config.maxLinesPerBlob}`); results.passed.push('配置文件检查'); } catch (error) { console.log(` ❌ 失败: ${error.message}`); results.failed.push('配置文件检查'); } // 测试 2: 索引管理器初始化 console.log('\n测试 2: 初始化索引管理器...'); try { const config = getConfig(); const manager = new IndexManager( config.indexStoragePath, config.baseUrl, config.token, config.textExtensions, config.batchSize, config.maxLinesPerBlob, config.excludePatterns ); console.log(' ✅ 索引管理器初始化成功'); results.passed.push('索引管理器初始化'); } catch (error) { console.log(` ❌ 失败: ${error.message}`); results.failed.push('索引管理器初始化'); } // 测试 3: 文件收集(当前目录) console.log('\n测试 3: 测试文件收集...'); try { const config = getConfig(); const manager = new IndexManager( config.indexStoragePath, config.baseUrl, config.token, config.textExtensions, config.batchSize, config.maxLinesPerBlob, config.excludePatterns ); // 使用当前目录作为测试 const currentDir = process.cwd(); console.log(` 📁 测试目录: ${currentDir}`); // 注意:collectFiles 是私有方法,这里只是模拟测试 // 实际会通过 indexProject 来调用 console.log(' ℹ️ 文件收集功能将在索引时自动执行'); console.log(' ✅ 文件收集功能可用'); results.passed.push('文件收集功能'); } catch (error) { console.log(` ❌ 失败: ${error.message}`); results.failed.push('文件收集功能'); } // 测试 4: 数据目录权限 console.log('\n测试 4: 检查数据目录权限...'); try { const config = getConfig(); const testFile = path.join(config.indexStoragePath, '.test_write'); // 尝试写入测试文件 fs.writeFileSync(testFile, 'test', 'utf-8'); fs.unlinkSync(testFile); console.log(` ✅ 数据目录可写: ${config.indexStoragePath}`); results.passed.push('数据目录权限'); } catch (error) { console.log(` ❌ 失败: ${error.message}`); results.failed.push('数据目录权限'); } // 测试 5: 日志目录 console.log('\n测试 5: 检查日志目录...'); try { const logDir = path.join(os.homedir(), '.acemcp', 'log'); if (fs.existsSync(logDir)) { const logFile = path.join(logDir, 'acemcp.log'); console.log(` ✅ 日志目录存在: ${logDir}`); if (fs.existsSync(logFile)) { const stats = fs.statSync(logFile); console.log(` 📝 日志文件大小: ${(stats.size / 1024).toFixed(2)} KB`); } } else { console.log(' ⚠️ 日志目录不存在(首次运行后会创建)'); } results.passed.push('日志目录检查'); } catch (error) { console.log(` ❌ 失败: ${error.message}`); results.failed.push('日志目录检查'); } // 测试总结 console.log('\n' + '='.repeat(60)); console.log('📊 测试总结'); console.log('='.repeat(60)); console.log(`✅ 通过: ${results.passed.length} 项`); results.passed.forEach(test => console.log(` - ${test}`)); if (results.failed.length > 0) { console.log(`\n❌ 失败: ${results.failed.length} 项`); results.failed.forEach(test => console.log(` - ${test}`)); } console.log('\n' + '='.repeat(60)); if (results.failed.length === 0) { console.log('🎉 所有测试通过!服务器已准备就绪。'); console.log('\n下一步:'); console.log(' 1. 检查配置: cat ~/.acemcp/settings.toml'); console.log(' 2. 设置 BASE_URL 和 TOKEN'); console.log(' 3. 启动服务器: npm start'); console.log(' 4. 或启动 Web 界面: npm start -- --web-port 8080'); return 0; } else { console.log('⚠️ 部分测试失败,请查看上面的错误信息。'); return 1; } } // 运行测试 runTests() .then(code => process.exit(code)) .catch(error => { console.error('\n❌ 测试过程中发生错误:', error); 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/yeuxuan/Ace-Mcp-Node'

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