An open standard that acts as a universal adapter between LLMs and external systems, exposing data (resources), templates (prompts), and functions (tools) over a client-server protocol with dynamic discovery. Use for complex, scalable, or enterprise systems that must interoperate with a diverse, evolving set of tools and data; for a small fixed set of functions, direct tool-calling is simpler.