Skip to content

Commit bcdc258

Browse files
feat: add complete() method for completion/complete requests
1 parent a82d00c commit bcdc258

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

src/Client/Client.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
use Mcp\Schema\JsonRpc\Error;
2424
use Mcp\Schema\JsonRpc\Request;
2525
use Mcp\Schema\JsonRpc\Response;
26+
use Mcp\Schema\PromptReference;
2627
use Mcp\Schema\Request\CallToolRequest;
28+
use Mcp\Schema\Request\CompletionCompleteRequest;
2729
use Mcp\Schema\Request\GetPromptRequest;
2830
use Mcp\Schema\Request\ListPromptsRequest;
2931
use Mcp\Schema\Request\ListResourcesRequest;
@@ -32,7 +34,9 @@
3234
use Mcp\Schema\Request\PingRequest;
3335
use Mcp\Schema\Request\ReadResourceRequest;
3436
use Mcp\Schema\Request\SetLogLevelRequest;
37+
use Mcp\Schema\ResourceReference;
3538
use Mcp\Schema\Result\CallToolResult;
39+
use Mcp\Schema\Result\CompletionCompleteResult;
3640
use Mcp\Schema\Result\GetPromptResult;
3741
use Mcp\Schema\Result\ListPromptsResult;
3842
use Mcp\Schema\Result\ListResourcesResult;
@@ -223,6 +227,22 @@ public function setLoggingLevel(LoggingLevel $level): void
223227
$this->doRequest(new SetLogLevelRequest($level));
224228
}
225229

230+
/**
231+
* Request completion suggestions for a prompt or resource argument.
232+
*
233+
* @param PromptReference|ResourceReference $ref The prompt or resource reference
234+
* @param array{name: string, value: string} $argument The argument to complete
235+
*/
236+
public function complete(PromptReference|ResourceReference $ref, array $argument): CompletionCompleteResult
237+
{
238+
$this->ensureConnected();
239+
240+
return $this->doRequest(
241+
new CompletionCompleteRequest($ref, $argument),
242+
CompletionCompleteResult::class,
243+
);
244+
}
245+
226246
/**
227247
* Get the server info received during initialization.
228248
*

src/Schema/Result/CompletionCompleteResult.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,18 @@ public function jsonSerialize(): array
6060

6161
return ['completion' => $completion];
6262
}
63+
64+
/**
65+
* @param array<string, mixed> $data
66+
*/
67+
public static function fromArray(array $data): self
68+
{
69+
$completion = $data['completion'] ?? [];
70+
71+
return new self(
72+
$completion['values'] ?? [],
73+
$completion['total'] ?? null,
74+
$completion['hasMore'] ?? null,
75+
);
76+
}
6377
}

0 commit comments

Comments
 (0)