Introduction

LLM-powered applications have created a pressing need for models to access up-to-date, domain-specific data from diverse sources. MCP addresses this by providing a unified protocol standardising how applications can dynamically expose data and capabilities to any LLM-powered application.

MCP Overview

At its core, MCP follows a JSON-RPC-based client-server architecture where a host application can connect to multiple servers:

MCP Host

  • MCP Hosts are the core components that connect to the MCP Servers and use the data and capabilities exposed by the MCP Servers.

MCP Client

  • MCP Clients are the core components that implement the client-side MCP protocol in different programming languages. They are the bridge through which the MCP Hosts connect with the MCP Servers.

MCP Server

  • MCP Servers are the core components that expose the data and capabilities to the MCP Hosts. They are responsible for providing the data and capabilities to the MCP Hosts.
  • MCP Servers can expose three main types of capabilities:
    • Resources are data that the MCP servers make available for the applications to read. They can include file contents, API responses, etc. Resources are application-controlled; the applications decide how to include them in the user flow.
    • Tools are capabilities and data exposed by the MCP servers. For example, a Kubernetes MCP server can expose tools for getting all pods and deleting a pod. Tools are model-controlled. LLMs decide to call them based on the given context.
    • Prompts are templateable user interactions or workflows exposed by the MCP server. They are user-controlled. LLM Applications decide how to expose them so the user can select the appropriate prompt.