mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-10 07:39:10 +02:00
87 lines
3.1 KiB
Text
87 lines
3.1 KiB
Text
---
|
|
title: elicitation
|
|
sidebarTitle: elicitation
|
|
---
|
|
|
|
# `fastmcp.server.elicitation`
|
|
|
|
## Functions
|
|
|
|
### `get_elicitation_schema` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/elicitation.py#L99" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
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` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/elicitation.py#L118" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
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` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/elicitation.py#L32" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
|
|
Custom JSON schema generator for MCP elicitation that always inlines enums.
|
|
|
|
MCP elicitation requires inline enum schemas without $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` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/elicitation.py#L40" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
generate_inner(self, schema: core_schema.CoreSchema) -> JsonSchemaValue
|
|
```
|
|
|
|
Override to prevent ref generation for enums.
|
|
|
|
|
|
#### `enum_schema` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/elicitation.py#L50" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
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` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/elicitation.py#L87" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
|
|
Result when user accepts the elicitation.
|
|
|
|
|
|
### `ScalarElicitationType` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/elicitation.py#L95" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|