Skip to main content

fastmcp.prompts.prompt

Base classes for FastMCP prompts.

Classes

Message

Wrapper for prompt message with auto-serialization. Accepts any content - strings pass through, other types (dict, list, BaseModel) are JSON-serialized to text. Methods:

to_mcp_prompt_message

to_mcp_prompt_message(self) -> PromptMessage
Convert to MCP PromptMessage.

PromptArgument

An argument that can be passed to a prompt.

PromptResult

Canonical result type for prompt rendering. Provides explicit control over prompt responses: multiple messages, roles, and metadata at both the message and result level. Methods:

to_mcp_prompt_result

to_mcp_prompt_result(self) -> GetPromptResult
Convert to MCP GetPromptResult.

Prompt

A prompt template that can be rendered with parameters. Methods:

to_mcp_prompt

to_mcp_prompt(self, **overrides: Any) -> SDKPrompt
Convert the prompt to an MCP prompt.

from_function

from_function(cls, fn: Callable[..., Any]) -> FunctionPrompt
Create a Prompt from a function. The function can return:
  • str: wrapped as single user Message
  • list[Message | str]: converted to list[Message]
  • PromptResult: used directly

render

render(self, arguments: dict[str, Any] | None = None) -> str | list[Message | str] | PromptResult
Render the prompt with arguments. Subclasses must implement this method. Return one of:
  • str: Wrapped as single user Message
  • list[Message | str]: Converted to list[Message]
  • PromptResult: Used directly

convert_result

convert_result(self, raw_value: Any) -> PromptResult
Convert a raw return value to PromptResult. Raises:
  • TypeError: for unsupported types

register_with_docket

register_with_docket(self, docket: Docket) -> None
Register this prompt with docket for background execution.

add_to_docket

add_to_docket(self, docket: Docket, arguments: dict[str, Any] | None, **kwargs: Any) -> Execution
Schedule this prompt for background execution via docket. Args:
  • docket: The Docket instance
  • arguments: Prompt arguments
  • fn_key: Function lookup key in Docket registry (defaults to self.key)
  • task_key: Redis storage key for the result
  • **kwargs: Additional kwargs passed to docket.add()

get_span_attributes

get_span_attributes(self) -> dict[str, Any]