MCP follows a client-server architecture where an MCP host — an AI application like LM Studio or Visual Studio Code — establishes connections to one or more MCP servers.

The MCP host accomplishes this by creating one MCP client for each MCP server. Each MCP client maintains a dedicated one-to-one connection with its corresponding MCP server.

🏗️ Key Participants

ParticipantRole
🤖 MCP HostThe AI application that orchestrates one or more MCP clients. It uses context retrieved via these clients to enhance its reasoning, code generation, or decision-making.
🔄 MCP ClientA lightweight component instantiated by the MCP host for each server it connects to. Each client maintains a dedicated, one-to-one connection with a single MCP server, handling requests and responses according to the MCP spec.
🗄️ MCP ServerA service that exposes data or functionality (e.g., logs, files, databases) to MCP clients. The server validates requests and returns context in a structured, safe manner. Servers can be local or remote.

🌐 Example: Visual Studio Code as an MCP Host 💡

flowchart TD
    subgraph MCP_Host["MCP Host (Visual Studio Code)"]
        Client1["MCP Client 1"]
        Client2["MCP Client 2"]
        Client3["MCP Client 3"]
    end

    Server1["MCP Server 1<br/>(e.g., Tavily)"]
    Server2["MCP Server 2<br/>(e.g., Filesystem)"]
    Server3["MCP Server 3<br/>(e.g., Github)"]

    Client1 -- "One-to-one<br/>connection" --> Server1
    Client2 -- "One-to-one<br/>connection" --> Server2
    Client3 -- "One-to-one<br/>connection" --> Server3

When Visual Studio Code establishes a connection to an MCP server, such as the Tavily MCP server, the Visual Studio Code runtime instantiates an MCP client object that maintains the connection to the Sentry MCP server. When Visual Studio Code subsequently connects to another MCP server, such as the local filesystem server, the Visual Studio Code runtime instantiates an additional MCP client object to maintain this connection, hence maintaining a one-to-one relationship of MCP clients to MCP servers.

🖥️⚡ Local vs Remote MCP Servers

The term MCP server refers to the program providing context, regardless of where it runs:

TypeDescription
💾 Local MCP ServerRuns on the same machine as the MCP host, typically using efficient transports like stdio
☁️ Remote MCP ServerHosted externally (e.g., cloud), accessed via secure transports like Streamable HTTP

This flexibility allows MCP to unify access to both on-device and cloud-based tools under a single, consistent interface.

Last updated 10 Aug 2025, 20:01 +0100 . history