Model Context Protocol in OCaml
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