Module context

Module context 

Source
Expand description

Request and response context for rich metadata handling.

Enhanced with client identification, session management, and request analytics for comprehensive MCP application monitoring and management.

§Examples

§Creating a basic request context

use turbomcp_core::RequestContext;

let ctx = RequestContext::new();
println!("Request ID: {}", ctx.request_id);
assert!(!ctx.request_id.is_empty());

§Building a context with metadata

use turbomcp_core::RequestContext;

let ctx = RequestContext::new()
    .with_user_id("user123")
    .with_session_id("session456")
    .with_metadata("api_version", "2.0")
    .with_metadata("client", "web_app");

assert_eq!(ctx.user_id, Some("user123".to_string()));
assert_eq!(ctx.session_id, Some("session456".to_string()));
assert_eq!(ctx.get_metadata("api_version"), Some(&serde_json::json!("2.0")));

§Working with response contexts

use turbomcp_core::{RequestContext, ResponseContext};
use std::time::Duration;

let request_ctx = RequestContext::with_id("req-123");
let duration = Duration::from_millis(250);

// Successful response
let success_ctx = ResponseContext::success(&request_ctx.request_id, duration);

// Error response
let error_ctx = ResponseContext::error(&request_ctx.request_id, duration, -32600, "Invalid Request");

assert_eq!(success_ctx.request_id, "req-123");
assert_eq!(error_ctx.request_id, "req-123");

Structs§

ClientIdExtractor
Client identification extractor for various transport mechanisms
ClientSession
Client session information for tracking and analytics
RequestContext
Context information for request processing
RequestInfo
Request analytics information for monitoring and debugging
ResponseContext
Context information for response processing

Enums§

ClientId
Client identification methods for enhanced request routing and analytics
ResponseStatus
Response status information

Traits§

RequestContextExt
Extension trait to add enhanced client management to RequestContext