mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-09 15:19:10 +02:00
180 lines
6.8 KiB
Text
180 lines
6.8 KiB
Text
---
|
|
title: openapi
|
|
sidebarTitle: openapi
|
|
---
|
|
|
|
# `fastmcp.utilities.openapi`
|
|
|
|
## Functions
|
|
|
|
### `format_array_parameter` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L41" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
format_array_parameter(values: list, parameter_name: str, is_query_parameter: bool = False) -> str | list
|
|
```
|
|
|
|
|
|
Format an array parameter according to OpenAPI specifications.
|
|
|
|
**Args:**
|
|
- `values`: List of values to format
|
|
- `parameter_name`: Name of the parameter (for error messages)
|
|
- `is_query_parameter`: If True, can return list for explode=True behavior
|
|
|
|
**Returns:**
|
|
- String (comma-separated) or list (for query params with explode=True)
|
|
|
|
|
|
### `format_deep_object_parameter` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L91" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
format_deep_object_parameter(param_value: dict, parameter_name: str) -> dict[str, str]
|
|
```
|
|
|
|
|
|
Format a dictionary parameter for deepObject style serialization.
|
|
|
|
According to OpenAPI 3.0 spec, deepObject style with explode=true serializes
|
|
object properties as separate query parameters with bracket notation.
|
|
|
|
For example: `{"id": "123", "type": "user"}` becomes `param[id]=123¶m[type]=user`.
|
|
|
|
**Args:**
|
|
- `param_value`: Dictionary value to format
|
|
- `parameter_name`: Name of the parameter
|
|
|
|
**Returns:**
|
|
- Dictionary with bracketed parameter names as keys
|
|
|
|
|
|
### `parse_openapi_to_http_routes` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L201" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
parse_openapi_to_http_routes(openapi_dict: dict[str, Any]) -> list[HTTPRoute]
|
|
```
|
|
|
|
|
|
Parses an OpenAPI schema dictionary into a list of HTTPRoute objects
|
|
using the openapi-pydantic library.
|
|
|
|
Supports both OpenAPI 3.0.x and 3.1.x versions.
|
|
|
|
|
|
### `clean_schema_for_display` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L741" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
clean_schema_for_display(schema: JsonSchema | None) -> JsonSchema | None
|
|
```
|
|
|
|
|
|
Clean up a schema dictionary for display by removing internal/complex fields.
|
|
|
|
|
|
### `generate_example_from_schema` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L801" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
generate_example_from_schema(schema: JsonSchema | None) -> Any
|
|
```
|
|
|
|
|
|
Generate a simple example value from a JSON schema dictionary.
|
|
Very basic implementation focusing on types.
|
|
|
|
|
|
### `format_json_for_description` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L884" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
format_json_for_description(data: Any, indent: int = 2) -> str
|
|
```
|
|
|
|
|
|
Formats Python data as a JSON string block for markdown.
|
|
|
|
|
|
### `format_description_with_responses` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L893" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
format_description_with_responses(base_description: str, responses: dict[str, Any], parameters: list[ParameterInfo] | None = None, request_body: RequestBodyInfo | None = None) -> str
|
|
```
|
|
|
|
|
|
Formats the base description string with response, parameter, and request body information.
|
|
|
|
**Args:**
|
|
- `base_description`: The initial description to be formatted.
|
|
- `responses`: A dictionary of response information, keyed by status code.
|
|
- `parameters`: A list of parameter information,
|
|
including path and query parameters. Each parameter includes details such as name,
|
|
location, whether it is required, and a description.
|
|
- `request_body`: Information about the request body,
|
|
including its description, whether it is required, and its content schema.
|
|
|
|
**Returns:**
|
|
- The formatted description string with additional details about responses, parameters,
|
|
- and the request body.
|
|
|
|
|
|
### `extract_output_schema_from_responses` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L1419" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
extract_output_schema_from_responses(responses: dict[str, ResponseInfo], schema_definitions: dict[str, Any] | None = None, openapi_version: str | None = None) -> dict[str, Any] | None
|
|
```
|
|
|
|
|
|
Extract output schema from OpenAPI responses for use as MCP tool output schema.
|
|
|
|
This function finds the first successful response (200, 201, 202, 204) with a
|
|
JSON-compatible content type and extracts its schema. If the schema is not an
|
|
object type, it wraps it to comply with MCP requirements.
|
|
|
|
**Args:**
|
|
- `responses`: Dictionary of ResponseInfo objects keyed by status code
|
|
- `schema_definitions`: Optional schema definitions to include in the output schema
|
|
- `openapi_version`: OpenAPI version string, used to optimize nullable field handling
|
|
|
|
**Returns:**
|
|
- MCP-compliant output schema with potential wrapping, or None if no suitable schema found
|
|
|
|
|
|
## Classes
|
|
|
|
### `ParameterInfo` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L124" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
|
|
Represents a single parameter for an HTTP operation in our IR.
|
|
|
|
|
|
### `RequestBodyInfo` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L136" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
|
|
Represents the request body for an HTTP operation in our IR.
|
|
|
|
|
|
### `ResponseInfo` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L146" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
|
|
Represents response information in our IR.
|
|
|
|
|
|
### `HTTPRoute` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L154" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
|
|
Intermediate Representation for a single OpenAPI operation.
|
|
|
|
|
|
### `OpenAPIParser` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L255" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
|
|
Unified parser for OpenAPI schemas with generic type parameters to handle both 3.0 and 3.1.
|
|
|
|
|
|
**Methods:**
|
|
|
|
#### `parse` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/utilities/openapi.py#L619" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
parse(self) -> list[HTTPRoute]
|
|
```
|
|
|
|
Parse the OpenAPI schema into HTTP routes.
|
|
|