fastmcp.server.elicitation

Functions

get_elicitation_schema

get_elicitation_schema(response_type: type[T]) -> dict[str, Any]
Get the schema for an elicitation response. Args:
  • response_type: The type of the response

validate_elicitation_json_schema

validate_elicitation_json_schema(schema: dict[str, Any]) -> None
Validate that a JSON schema follows MCP elicitation requirements. This ensures the schema is compatible with MCP elicitation requirements:
  • Must be an object schema
  • Must only contain primitive field types (string, number, integer, boolean)
  • Must be flat (no nested objects or arrays of objects)
  • Allows const fields (for Literal types) and enum fields (for Enum types)
  • Only primitive types and their nullable variants are allowed
Args:
  • schema: The JSON schema to validate
Raises:
  • TypeError: If the schema doesn’t meet MCP elicitation requirements

Classes

ElicitationJsonSchema

Custom JSON schema generator for MCP elicitation that always inlines enums. MCP elicitation requires inline enum schemas without ref/ref/defs references. This generator ensures enums are always generated inline for compatibility. Optionally adds enumNames for better UI display when available. Methods:

generate_inner

generate_inner(self, schema: core_schema.CoreSchema) -> JsonSchemaValue
Override to prevent ref generation for enums.

enum_schema

enum_schema(self, schema: core_schema.EnumSchema) -> JsonSchemaValue
Generate inline enum schema with optional enumNames for better UI. If enum members have a display_name attribute or custom str, we’ll include enumNames for better UI representation.

AcceptedElicitation

Result when user accepts the elicitation.

ScalarElicitationType