Skip to main content
Glama
main.swiftβ€’1.63 kB
import Foundation import TestLib import ArgumentParser @main struct LongServer: AsyncParsableCommand { static let configuration = CommandConfiguration( commandName: "long-server", abstract: "A long-running server that runs indefinitely until stopped" ) @Option(name: .shortAndLong, help: "Port to listen on (default: 8080)") var port: Int = 8080 @Flag(name: .shortAndLong, help: "Enable verbose logging") var verbose: Bool = false @Option(name: .shortAndLong, help: "Auto-shutdown after N seconds (0 = run forever)") var autoShutdown: Int = 0 func run() async throws { let taskManager = TaskManager() if verbose { print("πŸš€ Starting long-running server...") print("🌐 Port: \(port)") if autoShutdown > 0 { print("⏰ Auto-shutdown: \(autoShutdown) seconds") } else { print("♾️ Running indefinitely (use SIGTERM to stop)") } } // Set up signal handling for graceful shutdown let signalSource = DispatchSource.makeSignalSource(signal: SIGTERM, queue: .main) signalSource.setEventHandler { if verbose { print("\nπŸ›‘ Received SIGTERM, shutting down gracefully...") } taskManager.stopServer() } signalSource.resume() signal(SIGTERM, SIG_IGN) await taskManager.startLongRunningServer( port: port, verbose: verbose, autoShutdown: autoShutdown ) } }

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/SampsonKY/XcodeBuildMCP'

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