Skip to main content

mcp_utils/server/
tasks.rs

1use rmcp::model::ClientCapabilities;
2use rmcp::service::RequestContext;
3use rmcp::{ErrorData, RoleServer};
4
5/// Bounds both task execution and terminal-result retention because rmcp uses
6/// one TTL for both concerns.
7pub const BACKGROUND_TASK_TTL_MS: u64 = 3_600_000;
8
9pub fn require_tasks_capability(context: &RequestContext<RoleServer>) -> Result<(), ErrorData> {
10    if context.client_capabilities().is_some_and(|capabilities| capabilities.supports_tasks()) {
11        Ok(())
12    } else {
13        Err(ErrorData::missing_required_client_capability(ClientCapabilities::builder().enable_tasks().build()))
14    }
15}