pub use mcp_sse_proxy::SseHandler as ProxyHandler;
pub use mcp_sse_proxy::SseServerHandler;
pub use mcp_streamable_proxy::ProxyHandler as StreamProxyHandler;
pub use mcp_common::ToolFilter;
pub use mcp_sse_proxy::{McpClientConfig, SseClientConnection};
pub use mcp_streamable_proxy::StreamClientConnection;
pub use mcp_sse_proxy::server_builder::{BackendConfig as SseBackendConfig, SseServerBuilder};
pub use mcp_streamable_proxy::server_builder::{
BackendConfig as StreamBackendConfig, StreamServerBuilder,
};
#[derive(Clone, Debug)]
pub enum McpHandler {
Sse(Box<SseServerHandler>),
Stream(Box<StreamProxyHandler>),
}
impl McpHandler {
pub async fn is_mcp_server_ready(&self) -> bool {
match self {
McpHandler::Sse(h) => h.is_mcp_server_ready().await,
McpHandler::Stream(h) => h.is_mcp_server_ready().await,
}
}
pub async fn is_terminated_async(&self) -> bool {
match self {
McpHandler::Sse(h) => h.is_terminated_async().await,
McpHandler::Stream(h) => h.is_terminated_async().await,
}
}
}
impl From<ProxyHandler> for McpHandler {
fn from(handler: ProxyHandler) -> Self {
McpHandler::Sse(Box::new(SseServerHandler::Sse(handler)))
}
}
impl From<SseServerHandler> for McpHandler {
fn from(handler: SseServerHandler) -> Self {
McpHandler::Sse(Box::new(handler))
}
}
impl From<StreamProxyHandler> for McpHandler {
fn from(handler: StreamProxyHandler) -> Self {
McpHandler::Stream(Box::new(handler))
}
}