This commit is contained in:
39
docs/snippets/php/mcp/mcp_custom_client.md
Normal file
39
docs/snippets/php/mcp/mcp_custom_client.md
Normal file
@@ -0,0 +1,39 @@
|
||||
```php title="PHP"
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
$descriptors = [
|
||||
0 => ['pipe', 'r'],
|
||||
1 => ['pipe', 'w'],
|
||||
2 => ['pipe', 'w'],
|
||||
];
|
||||
|
||||
$process = proc_open(['kreuzberg', 'mcp'], $descriptors, $pipes);
|
||||
if (!is_resource($process)) {
|
||||
throw new RuntimeException('failed to spawn kreuzberg mcp');
|
||||
}
|
||||
|
||||
$request = [
|
||||
'method' => 'tools/call',
|
||||
'params' => [
|
||||
'name' => 'extract_file',
|
||||
'arguments' => [
|
||||
'path' => 'document.pdf',
|
||||
'async' => true,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
fwrite($pipes[0], json_encode($request, JSON_THROW_ON_ERROR) . "\n");
|
||||
fclose($pipes[0]);
|
||||
|
||||
$response = fgets($pipes[1]);
|
||||
if ($response !== false) {
|
||||
echo $response;
|
||||
}
|
||||
|
||||
fclose($pipes[1]);
|
||||
fclose($pipes[2]);
|
||||
proc_close($process);
|
||||
```
|
||||
Reference in New Issue
Block a user