mcp_host/
lib.rs

1//! mcp-host: Production-grade MCP server implementation
2//!
3//! This crate provides a comprehensive Model Context Protocol (MCP) server
4//! implementation with sophisticated features like middleware chains, task management,
5//! progress tracking, and more.
6
7pub mod protocol;
8pub mod content;
9pub mod server;
10pub mod managers;
11pub mod registry;
12pub mod transport;
13pub mod logging;
14pub mod utils;
15
16// Re-export commonly used types
17pub mod prelude {
18    // Protocol types
19    pub use crate::protocol::types::{JsonRpcRequest, JsonRpcResponse, JsonRpcError};
20    pub use crate::protocol::capabilities::{ServerCapabilities, ClientCapabilities};
21
22    // Content types and builders
23    pub use crate::content::types::{Content, TextContent, ImageContent, AudioContent, ResourceLink};
24    pub use crate::content::resource::ResourceContent;
25    pub use crate::content::annotations::Annotations;
26    pub use crate::content::builder::{text, image, audio, resource};
27
28    // Server types
29    pub use crate::server::core::Server;
30    pub use crate::server::builder::{ServerBuilder, server};
31    pub use crate::server::session::Session;
32    pub use crate::server::visibility::{ExecutionContext, VisibilityContext, Environment, SimpleEnvironment};
33    pub use crate::server::profile::SessionProfile;
34    pub use crate::server::multiplexer::{
35        ClientRequester, RequestMultiplexer, MultiplexerError, JsonRpcClientRequest,
36        Root, ListRootsResult,
37        SamplingMessage, SamplingContent, ModelPreferences, ModelHint,
38        CreateMessageParams, CreateMessageResult,
39    };
40
41    // Registry types
42    pub use crate::registry::tools::{Tool, ToolRegistry, ToolInfo, ToolError, ToolBreakerConfig, ToolHelpers};
43    pub use crate::registry::resources::{Resource, ResourceTemplate, ResourceManager, ResourceInfo, ResourceTemplateInfo, ResourceError, ResourceRetryConfig};
44    pub use crate::registry::prompts::{Prompt, PromptManager, PromptInfo, PromptArgument, PromptError, GetPromptResult};
45
46    // Prompt message types
47    pub use crate::content::prompt::{PromptMessage, PromptRole, PromptContent};
48
49    // Middleware and resilience types
50    pub use crate::server::middleware::{RateLimiter, RateLimiterConfig};
51
52    // Logging types
53    pub use crate::logging::{LogLevel, McpLogger, LoggerConfig, send_log_notification};
54
55    // Progress tracking
56    pub use crate::managers::progress::{ProgressTracker, ProgressToken};
57
58    // Utility functions
59    pub use crate::utils::{collect_files, byte_to_line_col, is_safe_path, base64_encode, base64_decode};
60
61    // Transport types
62    pub use crate::transport::traits::{Transport, TransportError, JsonRpcNotification, IncomingMessage};
63
64    #[cfg(feature = "stdio")]
65    pub use crate::transport::stdio::StdioTransport;
66
67    #[cfg(feature = "http")]
68    pub use crate::transport::http::{HttpTransport, HttpTransportConfig, HttpTransportError};
69}