Skip to content

Instantly share code, notes, and snippets.

@DebopamParam
Last active March 19, 2025 11:22
Show Gist options
  • Save DebopamParam/d940dc76945e238a02cca4068c6e7f9a to your computer and use it in GitHub Desktop.
Save DebopamParam/d940dc76945e238a02cca4068c6e7f9a to your computer and use it in GitHub Desktop.
MCP Servers

MCP Servers

The Model Context Protocol (MCP) facilitates structured communication between AI models and external tools or data sources. Understanding the internal workings of an MCP server involves exploring its architecture, transport mechanisms, and communication protocols.

MCP Server Architecture:

An MCP server operates within a client-server architecture, where:

  • Host: Manages multiple client instances, enforcing security policies and coordinating AI integrations.
  • Client: Establishes individual sessions with servers, handling protocol negotiations and message routing.
  • Server: Provides specialized contexts, tools, or data, operating independently to fulfill client requests.

This structure ensures modularity and clear separation of responsibilities, enhancing security and scalability.

Transport Mechanisms:

MCP supports multiple transport mechanisms for communication between clients and servers:

  1. STDIO Transport:
    • Communication: Utilizes standard input (stdin) and standard output (stdout) streams for message exchange.
    • Operation:
      • The client launches the MCP server as a subprocess.
      • The server reads JSON-RPC messages from stdin and writes responses to stdout.
      • Messages are newline-delimited and must not contain embedded newlines.
    • Use Cases: Ideal for command-line tools, local process communication, and development scenarios.
    • Limitations: Supports only single client connections and lacks network accessibility and authentication mechanisms.
  2. HTTP with Server-Sent Events (SSE):
    • Communication: Employs HTTP POST for client-to-server messages and SSE for server-to-client messages.
    • Operation:
      • The server provides two endpoints:
        • SSE Endpoint: Clients establish a connection to receive messages from the server.
        • HTTP POST Endpoint: Clients send messages to the server.
      • Upon connection, the server sends an endpoint event containing a URI for client messages.
    • Use Cases: Suitable for web applications and distributed systems requiring network-based communication and support for multiple clients.
    • Features: Supports authentication mechanisms such as JWT and API keys.

Communication Protocol:

MCP relies on JSON-RPC 2.0 for message formatting, ensuring a standardized structure for requests, responses, and notifications. This protocol-agnostic approach allows MCP to operate over various transport mechanisms, maintaining consistency across different communication channels.

Port Usage:

For HTTP-based transports, MCP servers listen on configurable ports to handle client connections. The specific port numbers depend on the server's configuration and the network environment in which it operates.

For instance, in a Mirantis Cloud Platform (MCP) environment, services like OpenStack Dashboard and Keystone are exposed through endpoints terminated on a reverse proxy server, typically using ports 443 and 5000, respectively.

Security Considerations:

MCP servers implement security measures appropriate to the chosen transport mechanism:

  • STDIO Transport: Inherently secure due to process isolation, suitable for local integrations without network exposure.
  • HTTP with SSE: Requires authentication mechanisms (e.g., JWT, API keys) and transport security (e.g., TLS) to protect data over network communications.

By adhering to these structured protocols and transport mechanisms, MCP servers ensure reliable and secure interactions between AI models and external resources.

Visualizing MCP Architecture

To illustrate the internal workings of an MCP (Model Context Protocol) server, let's use Mermaid diagrams to visualize its architecture and communication flows.

1. MCP Client-Server Architecture:

This diagram showcases the core components of the MCP architecture, highlighting the relationships between hosts, clients, and servers.

graph TD
    subgraph Host Application
        A[Host]
        B[Client]
    end
    subgraph External Resources
        E[Tool]
        F[Resource]
    end
    A --> B
    B --> C[Server]
    C --> E
    C --> F
Loading

In this architecture:

  • Host: Manages the overall system and initiates connections.
  • Client: Maintains a one-to-one connection with the server.
  • Server: Provides access to tools and resources.
  • Tool: Represents executable functions or services.
  • Resource: Denotes data sources or files.

This structure ensures modularity and clear separation of responsibilities, enhancing security and scalability.

2. STDIO Transport Mechanism:

The STDIO transport mechanism utilizes standard input and output streams for communication between the client and server.

sequenceDiagram
    participant Client
    participant Server
    Client->>Server: Launches Server as Subprocess
    Client->>Server: Writes JSON-RPC Messages to stdin
    Server->>Client: Writes Responses to stdout
Loading

This mechanism is ideal for local process communication and development scenarios.

3. HTTP with Server-Sent Events (SSE) Transport Mechanism:

This transport mechanism employs HTTP POST for client-to-server messages and SSE for server-to-client messages.

sequenceDiagram
    participant Client
    participant Server
    Client->>Server: HTTP POST Request
    Server->>Client: SSE Connection Established
    Server->>Client: Sends Messages via SSE
    Client->>Server: Sends Messages via HTTP POST
Loading

This approach is suitable for web applications and distributed systems requiring network-based communication.

4. Communication Protocol:

MCP relies on JSON-RPC 2.0 for message formatting, ensuring a standardized structure for requests, responses, and notifications.

sequenceDiagram
    participant Client
    participant Server
    Client->>Server: JSON-RPC Request
    Server->>Client: JSON-RPC Response
Loading

This protocol-agnostic approach allows MCP to operate over various transport mechanisms, maintaining consistency across different communication channels.

These diagrams provide a detailed visualization of the internal workings of an MCP server, illustrating its architecture, transport mechanisms, and communication protocols.

5. Detailed Component Interaction:

sequenceDiagram
    participant Host
    participant Client
    participant Server
    participant Tool
    participant Resource

    Note over Host,Client: Host initializes and manages the Client
    Host->>Client: Initialize Client
    Note over Client,Server: Client establishes a connection with the Server
    Client->>Server: Establish Connection
    Note over Server: Server advertises available Tools and Resources
    Server->>Client: Advertise Capabilities
    Note over Client,Server: Client requests to use a specific Tool
    Client->>Server: Request Tool Execution
    Note over Server,Tool: Server invokes the Tool
    Server->>Tool: Invoke Tool
    Note over Tool,Server: Tool performs the task and returns the result
    Tool->>Server: Return Result
    Note over Server,Client: Server sends the result back to the Client
    Server->>Client: Send Result
    Note over Client,Host: Client provides the result to the Host
    Client->>Host: Provide Result
    Note over Client,Server: Client requests access to a Resource
    Client->>Server: Request Resource Access
    Note over Server,Resource: Server retrieves the Resource
    Server->>Resource: Retrieve Resource
    Note over Resource,Server: Resource provides data to the Server
    Resource->>Server: Provide Data
    Note over Server,Client: Server sends the Resource data to the Client
    Server->>Client: Send Resource Data
    Note over Client,Host: Client provides the Resource data to the Host
    Client->>Host: Provide Resource Data
Loading

This diagram depicts the interactions among the core components of the MCP architecture:

  • Host: Manages the overall system and initiates the Client.
  • Client: Establishes connections with Servers to access Tools and Resources.
  • Server: Provides access to Tools and Resources, advertising its capabilities to Clients.
  • Tool: Represents executable functions or services that perform specific tasks.
  • Resource: Denotes data sources or files that can be accessed.

The sequence illustrates:

  1. The Host initializes the Client.
  2. The Client establishes a connection with the Server.
  3. The Server advertises its available Tools and Resources.
  4. The Client requests to execute a Tool or access a Resource.
  5. The Server processes the request by invoking the Tool or retrieving the Resource.
  6. The result or data is sent back through the Server to the Client, and finally to the Host.

This structured interaction ensures modularity, clear separation of responsibilities, and efficient communication within the MCP framework.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment