Skip to content

Commit 5ed5e20

Browse files
refactor: Update client configuration to use withClientInfo method for name and version
1 parent d533cf6 commit 5ed5e20

File tree

8 files changed

+49
-28
lines changed

8 files changed

+49
-28
lines changed

README.md

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ $fsServerConfig = new ServerConfig(
8787
);
8888

8989
$fsClient = Client::make()
90-
->withName('MyFileSystemApp')
91-
->withVersion('1.0')
90+
->withClientInfo('MyFileSystemApp', '1.0')
9291
->withCapabilities($clientCapabilities)
9392
// ->withLogger(new MyPsrLogger()) // Optional
9493
->withServerConfig($fsServerConfig)
@@ -227,15 +226,14 @@ use PhpMcp\Client\Client;
227226
// ... other use statements for Config, Logger etc...
228227

229228
$client = Client::make()
230-
->withName($clientName) // Required
231-
->withVersion($clientVersion) // Required
232-
->withCapabilities($clientCapabilities) // Optional (defaults provided)
233-
->withServerConfig($stdioConfig) // Required: Config for THE server
234-
->withLogger($myLogger) // Optional
235-
->withCache($myCache, 3600) // Optional (cache + TTL)
236-
->withEventDispatcher($myDispatcher) // Optional
237-
->withIdGenerator($myIdGenerator) // Optional
238-
->withLoop($myEventLoop) // Optional (defaults to Loop::get())
229+
->withClientInfo($clientName, $clientVersion) // Required
230+
->withCapabilities($clientCapabilities) // Optional (defaults provided)
231+
->withServerConfig($stdioConfig) // Required: Config for THE server
232+
->withLogger($myLogger) // Optional
233+
->withCache($myCache, 3600) // Optional (cache + TTL)
234+
->withEventDispatcher($myDispatcher) // Optional
235+
->withIdGenerator($myIdGenerator) // Optional
236+
->withLoop($myEventLoop) // Optional (defaults to Loop::get())
239237
->build();
240238
```
241239

examples/01-simple-stdio-sync.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@
3434
);
3535

3636
$stdioClient = Client::make()
37-
->withName($clientName)
38-
->withVersion($clientVersion)
37+
->withClientInfo($clientName, $clientVersion)
3938
->withCapabilities($clientCapabilities)
4039
->withLogger($logger)
4140
->withServerConfig($stdioServerConfig)

examples/02-simple-http-sync.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131
);
3232

3333
$httpClient = Client::make()
34-
->withName($clientName)
35-
->withVersion($clientVersion)
34+
->withClientInfo($clientName, $clientVersion)
3635
->withCapabilities($clientCapabilities)
3736
->withLogger($logger)
3837
->withServerConfig($httpServerConfig)

examples/03-multiple-servers-sync.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,14 @@
3939

4040
// --- Instantiate Clients ---
4141
$stdioClient = Client::make()
42-
->withName($clientName)
43-
->withVersion($clientVersion)
42+
->withClientInfo($clientName, $clientVersion)
4443
->withCapabilities($clientCapabilities)
4544
->withLogger($logger)
4645
->withServerConfig($stdioServerConfig)
4746
->build();
4847

4948
$httpClient = Client::make()
50-
->withName($clientName)
51-
->withVersion($clientVersion)
49+
->withClientInfo($clientName, $clientVersion)
5250
->withCapabilities($clientCapabilities)
5351
->withLogger($logger)
5452
->withServerConfig($httpServerConfig)

examples/04-multiple-servers-async.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,15 @@
4444

4545
// --- Build Clients ---
4646
$stdioClient = Client::make()
47-
->withName($clientName)
48-
->withVersion($clientVersion)
47+
->withClientInfo($clientName, $clientVersion)
4948
->withCapabilities($clientCapabilities)
5049
->withLogger($logger)
5150
->withLoop($loop)
5251
->withServerConfig($stdioServerConfig)
5352
->build();
5453

5554
$httpClient = Client::make()
56-
->withName($clientName)
57-
->withVersion($clientVersion)
55+
->withClientInfo($clientName, $clientVersion)
5856
->withCapabilities($clientCapabilities)
5957
->withLogger($logger)
6058
->withLoop($loop)

examples/05-openai-php-integration-sync/client.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@
7676
foreach ($serversToConfigure as $serverName => $serverConfig) {
7777
try {
7878
$mcpClients[$serverName] = Client::make()
79-
->withName($clientName)
80-
->withVersion($clientVersion)
79+
->withClientInfo($clientName, $clientVersion)
8180
->withCapabilities($clientCapabilities)
8281
->withLogger($logger)
8382
->withServerConfig($serverConfig)

src/ClientBuilder.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace PhpMcp\Client;
66

7+
use Deprecated;
78
use PhpMcp\Client\Exception\ConfigurationException;
89
use PhpMcp\Client\Factory\MessageIdGenerator;
910
use PhpMcp\Client\Factory\TransportFactory; // Added use
@@ -50,20 +51,30 @@ public static function make(): self
5051
return new self;
5152
}
5253

54+
/** @deprecated 1.0.1 Use withClientInfo() instead. */
5355
public function withName(string $name): self
5456
{
5557
$this->name = $name;
5658

5759
return $this;
5860
}
5961

62+
/** @deprecated 1.0.1 Use withClientInfo() instead. */
6063
public function withVersion(string $version): self
6164
{
6265
$this->version = $version;
6366

6467
return $this;
6568
}
6669

70+
public function withClientInfo(string $name, string $version): self
71+
{
72+
$this->name = $name;
73+
$this->version = $version;
74+
75+
return $this;
76+
}
77+
6778
public function withCapabilities(ClientCapabilities $capabilities): self
6879
{
6980
$this->capabilities = $capabilities;

tests/Unit/ClientBuilderTest.php

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@
4848
$dispatcher = Mockery::mock(EventDispatcherInterface::class);
4949
$loop = Mockery::mock(LoopInterface::class);
5050
$idGen = new MessageIdGenerator('test-');
51-
$server1 = new ServerConfig(name: 's1', transport: TransportType::Stdio, command: 'c');
52-
$server2 = new ServerConfig(name: 's2', transport: TransportType::Http, url: 'http://s');
51+
$server = new ServerConfig(name: 's1', transport: TransportType::Stdio, command: 'c');
5352

5453
// Act
5554
$client = Client::make()
@@ -61,7 +60,7 @@
6160
->withEventDispatcher($dispatcher)
6261
->withLoop($loop)
6362
->withIdGenerator($idGen)
64-
->withServerConfig($server1)
63+
->withServerConfig($server)
6564
->build();
6665

6766
// Assert
@@ -81,6 +80,26 @@
8180
expect($internalConfig->loop)->toBe($loop);
8281
});
8382

83+
it('builds client with client info', function () {
84+
$server = new ServerConfig(name: 's1', transport: TransportType::Stdio, command: 'c');
85+
86+
// Arrange
87+
$client = Client::make()
88+
->withClientInfo('TestClient', '1.0')
89+
->withServerConfig($server)
90+
->build();
91+
92+
// Assert
93+
expect($client)->toBeInstanceOf(Client::class);
94+
$reflector = new ReflectionClass($client);
95+
$configProp = $reflector->getProperty('clientConfig');
96+
$configProp->setAccessible(true);
97+
$internalConfig = $configProp->getValue($client);
98+
99+
expect($internalConfig->name)->toBe('TestClient');
100+
expect($internalConfig->version)->toBe('1.0');
101+
});
102+
84103
it('throws exception if client name not provided', function () {
85104
Client::make()->build();
86105
})->throws(ConfigurationException::class, 'Name must be provided using withName().');

0 commit comments

Comments
 (0)