httpmcp_rust/handlers/
prompts.rs

1use crate::context::RequestContext;
2use crate::error::Result;
3use crate::protocol::{Prompt, PromptMessage};
4use async_trait::async_trait;
5use std::collections::HashMap;
6
7/// Trait for implementing prompt providers
8///
9/// Implement this trait to provide prompts (templates, instructions) to MCP clients.
10/// All methods receive a RequestContext with access to headers and request metadata.
11#[async_trait]
12pub trait PromptProvider: Send + Sync {
13    /// List available prompts
14    ///
15    /// # Arguments
16    /// * `cursor` - Optional pagination cursor
17    /// * `ctx` - Request context with headers and metadata
18    ///
19    /// # Returns
20    /// A tuple of (prompts, next_cursor)
21    async fn list_prompts(
22        &self,
23        cursor: Option<&str>,
24        ctx: &RequestContext,
25    ) -> Result<(Vec<Prompt>, Option<String>)>;
26
27    /// Get a specific prompt with arguments
28    ///
29    /// # Arguments
30    /// * `name` - The name of the prompt to get
31    /// * `arguments` - Prompt arguments to populate the template
32    /// * `ctx` - Request context with headers and metadata
33    ///
34    /// # Returns
35    /// A tuple of (description, messages)
36    async fn get_prompt(
37        &self,
38        name: &str,
39        arguments: Option<HashMap<String, String>>,
40        ctx: &RequestContext,
41    ) -> Result<(Option<String>, Vec<PromptMessage>)>;
42}