> ## 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.

# Callbacks Manager

> Observability callbacks manager for MCP-use 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/agents/observability/callbacks_manager.py" target="_blank" rel="noopener noreferrer">[https://github.com/mcp-use/mcp-use/blob/main/libraries/python/mcp\_use/agents/observability/callbacks\_manager.py](https://github.com/mcp-use/mcp-use/blob/main/libraries/python/mcp_use/agents/observability/callbacks_manager.py)</a>
</Callout>

Observability callbacks manager for MCP-use.

This module provides a centralized manager for handling observability callbacks
from various platforms (Langfuse, Laminar, etc.) in a clean and extensible way.

## ObservabilityManager

<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> ObservabilityManager</div>

      Manages observability callbacks for MCP agents.

      This class provides a centralized way to collect and manage callbacks
      from various observability platforms (Langfuse, Laminar, etc.).
    </div>
  </RandomGradientBackground>

  ```python theme={null}
  from mcp_use.agents.observability.callbacks_manager import ObservabilityManager
  ```

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

    Initialize the ObservabilityManager.

    **Parameters**

    > <ParamField body="custom_callbacks" type="list | None" default="None">   Optional list of custom callbacks to use instead of defaults. </ParamField>

    **Signature**

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

  <Card type="info">
    ### `method` add\_callback

    Add a callback to the custom callbacks list.

    **Parameters**

    > <ParamField body="callback" required="True">   The callback to add. </ParamField>

    **Signature**

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

  <Card type="info">
    ### `method` clear\_callbacks

    Clear all custom callbacks.

    **Signature**

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

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

    Get the list of callbacks to use.

    **Returns**

    > <ResponseField name="returns" type="list">List of callbacks - either custom callbacks if provided, or all available observability handlers.</ResponseField>

    **Signature**

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

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

    Get the names of available handlers.

    **Returns**

    > <ResponseField name="returns" type="list[str]">List of handler names (e.g., \["Langfuse", "Laminar"])</ResponseField>

    **Signature**

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

  <Card type="info">
    ### `method` has\_callbacks

    Check if any callbacks are available.

    **Returns**

    > <ResponseField name="returns" type="bool">True if callbacks are available, False otherwise.</ResponseField>

    **Signature**

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

## create\_manager

<Card type="info">
  ### `function` create\_manager

  Create a new ObservabilityManager instance.

  ```python theme={null}
  from mcp_use.agents.observability.callbacks_manager import create_manager
  ```

  **Parameters**

  > <ParamField body="custom_callbacks" type="list | None" default="None">   Optional list of custom callbacks. </ParamField>

  **Returns**

  > <ResponseField name="returns" type="mcp_use.agents.observability.callbacks_manager.ObservabilityManager">A new ObservabilityManager instance.</ResponseField>

  **Signature**

  ```python wrap theme={null}
  def create_manager(custom_callbacks: list | None = None):
  ```
</Card>

## get\_default\_manager

<Card type="info">
  ### `function` get\_default\_manager

  Get the default ObservabilityManager instance.

  ```python theme={null}
  from mcp_use.agents.observability.callbacks_manager import get_default_manager
  ```

  **Returns**

  > <ResponseField name="returns" type="mcp_use.agents.observability.callbacks_manager.ObservabilityManager">The default ObservabilityManager instance (singleton).</ResponseField>

  **Signature**

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