> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mcp-use.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Base

> Connection management for MCP implementations API Documentation

export const RandomGradientBackground = ({className, color, children, grayscaled = false}) => {
  const saturation = useMemo(() => {
    if (color) {
      const values = color.split("(")[1].split(")")[0].trim().split(/\s+/);
      return parseFloat(values[1] || "0");
    }
    return grayscaled ? 0 : 0.2;
  }, [color, grayscaled]);
  const lightness = useMemo(() => {
    if (color) {
      const values = color.split("(")[1].split(")")[0].trim().split(/\s+/);
      return parseFloat(values[0] || "0.5");
    }
    return grayscaled ? 0.3 : 0.4;
  }, [color, grayscaled]);
  const randomHue = useMemo(() => {
    if (color) {
      const values = color.split("(")[1].split(")")[0].trim().split(/\s+/);
      return parseFloat(values[2] || "0");
    }
    return Math.floor(Math.random() * 360);
  }, [color]);
  const randomColor = useMemo(() => {
    if (color) {
      return color;
    }
    return `oklch(${Math.min(lightness, 1)} ${saturation} ${randomHue})`;
  }, [randomHue, saturation, lightness]);
  const lightColor = useMemo(() => {
    return `oklch(${Math.min(lightness * 2, 1)} ${saturation} ${randomHue})`;
  }, [randomHue, saturation, lightness, color]);
  const direction = useMemo(() => {
    return Math.floor(Math.random() * 360);
  }, [randomHue]);
  const brightnessFilter = useMemo(() => {
    return "1000%";
  }, []);
  return <div className={`relative overflow-hidden ${className || ""}`} style={{
    background: `${lightColor}`,
    minHeight: '100%',
    width: '100%'
  }}>
      <div className="absolute inset-0 w-full h-full" style={{
    background: `linear-gradient(${direction}deg, ${randomColor}, transparent), url(https://grainy-gradients.vercel.app/noise.svg)`,
    filter: `contrast(120%) brightness(${brightnessFilter})`,
    backgroundSize: 'cover',
    backgroundRepeat: 'no-repeat'
  }} />
      {children && <div className="relative z-10 w-full h-full">{children}</div>}
    </div>;
};

<Callout type="info" title="Source Code">
  View the source code for this module on GitHub: <a href="https://github.com/mcp-use/mcp-use/blob/main/libraries/python/mcp_use/client/task_managers/base.py" target="_blank" rel="noopener noreferrer">[https://github.com/mcp-use/mcp-use/blob/main/libraries/python/mcp\_use/client/task\_managers/base.py](https://github.com/mcp-use/mcp-use/blob/main/libraries/python/mcp_use/client/task_managers/base.py)</a>
</Callout>

Connection management for MCP implementations.

This module provides an abstract base class for different types of connection
managers used in MCP connectors.

## ConnectionManager

<div>
  <RandomGradientBackground className="rounded-lg p-4 w-full h-full rounded-full">
    <div className="text-black">
      <div className="text-black font-bold text-xl mb-2 mt-8"><code className="!text-black">class</code> ConnectionManager</div>

      Abstract base class for connection managers.

      This class defines the interface for different types of connection managers
      used with MCP connectors.
    </div>
  </RandomGradientBackground>

  ```python theme={null}
  from mcp_use.client.task_managers.base import ConnectionManager
  ```

  <Card type="info">
    ### `method` **init**

    Initialize a new connection manager.

    **Signature**

    ```python wrap theme={null}
    def __init__():
    ```
  </Card>

  <Card type="info">
    ### `method` get\_streams

    Get the current connection streams.

    **Returns**

    > <ResponseField name="returns" type="mcp_use.client.task_managers.base.T | None">The current connection (typically a tuple of read\_stream, write\_stream) or None if not connected.</ResponseField>

    **Signature**

    ```python wrap theme={null}
    def get_streams():
    ```
  </Card>

  <Card type="info">
    ### `method` start

    Start the connection manager and establish a connection.

    **Returns**

    > <ResponseField name="returns" type="mcp_use.client.task_managers.base.T">The established connection.</ResponseField>

    **Signature**

    ```python wrap theme={null}
    def start():
    ```
  </Card>

  <Card type="info">
    ### `method` stop

    Stop the connection manager and close the connection.

    This method ensures graceful shutdown by waiting for the connection task
    to complete and cleanup to finish. If operations exceed the timeout,
    forced cleanup is performed to prevent resource leaks.

    Note:
    This method does not raise exceptions and guarantees graceful shutdown
    even if cleanup times out.

    **Parameters**

    > <ParamField body="timeout" type="float | None" default="30.0">   Maximum time to wait for cleanup in seconds (default: 30.0). </ParamField>

    **Signature**

    ```python wrap theme={null}
    def stop(timeout: float | None = 30.0):
    ```
  </Card>
</div>
