(** MCP Server module - full implementation *) (** Transport type for server *) type transport_type = | Stdio (** Read/write to stdin/stdout *) | Http (** HTTP server - to be implemented *) (** Server type *) type t = { server: Mcp_sdk.server; transport: transport_type; mutable running: bool; } (** Create an MCP server @param server The Mcp_sdk server to use @param transport The transport type to use *) val create : server:Mcp_sdk.server -> transport:transport_type -> unit -> t (** Start the server This function will block until the server is stopped. @param server The server to start *) val start : t -> unit (** Stop the server This will set the running flag to false and invoke the shutdown hook. @param server The server to stop *) val stop : t -> unit (** Process a single message @param server The Mcp_sdk server to use @param message The JSON message to process @return An optional response message *) val process_message : Mcp_sdk.server -> Yojson.Safe.t -> Mcp.JSONRPCMessage.t option (** Run stdio server implementation @param mcp_server The mcp_server to run *) val run_stdio_server : t -> unit (** Read a message from stdio @return An optional JSON message *) val read_stdio_message : unit -> Yojson.Safe.t option (** Run HTTP server implementation (placeholder) @param mcp_server The mcp_server to run @param port The port to listen on *) val run_http_server : t -> int -> unit