Crate pulseengine_mcp_server

Source
Expand description

Generic MCP server infrastructure with pluggable backends

This crate provides a complete MCP server implementation that can be extended with custom backends for different domains (home automation, databases, APIs, etc.).

§Quick Start

use mcp_server::{McpServer, McpBackend, ServerConfig};
use pulseengine_mcp_protocol::*;
use async_trait::async_trait;

#[derive(Clone)]
struct MyBackend;

#[async_trait]
impl McpBackend for MyBackend {
    type Error = Box<dyn std::error::Error + Send + Sync>;
    type Config = ();

    async fn initialize(_: ()) -> Result<Self, Self::Error> {
        Ok(MyBackend)
    }

    fn get_server_info(&self) -> ServerInfo {
        ServerInfo {
            protocol_version: ProtocolVersion::default(),
            capabilities: ServerCapabilities::default(),
            server_info: Implementation {
                name: "My Server".to_string(),
                version: "1.0.0".to_string(),
            },
            instructions: Some("Example server".to_string()),
        }
    }

    async fn list_tools(&self, _: PaginatedRequestParam) -> Result<ListToolsResult, Self::Error> {
        Ok(ListToolsResult { tools: vec![], next_cursor: String::new() })
    }

    async fn call_tool(&self, _: CallToolRequestParam) -> Result<CallToolResult, Self::Error> {
        Ok(CallToolResult { content: vec![], is_error: Some(false) })
    }

    // Implement other required methods (simplified for example)
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let backend = MyBackend::initialize(()).await?;
    let config = ServerConfig::default();
    let mut server = McpServer::new(backend, config).await?;
    server.run().await?;
    Ok(())
}

Re-exports§

pub use backend::BackendError;
pub use backend::McpBackend;
pub use context::RequestContext;
pub use handler::GenericServerHandler;
pub use handler::HandlerError;
pub use middleware::Middleware;
pub use middleware::MiddlewareStack;
pub use server::McpServer;
pub use server::ServerConfig;
pub use server::ServerError;
pub use pulseengine_mcp_auth as auth;
pub use pulseengine_mcp_monitoring as monitoring;
pub use pulseengine_mcp_protocol as protocol;
pub use pulseengine_mcp_security as security;
pub use pulseengine_mcp_transport as transport;

Modules§

backend
Backend trait for pluggable MCP implementations
context
Request context for MCP operations
error
Error types for the MCP protocol
handler
Generic request handler for MCP protocol
middleware
Middleware stack for request/response processing
model
MCP model types for protocol messages and data structures
server
Generic MCP server implementation
validation
Validation utilities for MCP protocol types

Structs§

Annotations
Resource annotations
AuthConfig
Authentication configuration
AuthenticationManager
Authentication manager
CallToolRequestParam
Tool call parameters
CallToolResult
Tool call result
CompleteRequestParam
Completion request parameters
CompleteResult
Complete result
CompletionInfo
Completion information
Error
Core MCP error type
GetPromptRequestParam
Get prompt parameters
GetPromptResult
Get prompt result
Implementation
Server implementation information
InitializeRequestParam
Initialize request parameters
InitializeResult
Initialize result
ListPromptsResult
List prompts result
ListResourceTemplatesResult
List resource templates result
ListResourcesResult
List resources result
ListToolsResult
List tools result
LoggingCapability
MetricsCollector
Metrics collector for MCP server
MonitoringConfig
Monitoring configuration
PaginatedRequestParam
Pagination parameters
Prompt
Prompt definition
PromptArgument
Prompt argument definition
PromptMessage
Prompt message
PromptsCapability
ProtocolVersion
Protocol version information
RawResource
Raw resource (for internal use)
ReadResourceRequestParam
Read resource parameters
ReadResourceResult
Read resource result
Request
JSON-RPC 2.0 Request
Resource
Resource definition
ResourceContents
Resource contents wrapper
ResourceTemplate
Resource template definition
ResourcesCapability
Response
JSON-RPC 2.0 Response
SamplingCapability
SecurityConfig
Security configuration
SecurityMiddleware
Security middleware for request/response processing
ServerCapabilities
Server capabilities configuration
ServerCapabilitiesBuilder
ServerInfo
Server information response
SetLevelRequestParam
Set logging level parameters
SubscribeRequestParam
Subscribe request parameters
TextContent
Text content struct for compatibility
Tool
Tool definition
ToolsCapability
UnsubscribeRequestParam
Unsubscribe request parameters
Validator
Protocol validation utilities

Enums§

Content
Content types for tool responses
PromptMessageContent
Prompt message content
PromptMessageRole
Prompt message role
TransportConfig
Transport configuration

Constants§

MCP_VERSION
Protocol version constants
SUPPORTED_PROTOCOL_VERSIONS

Traits§

Transport
Transport layer trait

Functions§

is_protocol_version_supported
Check if a protocol version is supported
validate_protocol_version
Validate MCP protocol version compatibility

Type Aliases§

Result
Result type alias for MCP operations