Skip to content

Commit 96ff2ce

Browse files
fix: improve error handling in ServerBuilder manual registration
This fixes the poor error reporting where users would only see generic "X error(s) occurred during manual registration" instead of the actual underlying error that caused the registration failure.
1 parent 9e4806e commit 96ff2ce

File tree

1 file changed

+5
-10
lines changed

1 file changed

+5
-10
lines changed

src/ServerBuilder.php

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
use PhpMcp\Server\Contracts\SessionHandlerInterface;
1818
use PhpMcp\Server\Defaults\BasicContainer;
1919
use PhpMcp\Server\Exception\ConfigurationException;
20-
use PhpMcp\Server\Exception\DefinitionException;
20+
2121
use PhpMcp\Server\Session\ArraySessionHandler;
2222
use PhpMcp\Server\Session\CacheSessionHandler;
2323
use PhpMcp\Server\Session\SessionManager;
@@ -286,7 +286,6 @@ private function registerManualElements(Registry $registry, LoggerInterface $log
286286
return;
287287
}
288288

289-
$errorCount = 0;
290289
$docBlockParser = new Utils\DocBlockParser($logger);
291290
$schemaGenerator = new Utils\SchemaGenerator($docBlockParser);
292291

@@ -308,8 +307,8 @@ private function registerManualElements(Registry $registry, LoggerInterface $log
308307

309308
$logger->debug("Registered manual tool {$name} from handler {$className}::{$methodName}");
310309
} catch (Throwable $e) {
311-
$errorCount++;
312310
$logger->error('Failed to register manual tool', ['handler' => $data['handler'], 'name' => $data['name'], 'exception' => $e]);
311+
throw new ConfigurationException("Error registering manual tool '{$data['name']}': {$e->getMessage()}", 0, $e);
313312
}
314313
}
315314

@@ -334,8 +333,8 @@ private function registerManualElements(Registry $registry, LoggerInterface $log
334333

335334
$logger->debug("Registered manual resource {$name} from handler {$className}::{$methodName}");
336335
} catch (Throwable $e) {
337-
$errorCount++;
338336
$logger->error('Failed to register manual resource', ['handler' => $data['handler'], 'uri' => $data['uri'], 'exception' => $e]);
337+
throw new ConfigurationException("Error registering manual resource '{$data['uri']}': {$e->getMessage()}", 0, $e);
339338
}
340339
}
341340

@@ -360,8 +359,8 @@ private function registerManualElements(Registry $registry, LoggerInterface $log
360359

361360
$logger->debug("Registered manual template {$name} from handler {$className}::{$methodName}");
362361
} catch (Throwable $e) {
363-
$errorCount++;
364362
$logger->error('Failed to register manual template', ['handler' => $data['handler'], 'uriTemplate' => $data['uriTemplate'], 'exception' => $e]);
363+
throw new ConfigurationException("Error registering manual resource template '{$data['uriTemplate']}': {$e->getMessage()}", 0, $e);
365364
}
366365
}
367366

@@ -401,15 +400,11 @@ private function registerManualElements(Registry $registry, LoggerInterface $log
401400

402401
$logger->debug("Registered manual prompt {$name} from handler {$className}::{$methodName}");
403402
} catch (Throwable $e) {
404-
$errorCount++;
405403
$logger->error('Failed to register manual prompt', ['handler' => $data['handler'], 'name' => $data['name'], 'exception' => $e]);
404+
throw new ConfigurationException("Error registering manual prompt '{$data['name']}': {$e->getMessage()}", 0, $e);
406405
}
407406
}
408407

409-
if ($errorCount > 0) {
410-
throw new DefinitionException("{$errorCount} error(s) occurred during manual element registration. Check logs.");
411-
}
412-
413408
$logger->debug('Manual element registration complete.');
414409
}
415410

0 commit comments

Comments
 (0)