[Examples] Demo pre-built instance handlers + inspector coverage (#390)

* [Tests] Bump MCP Inspector to 0.22.0 for 2025-11-25 protocol

The pinned inspector 0.17.2 predates the protocol version bump to
2025-11-25 (v0.6.0) and rejects the handshake with "Server's protocol
version is not supported", failing every inspector snapshot test. 0.22.0
negotiates the current protocol; the full inspector suite passes against
it (95 tests, 7 pre-existing skips).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* [Examples] Demo pre-built instance handler in combined-registration

Extends the combined-registration example with a third handler style:
a pre-built object instance `[$instance, 'method']`, alongside the
existing discovered and manual class-string handlers. PreconfiguredGreeter
takes a scalar constructor argument neither the container-less
`new $className()` fallback nor the auto-wiring container can build, so it
can only be registered as an already-constructed instance — exercising the
resolver path added in the parent branch.

Adds an inspector snapshot case (tools/call instance_greeter) and updates
the tools/list snapshot.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Christopher Hertel 2026-07-15 00:23:20 +02:00 • committed by GitHub
commit 1fed089d71
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 99 additions and 7 deletions

View file

@ -25,6 +25,14 @@ final class HttpCombinedRegistrationTest extends HttpInspectorSnapshotTestCase
],
'testName' => 'manual_greeter',
],
'Instance Greeter Tool (pre-built object handler)' => [
'method' => 'tools/call',
'options' => [
'toolName' => 'instance_greeter',
'toolArgs' => ['name' => 'HTTP Test User'],
],
'testName' => 'instance_greeter',
],
'Discovered Status Check Tool' => [
'method' => 'tools/call',
'options' => [

View file

@ -0,0 +1,9 @@
{
"content": [
{
"type": "text",
"text": "Willkommen, HTTP Test User!"
}
],
"isError": false
}

View file

@ -16,6 +16,22 @@
]
}
},
{
"name": "instance_greeter",
"description": "A tool registered as a pre-built object instance.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "the name to greet"
}
},
"required": [
"name"
]
}
},
{
"name": "discovered_status_check",
"description": "A tool discovered via attributes.",

View file

@ -18,7 +18,7 @@ use Symfony\Component\Process\Process;
abstract class InspectorSnapshotTestCase extends TestCase
{
private const INSPECTOR_VERSION = '0.17.2';
private const INSPECTOR_VERSION = '0.22.0';
/** @param array<string, mixed> $options */
#[DataProvider('provideMethods')]