Lot of people disagree with me. They have good arguments, most of current apis won't work well if you make a direct mapping from OpenAPI operations to tools.
The thing is, semantically an operation is very similar to a tool, and there are 1000s of openapis in the ecosystem.
MCP is a new ecosystem and because it doesn't connect with anything, in practice we see most of the introduced MCPs being thin wrappers around REST APIs, adding some improved description and selecting some parameters.
This whole filtering is done in code and makes it very hard to analyse with code. Rater than that, we could've done the same filtering and editing in the openapi data structure, creating a new openapi from the old openapi
I've built dozens of openapi specs in recent years and have built tool calling on top of it as well. if your openapi definition is good and the endpoints make sense to llms, it works just as well for current day models. also worked well 2-3 years ago I started experimenting.
I'm sure MCP is gonna be more than what OpenAPI-as-MCP can deliver as it has more features specific for LLMs, but you can't just ignore the defacto standard for specifying REST apis completely.
A bridge needs to exist. It's a huge gap right now and I think (concpiracy mode on) it was purposefully NOT DONE because MCP didn't want to loose value to OpenAPI. Genius go to market making it fully different.
A big mistake people are making is thinking MCP is just a shim on top of your existing API.
That is, people are proxying MCP <> OpenAPI - no diff than codegening it.
This is absolutely broken by design, isnt useful, and is a waste of your time. This is my perspective on why.