It's the mechanism behind agents: you describe tools (name, description, JSON-Schema inputs), the model decides which to call and with what arguments, your code executes it, and the result goes back into the conversation. MCP standardizes this across clients and servers.
The model chooses tools from their descriptions — so vague descriptions mean tools never get called, whether you use raw function calling or MCP.
Related but not identical. Function calling is a model capability; MCP is an open protocol that standardizes how tools are exposed and called across different clients and servers.