> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0mcp.io/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAPI specification

> Import your API to create an MCP server.

0mcp generates MCP tools directly from your **OpenAPI** specification. Simply import your API definition, review the generated tools, and publish your MCP server.

Currently, 0mcp supports:

* **OpenAPI 3.x**
* **Swagger 2.0**

Both **JSON** and **YAML** formats are supported.

## Import methods

You can import an API specification in three ways:

### File

Upload a `.json`, `.yaml`, or `.yml` file up to **10 MB**.

### URL

Import from a publicly accessible `http://` or `https://` URL.

<Note>
  The URL must return the OpenAPI document directly without requiring a browser login.
</Note>

### Paste

Paste the complete OpenAPI document directly into the editor.

## What happens during import?

Before importing, 0mcp analyzes your specification and displays a preview showing:

* OpenAPI version
* Server URL
* Available API operations

From there, you can:

* Choose which operations become [MCP tools](/capabilities/tools)
* Review generated tool names
* Improve tool descriptions before creating your server

This gives you full control over what AI clients can access.

<Warning>
  Review write, delete, administrative, and payment operations carefully before selecting them as tools.
</Warning>

## Writing a high-quality OpenAPI specification

The quality of your MCP server depends on the quality of your OpenAPI document.

For the best experience:

* Give every operation a unique `operationId`.
* Write clear summaries and descriptions.
* Define request parameters and request bodies accurately.
* Configure [authentication](/concepts/authentication-model) using OpenAPI security schemes.
* Document response schemas.
* Ensure the server URL points to the correct upstream API.

Well-documented APIs produce more accurate and easier-to-use MCP tools.

## Best practices

* Use stable, descriptive `operationId` values, such as `get_order` instead of `get1`.
* Write descriptions that explain what an operation does and when it should be used.
* Remove deprecated or internal endpoints before exposing them to AI clients.
* Keep your OpenAPI specification up to date as your API evolves.

If your specification can't be parsed or validated, see [**Invalid OpenAPI**](/troubleshooting/invalid-openapi) for common issues and troubleshooting steps.
