1pub mod client;
2pub mod codec;
3pub mod error;
4pub mod retry;
5pub mod schema;
6pub mod server;
7pub mod transport;
8
9pub use client::MCPClient;
11pub use error::{MCPError, Result};
12pub use schema::{
13 ClientCapabilities, Content, Implementation, JSONRPCNotification, ResourceContents,
14 ToolsCapability,
15};
16pub use server::{MCPServer, PromptHandler, ResourceHandler, ToolHandler};
17pub use transport::{StdioTransport, TcpServerTransport, TcpTransport};
18
19#[cfg(test)]
20mod tests {
21 use super::schema::*;
22
23 #[test]
24 fn test_jsonrpc_request_serialization() {
25 let request = JSONRPCRequest {
26 jsonrpc: JSONRPC_VERSION.to_string(),
27 id: RequestId::Number(1),
28 request: Request {
29 method: "initialize".to_string(),
30 params: None,
31 },
32 };
33
34 let json = serde_json::to_string(&request).unwrap();
35 let parsed: JSONRPCRequest = serde_json::from_str(&json).unwrap();
36
37 assert_eq!(parsed.jsonrpc, JSONRPC_VERSION);
38 assert_eq!(parsed.id, RequestId::Number(1));
39 assert_eq!(parsed.request.method, "initialize");
40 }
41
42 #[test]
43 fn test_role_serialization() {
44 let role = Role::User;
45 let json = serde_json::to_string(&role).unwrap();
46 assert_eq!(json, "\"user\"");
47
48 let role = Role::Assistant;
49 let json = serde_json::to_string(&role).unwrap();
50 assert_eq!(json, "\"assistant\"");
51 }
52}