Skip to content

Commit 7c65b85

Browse files
fix: simplify exception signatures to accept simple messages
1 parent e094c0f commit 7c65b85

File tree

6 files changed

+9
-36
lines changed

6 files changed

+9
-36
lines changed

src/Exception/PromptGetException.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,9 @@
1111

1212
namespace Mcp\Exception;
1313

14-
use Mcp\Schema\Request\GetPromptRequest;
15-
1614
/**
1715
* @author Tobias Nyholm <[email protected]>
1816
*/
1917
final class PromptGetException extends \RuntimeException implements ExceptionInterface
2018
{
21-
public function __construct(
22-
public readonly GetPromptRequest $request,
23-
?\Throwable $previous = null,
24-
) {
25-
parent::__construct(\sprintf('Handling prompt "%s" failed with error: "%s".', $request->name, $previous->getMessage()), previous: $previous);
26-
}
2719
}

src/Exception/ResourceReadException.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,9 @@
1111

1212
namespace Mcp\Exception;
1313

14-
use Mcp\Schema\Request\ReadResourceRequest;
15-
1614
/**
1715
* @author Tobias Nyholm <[email protected]>
1816
*/
1917
final class ResourceReadException extends \RuntimeException implements ExceptionInterface
2018
{
21-
public function __construct(
22-
public readonly ReadResourceRequest $request,
23-
?\Throwable $previous = null,
24-
) {
25-
parent::__construct(\sprintf('Reading resource "%s" failed with error: "%s".', $request->uri, $previous?->getMessage() ?? ''), previous: $previous);
26-
}
2719
}

src/Exception/ToolCallException.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,9 @@
1111

1212
namespace Mcp\Exception;
1313

14-
use Mcp\Schema\Request\CallToolRequest;
15-
1614
/**
1715
* @author Tobias Nyholm <[email protected]>
1816
*/
1917
final class ToolCallException extends \RuntimeException implements ExceptionInterface
2018
{
21-
public function __construct(
22-
public readonly CallToolRequest $request,
23-
?\Throwable $previous = null,
24-
) {
25-
parent::__construct(\sprintf('Tool call "%s" failed with error: "%s".', $request->name, $previous?->getMessage() ?? ''), previous: $previous);
26-
}
2719
}

tests/Unit/Server/Handler/Request/CallToolHandlerTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ public function testHandleToolNotFoundExceptionReturnsError(): void
180180
public function testHandleToolCallExceptionReturnsResponseWithErrorResult(): void
181181
{
182182
$request = $this->createCallToolRequest('failing_tool', ['param' => 'value']);
183-
$exception = new ToolCallException($request, new \RuntimeException('Tool execution failed'));
183+
$exception = new ToolCallException('Tool execution failed');
184184

185185
$toolReference = $this->createMock(ToolReference::class);
186186
$this->referenceProvider
@@ -209,7 +209,7 @@ public function testHandleToolCallExceptionReturnsResponseWithErrorResult(): voi
209209
$this->assertTrue($result->isError);
210210
$this->assertCount(1, $result->content);
211211
$this->assertInstanceOf(TextContent::class, $result->content[0]);
212-
$this->assertEquals('Tool call "failing_tool" failed with error: "Tool execution failed".', $result->content[0]->text);
212+
$this->assertEquals('Tool execution failed', $result->content[0]->text);
213213
}
214214

215215
public function testHandleWithNullResult(): void
@@ -252,7 +252,7 @@ public function testConstructorWithDefaultLogger(): void
252252
public function testHandleLogsErrorWithCorrectParameters(): void
253253
{
254254
$request = $this->createCallToolRequest('test_tool', ['key1' => 'value1', 'key2' => 42]);
255-
$exception = new ToolCallException($request, new \RuntimeException('Custom error message'));
255+
$exception = new ToolCallException('Custom error message');
256256

257257
$toolReference = $this->createMock(ToolReference::class);
258258
$this->referenceProvider
@@ -271,7 +271,7 @@ public function testHandleLogsErrorWithCorrectParameters(): void
271271
->expects($this->once())
272272
->method('error')
273273
->with(
274-
'Error while executing tool "test_tool": "Tool call "test_tool" failed with error: "Custom error message".".',
274+
'Error while executing tool "test_tool": "Custom error message".',
275275
[
276276
'tool' => 'test_tool',
277277
'arguments' => ['key1' => 'value1', 'key2' => 42, '_session' => $this->session],
@@ -289,7 +289,7 @@ public function testHandleLogsErrorWithCorrectParameters(): void
289289
$this->assertTrue($result->isError);
290290
$this->assertCount(1, $result->content);
291291
$this->assertInstanceOf(TextContent::class, $result->content[0]);
292-
$this->assertEquals('Tool call "test_tool" failed with error: "Custom error message".', $result->content[0]->text);
292+
$this->assertEquals('Custom error message', $result->content[0]->text);
293293
}
294294

295295
public function testHandleGenericExceptionReturnsError(): void

tests/Unit/Server/Handler/Request/GetPromptHandlerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ public function testHandlePromptNotFoundExceptionReturnsError(): void
250250
public function testHandlePromptGetExceptionReturnsError(): void
251251
{
252252
$request = $this->createGetPromptRequest('failing_prompt');
253-
$exception = new PromptGetException($request, new \RuntimeException('Failed to get prompt'));
253+
$exception = new PromptGetException('Failed to get prompt');
254254

255255
$this->referenceProvider
256256
->expects($this->once())
@@ -263,7 +263,7 @@ public function testHandlePromptGetExceptionReturnsError(): void
263263
$this->assertInstanceOf(Error::class, $response);
264264
$this->assertEquals($request->getId(), $response->id);
265265
$this->assertEquals(Error::INTERNAL_ERROR, $response->code);
266-
$this->assertEquals('Handling prompt "failing_prompt" failed with error: "Failed to get prompt".', $response->message);
266+
$this->assertEquals('Failed to get prompt', $response->message);
267267
}
268268

269269
public function testHandlePromptGetWithComplexArguments(): void

tests/Unit/Server/Handler/Request/ReadResourceHandlerTest.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,10 +198,7 @@ public function testHandleResourceReadExceptionReturnsActualErrorMessage(): void
198198
{
199199
$uri = 'file://corrupted/file.txt';
200200
$request = $this->createReadResourceRequest($uri);
201-
$exception = new ResourceReadException(
202-
$request,
203-
new \RuntimeException('Failed to read resource: corrupted data'),
204-
);
201+
$exception = new ResourceReadException('Failed to read resource: corrupted data');
205202

206203
$this->referenceProvider
207204
->expects($this->once())
@@ -214,7 +211,7 @@ public function testHandleResourceReadExceptionReturnsActualErrorMessage(): void
214211
$this->assertInstanceOf(Error::class, $response);
215212
$this->assertEquals($request->getId(), $response->id);
216213
$this->assertEquals(Error::INTERNAL_ERROR, $response->code);
217-
$this->assertEquals('Reading resource "file://corrupted/file.txt" failed with error: "Failed to read resource: corrupted data".', $response->message);
214+
$this->assertEquals('Failed to read resource: corrupted data', $response->message);
218215
}
219216

220217
public function testHandleGenericExceptionReturnsGenericError(): void

0 commit comments

Comments
 (0)