mcp_stdio_proxy/proxy/
mod.rs1pub use mcp_sse_proxy::SseHandler as ProxyHandler;
10
11pub use mcp_sse_proxy::SseServerHandler;
13
14pub use mcp_streamable_proxy::ProxyHandler as StreamProxyHandler;
17
18pub use mcp_common::ToolFilter;
20
21pub use mcp_sse_proxy::{McpClientConfig, SseClientConnection};
23pub use mcp_streamable_proxy::StreamClientConnection;
24
25pub use mcp_sse_proxy::server_builder::{BackendConfig as SseBackendConfig, SseServerBuilder};
27pub use mcp_streamable_proxy::server_builder::{
28 BackendConfig as StreamBackendConfig, StreamServerBuilder,
29};
30
31#[derive(Clone, Debug)]
36pub enum McpHandler {
37 Sse(Box<SseServerHandler>),
40 Stream(Box<StreamProxyHandler>),
42}
43
44impl McpHandler {
45 pub async fn is_mcp_server_ready(&self) -> bool {
47 match self {
48 McpHandler::Sse(h) => h.is_mcp_server_ready().await,
49 McpHandler::Stream(h) => h.is_mcp_server_ready().await,
50 }
51 }
52
53 pub async fn is_terminated_async(&self) -> bool {
55 match self {
56 McpHandler::Sse(h) => h.is_terminated_async().await,
57 McpHandler::Stream(h) => h.is_terminated_async().await,
58 }
59 }
60}
61
62impl From<ProxyHandler> for McpHandler {
63 fn from(handler: ProxyHandler) -> Self {
64 McpHandler::Sse(Box::new(SseServerHandler::Sse(handler)))
65 }
66}
67
68impl From<SseServerHandler> for McpHandler {
69 fn from(handler: SseServerHandler) -> Self {
70 McpHandler::Sse(Box::new(handler))
71 }
72}
73
74impl From<StreamProxyHandler> for McpHandler {
75 fn from(handler: StreamProxyHandler) -> Self {
76 McpHandler::Stream(Box::new(handler))
77 }
78}