Skip to main content
Glama
DaxianLee

Cocos Creator MCP Server Plugin

by DaxianLee
prefab-tools-test.js26.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrefabToolsTest = void 0; const prefab_tools_1 = require("../tools/prefab-tools"); // 预制体工具测试 class PrefabToolsTest { constructor() { this.prefabTools = new prefab_tools_1.PrefabTools(); } async runAllTests() { console.log('开始预制体工具测试...'); try { // 测试1: 获取工具列表 await this.testGetTools(); // 测试2: 获取预制体列表 await this.testGetPrefabList(); // 测试3: 测试预制体创建(模拟) await this.testCreatePrefab(); // 测试3.5: 测试预制体实例化(模拟) await this.testInstantiatePrefab(); // 测试4: 测试预制体验证 await this.testValidatePrefab(); console.log('所有测试完成!'); } catch (error) { console.error('测试过程中发生错误:', error); } } async testGetTools() { console.log('测试1: 获取工具列表'); const tools = this.prefabTools.getTools(); console.log(`找到 ${tools.length} 个工具:`); tools.forEach(tool => { console.log(` - ${tool.name}: ${tool.description}`); }); console.log('测试1完成\n'); } async testGetPrefabList() { var _a; console.log('测试2: 获取预制体列表'); try { const result = await this.prefabTools.execute('get_prefab_list', { folder: 'db://assets' }); if (result.success) { console.log(`找到 ${((_a = result.data) === null || _a === void 0 ? void 0 : _a.length) || 0} 个预制体`); if (result.data && result.data.length > 0) { result.data.slice(0, 3).forEach((prefab) => { console.log(` - ${prefab.name}: ${prefab.path}`); }); } } else { console.log('获取预制体列表失败:', result.error); } } catch (error) { console.log('获取预制体列表时发生错误:', error); } console.log('测试2完成\n'); } async testCreatePrefab() { console.log('测试3: 测试预制体创建(模拟)'); try { // 模拟创建预制体 const mockArgs = { nodeUuid: 'mock-node-uuid', savePath: 'db://assets/test', prefabName: 'TestPrefab' }; const result = await this.prefabTools.execute('create_prefab', mockArgs); console.log('创建预制体结果:', result); } catch (error) { console.log('创建预制体时发生错误:', error); } console.log('测试3完成\n'); } async testInstantiatePrefab() { console.log('测试3.5: 测试预制体实例化(模拟)'); try { // 模拟实例化预制体 const mockArgs = { prefabPath: 'db://assets/prefabs/TestPrefab.prefab', parentUuid: 'canvas-uuid', position: { x: 100, y: 200, z: 0 } }; const result = await this.prefabTools.execute('instantiate_prefab', mockArgs); console.log('实例化预制体结果:', result); // 测试API参数构建 this.testCreateNodeAPIParams(); } catch (error) { console.log('实例化预制体时发生错误:', error); } console.log('测试3.5完成\n'); } testCreateNodeAPIParams() { console.log('测试 create-node API 参数构建...'); // 模拟 assetUuid const assetUuid = 'mock-prefab-uuid'; // 测试基本参数 const basicOptions = { assetUuid: assetUuid, name: 'TestPrefabInstance' }; console.log('基本参数:', basicOptions); // 测试带父节点的参数 const withParentOptions = Object.assign(Object.assign({}, basicOptions), { parent: 'parent-node-uuid' }); console.log('带父节点参数:', withParentOptions); // 测试带位置的参数 const withPositionOptions = Object.assign(Object.assign({}, basicOptions), { dump: { position: { x: 100, y: 200, z: 0 } } }); console.log('带位置参数:', withPositionOptions); // 测试完整参数 const fullOptions = { assetUuid: assetUuid, name: 'TestPrefabInstance', parent: 'parent-node-uuid', dump: { position: { x: 100, y: 200, z: 0 } }, keepWorldTransform: false, unlinkPrefab: false }; console.log('完整参数:', fullOptions); } async testValidatePrefab() { console.log('测试4: 测试预制体验证'); try { // 测试验证一个不存在的预制体 const result = await this.prefabTools.execute('validate_prefab', { prefabPath: 'db://assets/nonexistent.prefab' }); console.log('验证预制体结果:', result); } catch (error) { console.log('验证预制体时发生错误:', error); } console.log('测试4完成\n'); } // 测试预制体数据结构生成 testPrefabDataGeneration() { console.log('测试预制体数据结构生成...'); const mockNodeData = { name: 'TestNode', position: { x: 0, y: 0, z: 0 }, scale: { x: 1, y: 1, z: 1 }, active: true, children: [], components: [ { type: 'cc.UITransform', enabled: true, properties: { _contentSize: { width: 100, height: 100 }, _anchorPoint: { x: 0.5, y: 0.5 } } } ] }; const prefabUuid = this.prefabTools['generateUUID'](); const prefabData = this.prefabTools['createPrefabData'](mockNodeData, 'TestPrefab', prefabUuid); console.log('生成的预制体数据结构:'); console.log(JSON.stringify(prefabData, null, 2)); // 验证数据结构 const validationResult = this.prefabTools['validatePrefabFormat'](prefabData); console.log('验证结果:', validationResult); console.log('预制体数据结构生成测试完成\n'); } // 测试UUID生成 testUUIDGeneration() { console.log('测试UUID生成...'); const uuids = []; for (let i = 0; i < 5; i++) { const uuid = this.prefabTools['generateUUID'](); uuids.push(uuid); console.log(`UUID ${i + 1}: ${uuid}`); } // 检查UUID格式 const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; const validUuids = uuids.filter(uuid => uuidPattern.test(uuid)); console.log(`UUID格式验证: ${validUuids.length}/${uuids.length} 个有效`); console.log('UUID生成测试完成\n'); } } exports.PrefabToolsTest = PrefabToolsTest; // 如果直接运行此文件 if (typeof module !== 'undefined' && module.exports) { const test = new PrefabToolsTest(); test.runAllTests(); test.testPrefabDataGeneration(); test.testUUIDGeneration(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmFiLXRvb2xzLXRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvdGVzdC9wcmVmYWItdG9vbHMtdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3REFBb0Q7QUFFcEQsVUFBVTtBQUNWLE1BQWEsZUFBZTtJQUd4QjtRQUNJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSwwQkFBVyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUM7WUFDRCxjQUFjO1lBQ2QsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFMUIsZUFBZTtZQUNmLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFL0IsbUJBQW1CO1lBQ25CLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsc0JBQXNCO1lBQ3RCLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFFbkMsZUFBZTtZQUNmLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVk7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQztRQUN2QyxLQUFLLENBQUMs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LEVBQUUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELFdBQVc7UUFDWCxNQUFNLFdBQVcsR0FBRyxpRUFBaUUsQ0FBQztRQUN0RixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWhFLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxVQUFVLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNKO0FBbk5ELDBDQW1OQztBQUVELFlBQVk7QUFDWixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNuQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDaEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByZWZhYlRvb2xzIH0gZnJvbSAnLi4vdG9vbHMvcHJlZmFiLXRvb2xzJztcblxuLy8g6aKE5Yi25L2T5bel5YW35rWL6K+VXG5leHBvcnQgY2xhc3MgUHJlZmFiVG9vbHNUZXN0IHtcbiAgICBwcml2YXRlIHByZWZhYlRvb2xzOiBQcmVmYWJUb29scztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnByZWZhYlRvb2xzID0gbmV3IFByZWZhYlRvb2xzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuQWxsVGVzdHMoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCflvIDlp4vpooTliLbkvZPlt6XlhbfmtYvor5UuLi4nKTtcbiAgICAgICAgXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyDmtYvor5UxOiDojrflj5blt6XlhbfliJfooahcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudGVzdEdldFRvb2xzKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIOa1i+ivlTI6IOiOt+WPlumihOWItuS9k+WIl+ihqFxuICAgICAgICAgICAgYXdhaXQgdGhpcy50ZXN0R2V0UHJlZmFiTGlzdCgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDmtYvor5UzOiDmtYvor5XpooTliLbkvZPliJvlu7rvvIjmqKHmi5/vvIlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudGVzdENyZWF0ZVByZWZhYigpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDmtYvor5UzLjU6IOa1i+ivlemihOWItuS9k+WunuS+i+WMlu+8iOaooeaLn++8iVxuICAgICAgICAgICAgYXdhaXQgdGhpcy50ZXN0SW5zdGFudGlhdGVQcmVmYWIoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8g5rWL6K+VNDog5rWL6K+V6aKE5Yi25L2T6aqM6K+BXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRlc3RWYWxpZGF0ZVByZWZhYigpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5omA5pyJ5rWL6K+V5a6M5oiQ77yBJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCfmtYvor5Xov4fnqIvkuK3lj5HnlJ/plJnor686JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB0ZXN0R2V0VG9vbHMoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfmtYvor5UxOiDojrflj5blt6XlhbfliJfooagnKTtcbiAgICAgICAgY29uc3QgdG9vbHMgPSB0aGlzLnByZWZhYlRvb2xzLmdldFRvb2xzKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGDmib7liLAgJHt0b29scy5sZW5ndGh9IOS4quW3peWFtzpgKTtcbiAgICAgICAgdG9vbHMuZm9yRWFjaCh0b29sID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgIC0gJHt0b29sLm5hbWV9OiAke3Rvb2wuZGVzY3JpcHRpb259YCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygn5rWL6K+VMeWujOaIkFxcbicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdGVzdEdldFByZWZhYkxpc3QoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfmtYvor5UyOiDojrflj5bpooTliLbkvZPliJfooagnKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucHJlZmFiVG9vbHMuZXhlY3V0ZSgnZ2V0X3ByZWZhYl9saXN0JywgeyBmb2xkZXI6ICdkYjovL2Fzc2V0cycgfSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhg5om+5YiwICR7cmVzdWx0LmRhdGE/Lmxlbmd0aCB8fCAwfSDkuKrpooTliLbkvZNgKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmRhdGEgJiYgcmVzdWx0LmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuZGF0YS5zbGljZSgwLCAzKS5mb3JFYWNoKChwcmVmYWI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYCAgLSAke3ByZWZhYi5uYW1lfTogJHtwcmVmYWIucGF0aH1gKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn6I635Y+W6aKE5Yi25L2T5YiX6KGo5aSx6LSlOicsIHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn6I635Y+W6aKE5Yi25L2T5YiX6KGo5pe25Y+R55Sf6ZSZ6K+vOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygn5rWL6K+VMuWujOaIkFxcbicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdGVzdENyZWF0ZVByZWZhYigpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ+a1i+ivlTM6IOa1i+ivlemihOWItuS9k+WIm+W7uu+8iOaooeaLn++8iScpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8g5qih5ouf5Yib5bu66aKE5Yi25L2TXG4gICAgICAgICAgICBjb25zdCBtb2NrQXJncyA9IHtcbiAgICAgICAgICAgICAgICBub2RlVXVpZDogJ21vY2stbm9kZS11dWlkJyxcbiAgICAgICAgICAgICAgICBzYXZlUGF0aDogJ2RiOi8vYXNzZXRzL3Rlc3QnLFxuICAgICAgICAgICAgICAgIHByZWZhYk5hbWU6ICdUZXN0UHJlZmFiJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wcmVmYWJUb29scy5leGVjdXRlKCdjcmVhdGVfcHJlZmFiJywgbW9ja0FyZ3MpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+WIm+W7uumihOWItuS9k+e7k+aenDonLCByZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+WIm+W7uumihOWItuS9k+aXtuWPkeeUn+mUmeivrzonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coJ+a1i+ivlTPlrozmiJBcXG4nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHRlc3RJbnN0YW50aWF0ZVByZWZhYigpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ+a1i+ivlTMuNTog5rWL6K+V6aKE5Yi25L2T5a6e5L6L5YyW77yI5qih5ouf77yJJyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyDmqKHmi5/lrp7kvovljJbpooTliLbkvZNcbiAgICAgICAgICAgIGNvbnN0IG1vY2tBcmdzID0ge1xuICAgICAgICAgICAgICAgIHByZWZhYlBhdGg6ICdkYjovL2Fzc2V0cy9wcmVmYWJzL1Rlc3RQcmVmYWIucHJlZmFiJyxcbiAgICAgICAgICAgICAgICBwYXJlbnRVdWlkOiAnY2FudmFzLXV1aWQnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7IHg6IDEwMCwgeTogMjAwLCB6OiAwIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucHJlZmFiVG9vbHMuZXhlY3V0ZSgnaW5zdGFudGlhdGVfcHJlZmFiJywgbW9ja0FyZ3MpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+WunuS+i+WMlumihOWItuS9k+e7k+aenDonLCByZXN1bHQpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDmtYvor5VBUEnlj4LmlbDmnoTlu7pcbiAgICAgICAgICAgIHRoaXMudGVzdENyZWF0ZU5vZGVBUElQYXJhbXMoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCflrp7kvovljJbpooTliLbkvZPml7blj5HnlJ/plJnor686JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCfmtYvor5UzLjXlrozmiJBcXG4nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRlc3RDcmVhdGVOb2RlQVBJUGFyYW1zKCkge1xuICAgICAgICBjb25zb2xlLmxvZygn5rWL6K+VIGNyZWF0ZS1ub2RlIEFQSSDlj4LmlbDmnoTlu7ouLi4nKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOaooeaLnyBhc3NldFV1aWRcbiAgICAgICAgY29uc3QgYXNzZXRVdWlkID0gJ21vY2stcHJlZmFiLXV1aWQnO1xuICAgICAgICBcbiAgICAgICAgLy8g5rWL6K+V5Z+65pys5Y+C5pWwXG4gICAgICAgIGNvbnN0IGJhc2ljT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGFzc2V0VXVpZDogYXNzZXRVdWlkLFxuICAgICAgICAgICAgbmFtZTogJ1Rlc3RQcmVmYWJJbnN0YW5jZSdcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2coJ+WfuuacrOWPguaVsDonLCBiYXNpY09wdGlvbnMpO1xuICAgICAgICBcbiAgICAgICAgLy8g5rWL6K+V5bim54i26IqC54K555qE5Y+C5pWwXG4gICAgICAgIGNvbnN0IHdpdGhQYXJlbnRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4uYmFzaWNPcHRpb25zLFxuICAgICAgICAgICAgcGFyZW50OiAncGFyZW50LW5vZGUtdXVpZCdcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2coJ+W4pueItuiKgueCueWPguaVsDonLCB3aXRoUGFyZW50T3B0aW9ucyk7XG4gICAgICAgIFxuICAgICAgICAvLyDmtYvor5XluKbkvY3nva7nmoTlj4LmlbBcbiAgICAgICAgY29uc3Qgd2l0aFBvc2l0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmJhc2ljT3B0aW9ucyxcbiAgICAgICAgICAgIGR1bXA6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogeyB4OiAxMDAsIHk6IDIwMCwgejogMCB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnNvbGUubG9nKCfluKbkvY3nva7lj4LmlbA6Jywgd2l0aFBvc2l0aW9uT3B0aW9ucyk7XG4gICAgICAgIFxuICAgICAgICAvLyDmtYvor5XlrozmlbTlj4LmlbBcbiAgICAgICAgY29uc3QgZnVsbE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBhc3NldFV1aWQ6IGFzc2V0VXVpZCxcbiAgICAgICAgICAgIG5hbWU6ICdUZXN0UHJlZmFiSW5zdGFuY2UnLFxuICAgICAgICAgICAgcGFyZW50OiAncGFyZW50LW5vZGUtdXVpZCcsXG4gICAgICAgICAgICBkdW1wOiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHsgeDogMTAwLCB5OiAyMDAsIHo6IDAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtlZXBXb3JsZFRyYW5zZm9ybTogZmFsc2UsXG4gICAgICAgICAgICB1bmxpbmtQcmVmYWI6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnNvbGUubG9nKCflrozmlbTlj4LmlbA6JywgZnVsbE9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdGVzdFZhbGlkYXRlUHJlZmFiKCkge1xuICAgICAgICBjb25zb2xlLmxvZygn5rWL6K+VNDog5rWL6K+V6aKE5Yi25L2T6aqM6K+BJyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyDmtYvor5Xpqozor4HkuIDkuKrkuI3lrZjlnKjnmoTpooTliLbkvZNcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucHJlZmFiVG9vbHMuZXhlY3V0ZSgndmFsaWRhdGVfcHJlZmFiJywgeyBcbiAgICAgICAgICAgICAgICBwcmVmYWJQYXRoOiAnZGI6Ly9hc3NldHMvbm9uZXhpc3RlbnQucHJlZmFiJyBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+mqjOivgemihOWItuS9k+e7k+aenDonLCByZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+mqjOivgemihOWItuS9k+aXtuWPkeeUn+mUmeivrzonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coJ+a1i+ivlTTlrozmiJBcXG4nKTtcbiAgICB9XG5cbiAgICAvLyDmtYvor5XpooTliLbkvZPmlbDmja7nu5PmnoTnlJ/miJBcbiAgICB0ZXN0UHJlZmFiRGF0YUdlbmVyYXRpb24oKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfmtYvor5XpooTliLbkvZPmlbDmja7nu5PmnoTnlJ/miJAuLi4nKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IG1vY2tOb2RlRGF0YSA9IHtcbiAgICAgICAgICAgIG5hbWU6ICdUZXN0Tm9kZScsXG4gICAgICAgICAgICBwb3NpdGlvbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0sXG4gICAgICAgICAgICBzY2FsZTogeyB4OiAxLCB5OiAxLCB6OiAxIH0sXG4gICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBjb21wb25lbnRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY2MuVUlUcmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfY29udGVudFNpemU6IHsgd2lkdGg6IDEwMCwgaGVpZ2h0OiAxMDAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hbmNob3JQb2ludDogeyB4OiAwLjUsIHk6IDAuNSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcHJlZmFiVXVpZCA9IHRoaXMucHJlZmFiVG9vbHNbJ2dlbmVyYXRlVVVJRCddKCk7XG4gICAgICAgIGNvbnN0IHByZWZhYkRhdGEgPSB0aGlzLnByZWZhYlRvb2xzWydjcmVhdGVQcmVmYWJEYXRhJ10obW9ja05vZGVEYXRhLCAnVGVzdFByZWZhYicsIHByZWZhYlV1aWQpO1xuICAgICAgICBcbiAgICAgICAgY29uc29sZS5sb2coJ+eUn+aIkOeahOmihOWItuS9k+aVsOaNrue7k+aehDonKTtcbiAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocHJlZmFiRGF0YSwgbnVsbCwgMikpO1xuICAgICAgICBcbiAgICAgICAgLy8g6aqM6K+B5pWw5o2u57uT5p6EXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB0aGlzLnByZWZhYlRvb2xzWyd2YWxpZGF0ZVByZWZhYkZvcm1hdCddKHByZWZhYkRhdGEpO1xuICAgICAgICBjb25zb2xlLmxvZygn6aqM6K+B57uT5p6cOicsIHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICBcbiAgICAgICAgY29uc29sZS5sb2coJ+mihOWItuS9k+aVsOaNrue7k+aehOeUn+aIkOa1i+ivleWujOaIkFxcbicpO1xuICAgIH1cblxuICAgIC8vIOa1i+ivlVVVSUTnlJ/miJBcbiAgICB0ZXN0VVVJREdlbmVyYXRpb24oKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfmtYvor5VVVUlE55Sf5oiQLi4uJyk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB1dWlkcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdXVpZCA9IHRoaXMucHJlZmFiVG9vbHNbJ2dlbmVyYXRlVVVJRCddKCk7XG4gICAgICAgICAgICB1dWlkcy5wdXNoKHV1aWQpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYFVVSUQgJHtpICsgMX06ICR7dXVpZH1gKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8g5qOA5p+lVVVJROagvOW8j1xuICAgICAgICBjb25zdCB1dWlkUGF0dGVybiA9IC9eWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JC9pO1xuICAgICAgICBjb25zdCB2YWxpZFV1aWRzID0gdXVpZHMuZmlsdGVyKHV1aWQgPT4gdXVpZFBhdHRlcm4udGVzdCh1dWlkKSk7XG4gICAgICAgIFxuICAgICAgICBjb25zb2xlLmxvZyhgVVVJROagvOW8j+mqjOivgTogJHt2YWxpZFV1aWRzLmxlbmd0aH0vJHt1dWlkcy5sZW5ndGh9IOS4quacieaViGApO1xuICAgICAgICBjb25zb2xlLmxvZygnVVVJROeUn+aIkOa1i+ivleWujOaIkFxcbicpO1xuICAgIH1cbn1cblxuLy8g5aaC5p6c55u05o6l6L+Q6KGM5q2k5paH5Lu2XG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICBjb25zdCB0ZXN0ID0gbmV3IFByZWZhYlRvb2xzVGVzdCgpO1xuICAgIHRlc3QucnVuQWxsVGVzdHMoKTtcbiAgICB0ZXN0LnRlc3RQcmVmYWJEYXRhR2VuZXJhdGlvbigpO1xuICAgIHRlc3QudGVzdFVVSURHZW5lcmF0aW9uKCk7XG59ICJdfQ==

Latest Blog Posts

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/DaxianLee/cocos-mcp-server'

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