@@ -70,6 +70,48 @@ public function log($level, \Stringable|string $message, array $context = []): v
70
70
->withCapabilities (ServerCapabilities::make (completions: true , logging: true ))
71
71
->withLogger ($ logger )
72
72
->withContainer ($ container )
73
+ ->withTool (
74
+ function (float $ a , float $ b , string $ operation = 'add ' ): array {
75
+ $ result = match ($ operation ) {
76
+ 'add ' => $ a + $ b ,
77
+ 'subtract ' => $ a - $ b ,
78
+ 'multiply ' => $ a * $ b ,
79
+ 'divide ' => $ b != 0 ? $ a / $ b : throw new \InvalidArgumentException ('Cannot divide by zero ' ),
80
+ default => throw new \InvalidArgumentException ("Unknown operation: {$ operation }" )
81
+ };
82
+
83
+ return [
84
+ 'operation ' => $ operation ,
85
+ 'operands ' => [$ a , $ b ],
86
+ 'result ' => $ result
87
+ ];
88
+ },
89
+ name: 'calculator ' ,
90
+ description: 'Perform basic math operations (add, subtract, multiply, divide) '
91
+ )
92
+ ->withResource (
93
+ function (): array {
94
+ $ memoryUsage = memory_get_usage (true );
95
+ $ memoryPeak = memory_get_peak_usage (true );
96
+ $ uptime = time () - $ _SERVER ['REQUEST_TIME_FLOAT ' ] ?? time ();
97
+ $ serverSoftware = $ _SERVER ['SERVER_SOFTWARE ' ] ?? 'CLI ' ;
98
+
99
+ return [
100
+ 'server_time ' => date ('Y-m-d H:i:s ' ),
101
+ 'uptime_seconds ' => $ uptime ,
102
+ 'memory_usage_mb ' => round ($ memoryUsage / 1024 / 1024 , 2 ),
103
+ 'memory_peak_mb ' => round ($ memoryPeak / 1024 / 1024 , 2 ),
104
+ 'php_version ' => PHP_VERSION ,
105
+ 'server_software ' => $ serverSoftware ,
106
+ 'operating_system ' => PHP_OS_FAMILY ,
107
+ 'status ' => 'healthy '
108
+ ];
109
+ },
110
+ uri: 'system://status ' ,
111
+ name: 'system_status ' ,
112
+ description: 'Current system status and runtime information ' ,
113
+ mimeType: 'application/json '
114
+ )
73
115
->build ();
74
116
75
117
$ server ->discover (__DIR__ , ['. ' ]);
0 commit comments