Who is the consumer?
That single question explains most of the difference. An API assumes a human developer reads documentation, writes integration code, ships it, and maintains it. MCP assumes a model receives a plain-language request it has never seen before and must figure out which capability applies.
When does the decision happen?
With an API, the decision is frozen at build time — the code always calls the same endpoints in the same order. With MCP, the decision happens at run time, which is what makes it useful for open-ended requests, and what makes guardrails mandatory.
What stays exactly the same?
Security. MCP does not soften anything: the server still authenticates the caller, still scopes the request to that user's organization and role, still refuses out-of-bounds requests, and still records what happened. A well-built MCP server is stricter than an API, because the caller is non-deterministic.