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
JavaScript
// 测试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);