```php title="PHP" ['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); ```