Skip to main content

tenx_mcp/
lib.rs

1pub mod client;
2pub mod codec;
3pub mod error;
4pub mod retry;
5pub mod schema;
6pub mod server;
7pub mod transport;
8
9// Re-export commonly used types
10pub 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}