Skip to main content

aster/mcp/
mod.rs

1//! MCP (Model Context Protocol) Module
2//!
3//! This module provides enhanced MCP support for aster-rust, aligned with
4//!
5//! - **Connection Management**: Multi-transport support (stdio, HTTP, SSE, WebSocket),
6//!   automatic reconnection, heartbeat monitoring
7//! - **Configuration Management**: Global and project-level configs, validation,
8//!   change notifications
9//! - **Lifecycle Management**: Server process management, auto-restart, health checks
10//! - **Tool Management**: Tool discovery, caching, argument validation, batch calls
11//!
12//! # Architecture
13//!
14//! ```text
15//! ┌─────────────────────────────────────────────────────────────────┐
16//! │                        Agent / CLI                               │
17//! ├─────────────────────────────────────────────────────────────────┤
18//! │                     ExtensionManager                             │
19//! │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐  │
20//! │  │ McpConnection   │  │ McpLifecycle    │  │ McpConfig       │  │
21//! │  │ Manager         │  │ Manager         │  │ Manager         │  │
22//! │  └────────┬────────┘  └────────┬────────┘  └────────┬────────┘  │
23//! │           │                    │                    │           │
24//! │  ┌────────┴────────────────────┴────────────────────┴────────┐  │
25//! │  │                     McpToolManager                         │  │
26//! │  └────────────────────────────────────────────────────────────┘  │
27//! ├─────────────────────────────────────────────────────────────────┤
28//! │                        Transport Layer                           │
29//! │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────────────┐ │
30//! │  │  Stdio   │  │   HTTP   │  │   SSE    │  │    WebSocket     │ │
31//! │  └──────────┘  └──────────┘  └──────────┘  └──────────────────┘ │
32//! └─────────────────────────────────────────────────────────────────┘
33//! ```
34//!
35//! # Example
36//!
37//! ```rust,ignore
38//! use aster::mcp::{McpError, McpResult, TransportType, McpServerConfig};
39//!
40//! // Create a server configuration
41//! let config = McpServerConfig {
42//!     transport_type: TransportType::Stdio,
43//!     command: Some("npx".to_string()),
44//!     args: Some(vec!["-y".to_string(), "@modelcontextprotocol/server-filesystem".to_string()]),
45//!     enabled: true,
46//!     ..Default::default()
47//! };
48//! ```
49
50pub mod cancellation;
51pub mod config_manager;
52pub mod connection_manager;
53pub mod error;
54pub mod integration;
55pub mod lifecycle_manager;
56pub mod logging;
57pub mod notifications;
58pub mod resource_manager;
59pub mod roots;
60pub mod tool_manager;
61pub mod transport;
62pub mod types;
63
64#[cfg(test)]
65mod connection_manager_tests;
66
67#[cfg(test)]
68mod config_manager_tests;
69
70#[cfg(test)]
71mod lifecycle_manager_tests;
72
73#[cfg(test)]
74mod tool_manager_tests;
75
76#[cfg(test)]
77mod resource_manager_tests;
78
79#[cfg(test)]
80mod sampling_tests;
81
82#[cfg(test)]
83mod integration_tests;
84
85#[cfg(test)]
86mod error_tests;
87
88// Re-export commonly used types
89pub use config_manager::{
90    ConfigChangeCallback, ConfigEvent, ConfigManager, McpConfigFile, McpConfigManager,
91};
92pub use connection_manager::{
93    ConnectionEvent, ConnectionManager, McpConnectionManager, PendingRequestInfo,
94};
95pub use error::{McpError, McpErrorCode, McpResult, StructuredError};
96pub use integration::McpIntegration;
97pub use lifecycle_manager::{
98    LifecycleEvent, LifecycleManager, McpLifecycleManager, StartOptions, StopOptions,
99};
100pub use logging::{LogCallback, McpLogEntry, McpLogger};
101pub use resource_manager::{
102    McpResource, McpResourceManager, McpResourceTemplate, ResourceCacheEntry, ResourceContent,
103    ResourceEvent, ResourceManager,
104};
105pub use tool_manager::{
106    ArgValidationResult, CallInfo, McpTool, McpToolManager, ToolCall, ToolCallResult, ToolManager,
107    ToolResultContent,
108};
109pub use transport::{
110    BoxedTransport, HttpTransport, McpErrorData, McpMessage, McpNotification, McpRequest,
111    McpResponse, SharedTransport, StdioTransport, Transport, TransportConfig, TransportEvent,
112    TransportFactory, TransportState, WebSocketTransport,
113};
114pub use types::{
115    ConfigManagerOptions, ConfigScope, ConnectionOptions, ConnectionStatus, HealthCheckResult,
116    LifecycleOptions, McpConnection, McpLogLevel, McpServerConfig, McpServerInfo, ServerProcess,
117    ServerState, ServerValidationResult, TransportType, ValidationResult,
118};
119
120// Re-export JSON types from rmcp
121pub use types::JsonObject;
122
123// Re-export cancellation types
124pub use cancellation::{
125    CancellableRequest, CancellationEvent, CancellationReason, CancellationResult,
126    CancellationStats, CancellationToken, CancelledNotification, McpCancellationManager,
127    RequestDuration,
128};
129
130// Re-export notification types
131pub use notifications::{
132    create_progress_params, McpNotificationManager, Notification, NotificationEvent,
133    NotificationFilter, NotificationStats, NotificationType, ProgressNotification, ProgressState,
134};
135
136// Re-export roots types
137pub use roots::{
138    create_root_from_path, get_default_roots_config, McpRootsManager, Root, RootEvent, RootInfo,
139    RootPermissions, RootsConfig, RootsStats,
140};