Skip to main content
Glama
masx200

Persistent Terminal MCP Server

by masx200
test-web-ui.js3.07 kB
#!/usr/bin/env tsx /** * Test script for Web UI feature * * This script tests the open_terminal_ui tool by: * 1. Creating a terminal manager * 2. Creating some test terminals * 3. Starting the Web UI * 4. Keeping the server running for manual testing */ import { TerminalManager } from "../terminal-manager.js"; import { WebUIManager } from "../web-ui-manager.js"; async function main() { console.log("🧪 Testing Web UI Feature...\n"); // Create terminal manager console.log("1️⃣ Creating terminal manager..."); const terminalManager = new TerminalManager({ maxBufferSize: 10000, sessionTimeout: 86400000, }); console.log("✅ Terminal manager created\n"); // Create some test terminals console.log("2️⃣ Creating test terminals..."); const terminal1 = await terminalManager.createTerminal({ shell: "/bin/bash", cwd: process.cwd(), }); console.log(`✅ Terminal 1 created: ${terminal1}`); const terminal2 = await terminalManager.createTerminal({ shell: "/bin/bash", cwd: process.cwd(), }); console.log(`✅ Terminal 2 created: ${terminal2}`); // Send some commands to make them interesting await terminalManager.writeToTerminal({ terminalId: terminal1, input: 'echo "Hello from Terminal 1"', }); await terminalManager.writeToTerminal({ terminalId: terminal2, input: 'echo "Hello from Terminal 2"', }); // Wait a bit for output await new Promise((resolve) => setTimeout(resolve, 500)); console.log("\n3️⃣ Starting Web UI..."); // Create and start Web UI const webUiManager = new WebUIManager(); try { const result = await webUiManager.start({ port: 3002, autoOpen: true, terminalManager, }); console.log("✅ Web UI started successfully!\n"); console.log("📊 Details:"); console.log(` URL: ${result.url}`); console.log(` Port: ${result.port}`); console.log(` Mode: ${result.mode}`); console.log(` Browser opened: ${result.autoOpened ? "Yes" : "No"}\n`); console.log("🌐 Web UI is now running!"); console.log(" Open your browser to: " + result.url); console.log("\n📝 You can:"); console.log(" - View the terminal list"); console.log(" - Click on a terminal to see its output"); console.log(" - Create new terminals"); console.log(" - Send commands to terminals"); console.log(" - Kill terminals"); console.log("\n⏸️ Press Ctrl+C to stop the server\n"); // Keep the process running process.on("SIGINT", async () => { console.log("\n\n🛑 Shutting down..."); await webUiManager.stop(); await terminalManager.shutdown(); console.log("✅ Cleanup complete"); process.exit(0); }); // Keep alive await new Promise(() => {}); } catch (error) { console.error("❌ Error starting Web UI:", error); await terminalManager.shutdown(); process.exit(1); } } main().catch((error) => { console.error("❌ Fatal error:", error); process.exit(1); }); //# sourceMappingURL=test-web-ui.js.map

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/masx200/persistent-terminal-mcp'

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