Skip to main content

Module core

Module core 

Source
Expand description

Core abstractions and types for the MCP SDK

This module contains the fundamental building blocks for MCP implementations, including error handling, resource management, tool execution, and prompt handling.

§Core Concepts

§Tools

Tools represent executable functions that can be called by the MCP protocol:

use prism_mcp_rs::core::{Tool, ToolBuilder, ToolHandler};
use prism_mcp_rs::core::error::{McpError, McpResult};
use std::collections::HashMap;
use prism_mcp_rs::protocol::types::{ToolInfo, ToolResult, ContentBlock};
use serde_json::{json, Value};
use async_trait::async_trait;

struct CalculatorTool;

#[async_trait]
impl ToolHandler for CalculatorTool {
    async fn call(&self, arguments: HashMap<String, Value>) -> McpResult<ToolResult> {
        // Tool implementation  
        Ok(ToolResult {
            content: vec![ContentBlock::Text {
                text: "Result: 42".to_string(),
                annotations: None,
                meta: None,
            }],
            is_error: Some(false),
            meta: None,
            structured_content: None,
        })
    }
}

// Build the tool with the handler
let tool = ToolBuilder::new("calculator")
    .description("Performs calculations")
    .build(CalculatorTool)?;

§Resources

Resources provide access to external data sources:

use prism_mcp_rs::core::{Resource, ResourceHandler};
use prism_mcp_rs::core::error::McpResult;
use std::collections::HashMap;
use prism_mcp_rs::protocol::types::{ResourceContents, ContentBlock};
use prism_mcp_rs::core::{ResourceInfo};
use async_trait::async_trait;

struct FileResource;

#[async_trait]
impl ResourceHandler for FileResource {
    async fn read(
        &self,
        uri: &str,
        params: &HashMap<String, String>,
    ) -> McpResult<Vec<ResourceContents>> {
        Ok(vec![ResourceContents::Text {
            uri: uri.to_string(),
            mime_type: Some("text/plain".to_string()),
            text: "File contents".to_string(),
            meta: None,
        }])
    }
     
    async fn list(&self) -> McpResult<Vec<ResourceInfo>> {
        Ok(vec![])
    }
}

§Prompts

Prompts provide reusable interaction templates:

use prism_mcp_rs::core::{Prompt, PromptHandler};
use prism_mcp_rs::core::error::McpResult;
use std::collections::HashMap;
use prism_mcp_rs::protocol::types::{PromptResult, PromptMessage, Role, ContentBlock};
use serde_json::Value;
use async_trait::async_trait;

struct GreetingPrompt;

#[async_trait]
impl PromptHandler for GreetingPrompt {
    async fn get(&self, arguments: HashMap<String, Value>) -> McpResult<PromptResult> {
        Ok(PromptResult {
            description: Some("A friendly greeting".to_string()),
            messages: vec![
                PromptMessage {
                    role: Role::Assistant,
                    content: ContentBlock::Text {
                        text: "Hello! How can I help you today?".to_string(),
                        annotations: None,
                        meta: None,
                    },
                }
            ],
            meta: None,
        })
    }
}

§Error Handling

The SDK provides comprehensive error handling:

use prism_mcp_rs::core::{McpError, McpResult};

fn process_data() -> McpResult<String> {
    // Return errors using the ? operator
    let data = std::fs::read_to_string("data.txt")
        .map_err(|e| McpError::Io(e.to_string()))?;
     
    Ok(data)
}

§Features

  • Type-Safe Handlers: Strongly typed handler traits
  • Async Support: All handlers are async by default
  • Builder Patterns: Ergonomic construction APIs
  • Validation: Built-in parameter validation
  • Discovery: Tool discovery and metadata support

Re-exports§

pub use completion::CompletionContext;
pub use completion::CompletionHandler;
pub use completion::CompositeCompletionHandler;
pub use completion::PromptCompletionHandler;
pub use completion::ResourceUriCompletionHandler;
pub use completion::ToolCompletionHandler;
pub use completion_handlers::CompositeCompletionHandler as ExtendedCompositeCompletionHandler;
pub use completion_handlers::FileSystemCompletionHandler;
pub use completion_handlers::FuzzyCompletionHandler;
pub use completion_handlers::SchemaCompletionHandler;
pub use error::McpError;
pub use error::McpResult;
pub use prompt::Prompt;
pub use prompt::PromptHandler;
pub use resource::Resource;
pub use resource::ResourceHandler;
pub use resource::ResourceTemplate;
pub use tool::MultiRoundToolCall;
pub use tool::MultiRoundToolHandler;
pub use tool::Tool;
pub use tool::ToolBuilder;
pub use tool::ToolHandler;
pub use tool_discovery::DeprecationCleanupPolicy;
pub use tool_discovery::DiscoveryCriteria;
pub use tool_discovery::DiscoveryResult;
pub use tool_discovery::GlobalToolStats;
pub use tool_discovery::ToolRegistry;
pub use tool_metadata::CategoryFilter;
pub use tool_metadata::DeprecationSeverity;
pub use tool_metadata::ImprovedToolMetadata;
pub use tool_metadata::ToolBehaviorHints;
pub use tool_metadata::ToolCategory;
pub use tool_metadata::ToolDeprecation;
pub use validation::ParameterType;
pub use validation::ParameterValidator;
pub use validation::ValidationConfig;
pub use crate::protocol::types::PromptArgument;
pub use crate::protocol::types::PromptInfo;
pub use crate::protocol::types::PromptMessage;
pub use crate::protocol::types::PromptResult;
pub use crate::protocol::types::ResourceInfo;
pub use crate::protocol::types::ToolInfo;

Modules§

completion
Completion handling for MCP servers
completion_handlers
Practical completion handlers for common MCP use cases
enhanced_errors
Enhanced error types for better ergonomics Replaces generic String messages with structured errors
error
Error types for the MCP Rust SDK
health
Health-check primitives for MCP SDK applications.
logging
Structured logging for the MCP SDK
metrics
Metrics collection for the MCP SDK
prompt
Prompt system for MCP servers
resource
Resource system for MCP servers
retry
Retry and circuit-breaker primitives for MCP operations.
tool
Tool system for MCP servers
tool_discovery
Tool Discovery and Management System
tool_metadata
improved Tool Metadata System
validation
Complete tool validation system for MCP SDK