Model Context Protocol in OCaml
at tmp 1.5 kB view raw
1(** MCP Server module - full implementation *) 2 3(** Transport type for server *) 4type transport_type = 5 | Stdio (** Read/write to stdin/stdout *) 6 | Http (** HTTP server - to be implemented *) 7 8(** Server type *) 9type t = { 10 server: Mcp_sdk.server; 11 transport: transport_type; 12 mutable running: bool; 13} 14 15(** Create an MCP server 16 @param server The Mcp_sdk server to use 17 @param transport The transport type to use 18*) 19val create : server:Mcp_sdk.server -> transport:transport_type -> unit -> t 20 21(** Start the server 22 This function will block until the server is stopped. 23 @param server The server to start 24*) 25val start : t -> unit 26 27(** Stop the server 28 This will set the running flag to false and invoke the shutdown hook. 29 @param server The server to stop 30*) 31val stop : t -> unit 32 33(** Process a single message 34 @param server The Mcp_sdk server to use 35 @param message The JSON message to process 36 @return An optional response message 37*) 38val process_message : Mcp_sdk.server -> Yojson.Safe.t -> Mcp.JSONRPCMessage.t option 39 40(** Run stdio server implementation 41 @param mcp_server The mcp_server to run 42*) 43val run_stdio_server : t -> unit 44 45(** Read a message from stdio 46 @return An optional JSON message 47*) 48val read_stdio_message : unit -> Yojson.Safe.t option 49 50(** Run HTTP server implementation (placeholder) 51 @param mcp_server The mcp_server to run 52 @param port The port to listen on 53*) 54val run_http_server : t -> int -> unit