Protocol

MCP vs OpenAI function calling

OpenAI shipped function calling in June 2023 as part of the Chat Completions API. It defined a contract for the LLM to call developer-defined functions, scoped to the OpenAI API surface. MCP (Anthropic, Nov 2024; donated to the Linux Foundation Agentic AI Foundation in Dec 2025) standardizes the same idea as a model-vendor-neutral wire protocol.

The framing

OpenAI function calling lives inside the Chat Completions request. The developer passes a functions array (later tools) with JSON Schema for each function on every request. The model returns a structured function_call object naming a function and its arguments. The developer's code runs the function and posts the result back as a tool message on the next turn. The contract is bound to OpenAI's API.

MCP is a wire protocol over JSON-RPC 2.0. The agent client (Claude Code, Cursor, Windsurf, ChatGPT Apps, Continue, Cline, Zed) connects to an MCP server, runs an initialize handshake to negotiate capabilities, calls tools/list to learn what is available, and then calls tools/call to invoke a tool. The same server works with any client that speaks the protocol.

Side by side

OpenAI function calling MCP
Specification owner OpenAI (proprietary, versioned with the API) LF AAIF open specification
Wire format OpenAI Chat Completions JSON shape JSON-RPC 2.0
Transport HTTPS to the OpenAI API endpoint stdio, SSE, or HTTP
Discovery Function schemas embedded in every completion request initialize handshake plus tools/list
Reusability Per OpenAI-app integration code One MCP server reused across every MCP client
Auth model Handled by the OpenAI API key on the request Client-side, via the host process or OAuth on the server
Primitives Functions / tools Resources, Tools, Prompts (server side); Roots, Sampling, Elicitation (client side)
Change signaling Resend the function list on the next request JSON-RPC notifications (tools/list_changed)

Where they overlap

OpenAI shipped MCP support into ChatGPT Apps in late 2025. A single MCP server now plugs into both OpenAI clients and Anthropic clients without per-vendor rewrites. The OpenAI function-calling API still exists for direct API consumers; MCP is the layer the host clients agreed on for plug-in tools. The two contracts coexist in the OpenAI stack.

When to reach for which

Use OpenAI function calling when the code is a direct consumer of the OpenAI Chat Completions or Responses API and there is no intermediary host. The function registry lives in the calling application; no separate server process is needed.

Use MCP when the integration should run inside an agent host (Claude Code, Cursor, Windsurf, ChatGPT Apps, Continue, Cline, Zed) or should be reusable across hosts. Write the server once; every MCP client can connect to it. The protocol also covers capabilities OpenAI function calling does not specify: server-pushed change notifications, parameterized prompts, URI-addressed Resources, and bidirectional negotiation through the initialize handshake.

Related on MCPowered