"Swagger" almost always means one of two things now: the old Swagger 2.0 spec format, or the tooling ecosystem people still call by that name even though the spec itself was renamed OpenAPI in 3.0. Either way, if what you have is a swagger.json or swagger.yaml file, you can hand it straight to the platform — no conversion to OpenAPI 3.x first.
The two formats describe request bodies differently, and that's the part most naive "just paste your spec in" tools get wrong:
| Swagger 2.0 | OpenAPI 3.x | |
|---|---|---|
| Version field | "swagger": "2.0" | "openapi": "3.0.x" / "3.1.x" |
| Request body | A parameter with in: "body" | A top-level requestBody object |
| Base URL | host + basePath + schemes | A servers[] array |
The platform's contract ingestion reads both shapes natively and extracts the same thing either way: a set of operations with a method, a path, and a resolved input schema. You don't need to run your file through an OpenAPI 2→3 converter first — that's an extra lossy step that buys you nothing here.
That's the same live MCP Streamable-HTTP JSON-RPC 2.0 endpoint you'd get from a modern OpenAPI 3.x spec — the format you started from doesn't leak into what an agent sees on the other end.
Once published, the endpoint works with any MCP client the same way regardless of source format — see connecting to Claude or connecting to ChatGPT.
Working from a modern OpenAPI 3.x document instead? See How to convert OpenAPI to MCP. Don't have a spec at all — just an endpoint or two? See Create an MCP server without code or Add MCP to an existing API.