pub(crate) mod client;
pub(crate) mod headers;
pub(crate) mod http;
pub(crate) mod jsonrpc;
pub(crate) mod manager;
pub(crate) mod oauth;
pub(crate) mod protocol;
pub(crate) mod sse;
pub(crate) mod stdio;
pub(crate) mod tool_schema;
pub(crate) use client::McpClient;
pub(crate) use protocol::{CallToolResult, ContentBlock, InitializeResult, Tool};
#[derive(Debug, thiserror::Error, Clone)]
pub(crate) enum McpError {
#[error("MCP transport error: {0}")]
Transport(String),
#[error("MCP protocol error {code}: {message}")]
Protocol { code: i64, message: String },
#[error("MCP request timed out after {seconds}s")]
Timeout { seconds: u64 },
#[error("MCP config error: {0}")]
Config(String),
}
impl McpError {
pub(crate) fn transport(error: impl std::fmt::Display) -> Self {
Self::Transport(error.to_string())
}
}
pub(crate) type McpResult<T> = Result<T, McpError>;