Skip to content

Server

A ToolServer manages tools and handles connections

Source code in blue/tools/server.py
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
class ToolServer:
    """A ToolServer manages tools and handles connections"""

    def __init__(self, name, properties={}):
        """Initialize a ToolServer instance.

        Parameters:
            name: Name of the tool server
            properties: Properties of the tool server
        """
        self.name = name

        self._initialize(properties=properties)

        self._start()

    ###### initialization
    def _initialize(self, properties=None):
        """Initialize the tool server with properties and logger.

        Parameters:
            properties: Properties to override default properties.
        """
        self._initialize_properties()
        self._update_properties(properties=properties)

        self._initialize_logger()

    def _initialize_properties(self):
        """Initialize default properties for tool server."""
        self.properties = {}

        # server protocol
        self.properties['protocol'] = "default"

    def _update_properties(self, properties=None):
        if properties is None:
            return

        # override
        for p in properties:
            self.properties[p] = properties[p]

    def _initialize_logger(self):
        """Initialize logger for the tool server."""
        self.logger = log_utils.CustomLogger()
        # customize log
        self.logger.set_config_data(
            "stack",
            "%(call_stack)s",
        )
        self.logger.set_config_data("tool_server", self.name, -1)

    ###### connection
    def _start_connection(self):
        """Starts a connection to the tool server."""
        connection = self.properties['connection']

        self.connection = self._connect(**connection)

    def _stop_connection(self):
        """Stops the connection to the tool server."""
        self._disconnect()

    def _connect(self, **connection):
        """Connect to the tool server.

        Returns:
            A connection object or None
        """
        return None

    def _disconnect(self):
        """Disconnect from the tool server."""
        return None

    def _start(self):
        """Start the tool server, connect, and initialize tools."""
        # self.logger.info('Starting session {name}'.format(name=self.name))
        self._start_connection()

        # initialize tools
        self.initialize_tools()

        self.logger.info('Started server {name}'.format(name=self.name))

    def _stop(self):
        """Stop the tool server and disconnect."""
        self._stop_connection()

        self.logger.info('Stopped server {name}'.format(name=self.name))

    # override, depending on server type
    def start(self):
        """Start the tool server."""
        pass

    # tools
    def initialize_tools(self):
        """Initialize tools for the tool server."""
        pass

    # override
    def add_tool(self, tool):
        """Add a tool to the server.

        Parameters:
            tool: Tool object to add.
        """
        pass

    # override
    def list_tools(self):
        """List available tools on the server.

        Returns:
            List of tools
        """
        return []

__init__(name, properties={})

Initialize a ToolServer instance.

Parameters:

Name Type Description Default
name

Name of the tool server

required
properties

Properties of the tool server

{}
Source code in blue/tools/server.py
17
18
19
20
21
22
23
24
25
26
27
28
def __init__(self, name, properties={}):
    """Initialize a ToolServer instance.

    Parameters:
        name: Name of the tool server
        properties: Properties of the tool server
    """
    self.name = name

    self._initialize(properties=properties)

    self._start()

add_tool(tool)

Add a tool to the server.

Parameters:

Name Type Description Default
tool

Tool object to add.

required
Source code in blue/tools/server.py
117
118
119
120
121
122
123
def add_tool(self, tool):
    """Add a tool to the server.

    Parameters:
        tool: Tool object to add.
    """
    pass

initialize_tools()

Initialize tools for the tool server.

Source code in blue/tools/server.py
112
113
114
def initialize_tools(self):
    """Initialize tools for the tool server."""
    pass

list_tools()

List available tools on the server.

Returns:

Type Description

List of tools

Source code in blue/tools/server.py
126
127
128
129
130
131
132
def list_tools(self):
    """List available tools on the server.

    Returns:
        List of tools
    """
    return []

start()

Start the tool server.

Source code in blue/tools/server.py
107
108
109
def start(self):
    """Start the tool server."""
    pass
Last update: 2025-10-07