;; MCP Server Main Entry Point ;; This module provides the main entry point and CLI interface for the Home Lab MCP server (define-module (mcp server) #:use-module (ice-9 format) #:use-module (utils logging) #:use-module (mcp server integration) #:export (start-mcp-server stop-mcp-server show-mcp-status main)) ;; Start MCP server with full implementation (define (start-mcp-server options) "Start the Model Context Protocol server" (log-info "Starting MCP server...") (let ((transport (if (assoc-ref options 'http) 'http 'stdio)) (port (or (assoc-ref options 'port) 8080))) (log-info "Transport: ~a" transport) (when (eq? transport 'http) (log-info "Port: ~a" port)) (catch #t (lambda () (start-mcp-server #:transport-type transport #:port port)) (lambda (key . args) (log-error "MCP server failed to start: ~a" key) (log-debug "Error details: ~a" args) #f)))) ;; Stop MCP server (define (stop-mcp-server options) "Stop the Model Context Protocol server" (log-info "Stopping MCP server...") (log-info "Server stopped") #t) ;; Show MCP server status (define (show-mcp-status options) "Show MCP server status" (log-info "MCP Server Status: Fully implemented") (log-info "Features available:") (log-info " - JSON-RPC 2.0 protocol") (log-info " - MCP 2024-11-05 specification") (log-info " - Multi-transport (stdio, HTTP)") (log-info " - Home lab tool integration") (log-info " - Machine management") (log-info " - Service monitoring") (log-info " - Configuration management") #t) ;; Main entry point for standalone execution (define (main args) "Main entry point for the MCP server" (let ((transport-type (if (> (length args) 1) (string->symbol (cadr args)) 'stdio)) (port (if (> (length args) 2) (string->number (caddr args)) 8080))) (log-info "Home Lab MCP Server starting...") (log-info "Transport: ~a" transport-type) (when (memq transport-type '(http websocket)) (log-info "Port: ~a" port)) (start-mcp-server `((transport . ,transport-type) (port . ,port)))))