UNPKG

skilled-feishu-mcp

Version:

A Model Context Protocol (MCP) server that integrates with Feishu's Open Platform APIs

99 lines (84 loc) 3.19 kB
// 测试MCP服务器性能 (开发模式) import { initFeishuClient } from './dist/feishu/client.js'; import tools from './dist/mcp/tools/index.js'; // 设置测试凭据 process.env.NODE_ENV = 'development'; process.env.FEISHU_APP_ID = 'cli_test_9e11c52b0e1c500e'; process.env.FEISHU_APP_SECRET = 'test_app_secret_for_development'; console.log('='.repeat(50)); console.log('MCP服务器性能测试 (开发模式)'); console.log('='.repeat(50)); // 测量总体启动时间 console.time('TOTAL_STARTUP'); // 测量客户端初始化时间 console.log('\n1. 初始化Feishu客户端...'); console.time('FEISHU_CLIENT_INIT'); initFeishuClient(); console.timeEnd('FEISHU_CLIENT_INIT'); // 测量工具加载时间 console.log('\n2. 加载工具...'); console.time('TOOLS_LOADING'); console.log(`已加载工具数量: ${tools.toolSchemas.length}`); // 显示前三个工具的名称以确认加载成功 tools.toolSchemas.slice(0, 3).forEach((tool, i) => { console.log(` - ${tool.name}`); }); console.log(` - ... 另外 ${tools.toolSchemas.length - 3} 个工具`); console.timeEnd('TOOLS_LOADING'); // 测量SDK导入时间 console.log('\n3. 导入MCP SDK...'); console.time('SDK_IMPORT'); // 不阻塞的异步测试函数 async function measureSdkImport() { try { const mcpModule = await import('@modelcontextprotocol/sdk/server/mcp.js'); const stdioModule = await import('@modelcontextprotocol/sdk/server/stdio.js'); console.timeEnd('SDK_IMPORT'); // 测量服务器创建时间 console.log('\n4. 创建MCP服务器实例...'); console.time('SERVER_CREATION'); const McpServer = mcpModule.McpServer; const server = new McpServer({ name: "Skilled Feishu MCP Test", version: "1.0.0-test" }); console.timeEnd('SERVER_CREATION'); // 测量工具注册时间 console.log('\n5. 注册所有工具...'); console.time('TOOLS_REGISTRATION'); let registeredCount = 0; for (const toolSchema of tools.toolSchemas) { server.tool(toolSchema.name, toolSchema.description, async (params) => { return { status: "ok", message: "测试处理程序" }; }); registeredCount++; } console.log(` - 已注册 ${registeredCount} 个工具`); console.timeEnd('TOOLS_REGISTRATION'); // 测量传输层创建时间 console.log('\n6. 创建传输层...'); console.time('TRANSPORT_CREATION'); const StdioServerTransport = stdioModule.StdioServerTransport; const transport = new StdioServerTransport(); console.timeEnd('TRANSPORT_CREATION'); // 记录总体启动时间 console.timeEnd('TOTAL_STARTUP'); // 输出性能总结 console.log('\n='.repeat(50)); console.log('性能测试结果总结'); console.log('='.repeat(50)); console.log('在开发模式下测试服务器启动所有组件的时间'); // 成功完成 process.exit(0); } catch (error) { console.error('测试失败:', error); process.exit(1); } } // 开始测试 measureSdkImport(); // 设置超时以确保程序不会无限挂起 setTimeout(() => { console.error('测试超时(5秒)'); process.exit(1); }, 5000);