Skip to main content

Module mcp

Module mcp 

Source
Expand description

MCP (Model Context Protocol) Module

This module provides enhanced MCP support for aster-rust, aligned with

  • Connection Management: Multi-transport support (stdio, HTTP, SSE, WebSocket), automatic reconnection, heartbeat monitoring
  • Configuration Management: Global and project-level configs, validation, change notifications
  • Lifecycle Management: Server process management, auto-restart, health checks
  • Tool Management: Tool discovery, caching, argument validation, batch calls

§Architecture

┌─────────────────────────────────────────────────────────────────┐
│                        Agent / CLI                               │
├─────────────────────────────────────────────────────────────────┤
│                     ExtensionManager                             │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐  │
│  │ McpConnection   │  │ McpLifecycle    │  │ McpConfig       │  │
│  │ Manager         │  │ Manager         │  │ Manager         │  │
│  └────────┬────────┘  └────────┬────────┘  └────────┬────────┘  │
│           │                    │                    │           │
│  ┌────────┴────────────────────┴────────────────────┴────────┐  │
│  │                     McpToolManager                         │  │
│  └────────────────────────────────────────────────────────────┘  │
├─────────────────────────────────────────────────────────────────┤
│                        Transport Layer                           │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────────────┐ │
│  │  Stdio   │  │   HTTP   │  │   SSE    │  │    WebSocket     │ │
│  └──────────┘  └──────────┘  └──────────┘  └──────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

§Example

use aster::mcp::{McpError, McpResult, TransportType, McpServerConfig};

// Create a server configuration
let config = McpServerConfig {
    transport_type: TransportType::Stdio,
    command: Some("npx".to_string()),
    args: Some(vec!["-y".to_string(), "@modelcontextprotocol/server-filesystem".to_string()]),
    enabled: true,
    ..Default::default()
};

Re-exports§

pub use config_manager::ConfigChangeCallback;
pub use config_manager::ConfigEvent;
pub use config_manager::ConfigManager;
pub use config_manager::McpConfigFile;
pub use config_manager::McpConfigManager;
pub use connection_manager::ConnectionEvent;
pub use connection_manager::ConnectionManager;
pub use connection_manager::McpConnectionManager;
pub use connection_manager::PendingRequestInfo;
pub use error::McpError;
pub use error::McpErrorCode;
pub use error::McpResult;
pub use error::StructuredError;
pub use integration::McpIntegration;
pub use lifecycle_manager::LifecycleEvent;
pub use lifecycle_manager::LifecycleManager;
pub use lifecycle_manager::McpLifecycleManager;
pub use lifecycle_manager::StartOptions;
pub use lifecycle_manager::StopOptions;
pub use logging::LogCallback;
pub use logging::McpLogEntry;
pub use logging::McpLogger;
pub use resource_manager::McpResource;
pub use resource_manager::McpResourceManager;
pub use resource_manager::McpResourceTemplate;
pub use resource_manager::ResourceCacheEntry;
pub use resource_manager::ResourceContent;
pub use resource_manager::ResourceEvent;
pub use resource_manager::ResourceManager;
pub use tool_manager::ArgValidationResult;
pub use tool_manager::CallInfo;
pub use tool_manager::McpTool;
pub use tool_manager::McpToolManager;
pub use tool_manager::ToolCall;
pub use tool_manager::ToolCallResult;
pub use tool_manager::ToolManager;
pub use tool_manager::ToolResultContent;
pub use transport::BoxedTransport;
pub use transport::HttpTransport;
pub use transport::McpErrorData;
pub use transport::McpMessage;
pub use transport::McpNotification;
pub use transport::McpRequest;
pub use transport::McpResponse;
pub use transport::SharedTransport;
pub use transport::StdioTransport;
pub use transport::Transport;
pub use transport::TransportConfig;
pub use transport::TransportEvent;
pub use transport::TransportFactory;
pub use transport::TransportState;
pub use transport::WebSocketTransport;
pub use types::ConfigManagerOptions;
pub use types::ConfigScope;
pub use types::ConnectionOptions;
pub use types::ConnectionStatus;
pub use types::HealthCheckResult;
pub use types::LifecycleOptions;
pub use types::McpConnection;
pub use types::McpLogLevel;
pub use types::McpServerConfig;
pub use types::McpServerInfo;
pub use types::ServerProcess;
pub use types::ServerState;
pub use types::ServerValidationResult;
pub use types::TransportType;
pub use types::ValidationResult;
pub use cancellation::CancellableRequest;
pub use cancellation::CancellationEvent;
pub use cancellation::CancellationReason;
pub use cancellation::CancellationResult;
pub use cancellation::CancellationStats;
pub use cancellation::CancellationToken;
pub use cancellation::CancelledNotification;
pub use cancellation::McpCancellationManager;
pub use cancellation::RequestDuration;
pub use notifications::create_progress_params;
pub use notifications::McpNotificationManager;
pub use notifications::Notification;
pub use notifications::NotificationEvent;
pub use notifications::NotificationFilter;
pub use notifications::NotificationStats;
pub use notifications::NotificationType;
pub use notifications::ProgressNotification;
pub use notifications::ProgressState;
pub use roots::create_root_from_path;
pub use roots::get_default_roots_config;
pub use roots::McpRootsManager;
pub use roots::Root;
pub use roots::RootEvent;
pub use roots::RootInfo;
pub use roots::RootPermissions;
pub use roots::RootsConfig;
pub use roots::RootsStats;

Modules§

cancellation
MCP Cancellation Module
config_manager
MCP Configuration Manager
connection_manager
MCP Connection Manager
error
MCP Error types
integration
MCP Integration Module
lifecycle_manager
MCP Lifecycle Manager
logging
MCP Logging Module
notifications
MCP Notifications Module
resource_manager
MCP Resource Manager
roots
MCP Roots Module
tool_manager
MCP Tool Manager
transport
MCP Transport Layer
types
MCP Core Types

Type Aliases§

JsonObject
A JSON object type alias for convenient handling of JSON data.