Skip to content

Commit 1779f4a

Browse files
committed
rename CallContext -> Context, add to prompts and resources
1 parent 6e446db commit 1779f4a

18 files changed

+116
-106
lines changed

src/CallContext.php

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/Context.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php declare(strict_types = 1);
2+
namespace PhpMcp\Server;
3+
4+
use PhpMcp\Server\Contracts\SessionInterface;
5+
use Psr\Http\Message\ServerRequestInterface;
6+
7+
final class Context
8+
{
9+
public function __construct(
10+
public readonly ?ServerRequestInterface $request,
11+
public readonly SessionInterface $session
12+
)
13+
{
14+
}
15+
}

src/Dispatcher.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public function __construct(
6161
$this->schemaValidator ??= new SchemaValidator($this->logger);
6262
}
6363

64-
public function handleRequest(Request $request, SessionInterface $session, CallContext $callContext): Result
64+
public function handleRequest(Request $request, SessionInterface $session, Context $requestContext): Result
6565
{
6666
switch ($request->method) {
6767
case 'initialize':
@@ -75,7 +75,7 @@ public function handleRequest(Request $request, SessionInterface $session, CallC
7575
return $this->handleToolList($request);
7676
case 'tools/call':
7777
$request = CallToolRequest::fromRequest($request);
78-
return $this->handleToolCall($request, $callContext);
78+
return $this->handleToolCall($request, $requestContext);
7979
case 'resources/list':
8080
$request = ListResourcesRequest::fromRequest($request);
8181
return $this->handleResourcesList($request);
@@ -84,7 +84,7 @@ public function handleRequest(Request $request, SessionInterface $session, CallC
8484
return $this->handleResourceTemplateList($request);
8585
case 'resources/read':
8686
$request = ReadResourceRequest::fromRequest($request);
87-
return $this->handleResourceRead($request);
87+
return $this->handleResourceRead($request, $requestContext);
8888
case 'resources/subscribe':
8989
$request = ResourceSubscribeRequest::fromRequest($request);
9090
return $this->handleResourceSubscribe($request, $session);
@@ -96,7 +96,7 @@ public function handleRequest(Request $request, SessionInterface $session, CallC
9696
return $this->handlePromptsList($request);
9797
case 'prompts/get':
9898
$request = GetPromptRequest::fromRequest($request);
99-
return $this->handlePromptGet($request);
99+
return $this->handlePromptGet($request, $requestContext);
100100
case 'logging/setLevel':
101101
$request = SetLogLevelRequest::fromRequest($request);
102102
return $this->handleLoggingSetLevel($request, $session);
@@ -151,7 +151,7 @@ public function handleToolList(ListToolsRequest $request): ListToolsResult
151151
return new ListToolsResult(array_values($pagedItems), $nextCursor);
152152
}
153153

154-
public function handleToolCall(CallToolRequest $request, CallContext $callContext): CallToolResult
154+
public function handleToolCall(CallToolRequest $request, Context $requestContext): CallToolResult
155155
{
156156
$toolName = $request->name;
157157
$arguments = $request->arguments;
@@ -184,7 +184,7 @@ public function handleToolCall(CallToolRequest $request, CallContext $callContex
184184
}
185185

186186
try {
187-
$result = $registeredTool->call($this->container, $arguments, $callContext);
187+
$result = $registeredTool->call($this->container, $arguments, $requestContext);
188188

189189
return new CallToolResult($result, false);
190190
} catch (JsonException $e) {
@@ -222,7 +222,7 @@ public function handleResourceTemplateList(ListResourceTemplatesRequest $request
222222
return new ListResourceTemplatesResult(array_values($pagedItems), $nextCursor);
223223
}
224224

225-
public function handleResourceRead(ReadResourceRequest $request): ReadResourceResult
225+
public function handleResourceRead(ReadResourceRequest $request, Context $requestContext): ReadResourceResult
226226
{
227227
$uri = $request->uri;
228228

@@ -233,7 +233,7 @@ public function handleResourceRead(ReadResourceRequest $request): ReadResourceRe
233233
}
234234

235235
try {
236-
$result = $registeredResource->read($this->container, $uri);
236+
$result = $registeredResource->read($this->container, $uri, $requestContext);
237237

238238
return new ReadResourceResult($result);
239239
} catch (JsonException $e) {
@@ -270,7 +270,7 @@ public function handlePromptsList(ListPromptsRequest $request): ListPromptsResul
270270
return new ListPromptsResult(array_values($pagedItems), $nextCursor);
271271
}
272272

273-
public function handlePromptGet(GetPromptRequest $request): GetPromptResult
273+
public function handlePromptGet(GetPromptRequest $request, Context $requestContext): GetPromptResult
274274
{
275275
$promptName = $request->name;
276276
$arguments = $request->arguments;
@@ -289,7 +289,7 @@ public function handlePromptGet(GetPromptRequest $request): GetPromptResult
289289
}
290290

291291
try {
292-
$result = $registeredPrompt->get($this->container, $arguments);
292+
$result = $registeredPrompt->get($this->container, $arguments, $requestContext);
293293

294294
return new GetPromptResult($result, $registeredPrompt->schema->description);
295295
} catch (JsonException $e) {

src/Elements/RegisteredElement.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use InvalidArgumentException;
88
use JsonSerializable;
9-
use PhpMcp\Server\CallContext;
9+
use PhpMcp\Server\Context;
1010
use PhpMcp\Server\Exception\McpServerException;
1111
use Psr\Container\ContainerInterface;
1212
use ReflectionException;
@@ -31,33 +31,33 @@ public function __construct(
3131
$this->isManual = $isManual;
3232
}
3333

34-
public function handle(ContainerInterface $container, array $arguments, ?CallContext $callContext = null): mixed
34+
public function handle(ContainerInterface $container, array $arguments, ?Context $requestContext = null): mixed
3535
{
3636
if (is_string($this->handler)) {
3737
if (class_exists($this->handler) && method_exists($this->handler, '__invoke')) {
3838
$reflection = new \ReflectionMethod($this->handler, '__invoke');
39-
$arguments = $this->prepareArguments($reflection, $arguments, $callContext);
39+
$arguments = $this->prepareArguments($reflection, $arguments, $requestContext);
4040
$instance = $container->get($this->handler);
4141
return call_user_func($instance, ...$arguments);
4242
}
4343

4444
if (function_exists($this->handler)) {
4545
$reflection = new \ReflectionFunction($this->handler);
46-
$arguments = $this->prepareArguments($reflection, $arguments, $callContext);
46+
$arguments = $this->prepareArguments($reflection, $arguments, $requestContext);
4747
return call_user_func($this->handler, ...$arguments);
4848
}
4949
}
5050

5151
if (is_callable($this->handler)) {
5252
$reflection = $this->getReflectionForCallable($this->handler);
53-
$arguments = $this->prepareArguments($reflection, $arguments, $callContext);
53+
$arguments = $this->prepareArguments($reflection, $arguments, $requestContext);
5454
return call_user_func($this->handler, ...$arguments);
5555
}
5656

5757
if (is_array($this->handler)) {
5858
[$className, $methodName] = $this->handler;
5959
$reflection = new \ReflectionMethod($className, $methodName);
60-
$arguments = $this->prepareArguments($reflection, $arguments, $callContext);
60+
$arguments = $this->prepareArguments($reflection, $arguments, $requestContext);
6161

6262
$instance = $container->get($className);
6363
return call_user_func([$instance, $methodName], ...$arguments);
@@ -67,7 +67,7 @@ public function handle(ContainerInterface $container, array $arguments, ?CallCon
6767
}
6868

6969

70-
protected function prepareArguments(\ReflectionFunctionAbstract $reflection, array $arguments, ?CallContext $callContext): array
70+
protected function prepareArguments(\ReflectionFunctionAbstract $reflection, array $arguments, ?Context $requestContext): array
7171
{
7272
$finalArgs = [];
7373

@@ -77,8 +77,8 @@ protected function prepareArguments(\ReflectionFunctionAbstract $reflection, arr
7777
$paramType = $parameter->getType();
7878
$paramPosition = $parameter->getPosition();
7979

80-
if ($paramType?->getName() === CallContext::class) {
81-
$finalArgs[$paramPosition] = $callContext;
80+
if ($paramType?->getName() === Context::class) {
81+
$finalArgs[$paramPosition] = $requestContext;
8282

8383
continue;
8484
}

src/Elements/RegisteredPrompt.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use PhpMcp\Schema\Content\TextResourceContents;
1616
use PhpMcp\Schema\Enum\Role;
1717
use PhpMcp\Schema\Result\CompletionCompleteResult;
18+
use PhpMcp\Server\Context;
1819
use PhpMcp\Server\Contracts\CompletionProviderInterface;
1920
use PhpMcp\Server\Contracts\SessionInterface;
2021
use Psr\Container\ContainerInterface;
@@ -43,9 +44,9 @@ public static function make(Prompt $schema, callable|array|string $handler, bool
4344
* @param array $arguments
4445
* @return PromptMessage[]
4546
*/
46-
public function get(ContainerInterface $container, array $arguments): array
47+
public function get(ContainerInterface $container, array $arguments, Context $requestContext): array
4748
{
48-
$result = $this->handle($container, $arguments);
49+
$result = $this->handle($container, $arguments, $requestContext);
4950

5051
return $this->formatResult($result);
5152
}

src/Elements/RegisteredResource.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use PhpMcp\Schema\Content\ResourceContents;
1010
use PhpMcp\Schema\Content\TextResourceContents;
1111
use PhpMcp\Schema\Resource;
12+
use PhpMcp\Server\Context;
1213
use Psr\Container\ContainerInterface;
1314
use Throwable;
1415

@@ -32,9 +33,9 @@ public static function make(Resource $schema, callable|array|string $handler, bo
3233
*
3334
* @return array<TextResourceContents|BlobResourceContents> Array of ResourceContents objects.
3435
*/
35-
public function read(ContainerInterface $container, string $uri): array
36+
public function read(ContainerInterface $container, string $uri, Context $requestContext): array
3637
{
37-
$result = $this->handle($container, ['uri' => $uri]);
38+
$result = $this->handle($container, ['uri' => $uri], $requestContext);
3839

3940
return $this->formatResult($result, $uri, $this->schema->mimeType);
4041
}

src/Elements/RegisteredResourceTemplate.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use PhpMcp\Schema\Content\TextResourceContents;
1111
use PhpMcp\Schema\ResourceTemplate;
1212
use PhpMcp\Schema\Result\CompletionCompleteResult;
13+
use PhpMcp\Server\Context;
1314
use PhpMcp\Server\Contracts\SessionInterface;
1415
use Psr\Container\ContainerInterface;
1516
use Throwable;
@@ -41,11 +42,11 @@ public static function make(ResourceTemplate $schema, callable|array|string $han
4142
*
4243
* @return array<TextResourceContents|BlobResourceContents> Array of ResourceContents objects.
4344
*/
44-
public function read(ContainerInterface $container, string $uri): array
45+
public function read(ContainerInterface $container, string $uri, Context $requestContext): array
4546
{
4647
$arguments = array_merge($this->uriVariables, ['uri' => $uri]);
4748

48-
$result = $this->handle($container, $arguments);
49+
$result = $this->handle($container, $arguments, $requestContext);
4950

5051
return $this->formatResult($result, $uri, $this->schema->mimeType);
5152
}

src/Elements/RegisteredTool.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use PhpMcp\Schema\Content\Content;
88
use PhpMcp\Schema\Content\TextContent;
9-
use PhpMcp\Server\CallContext;
9+
use PhpMcp\Server\Context;
1010
use Psr\Container\ContainerInterface;
1111
use PhpMcp\Schema\Tool;
1212
use Throwable;
@@ -31,9 +31,9 @@ public static function make(Tool $schema, callable|array|string $handler, bool $
3131
*
3232
* @return Content[] The content items for CallToolResult.
3333
*/
34-
public function call(ContainerInterface $container, array $arguments, CallContext $callContext): array
34+
public function call(ContainerInterface $container, array $arguments, Context $requestContext): array
3535
{
36-
$result = $this->handle($container, $arguments, $callContext);
36+
$result = $this->handle($container, $arguments, $requestContext);
3737

3838
return $this->formatResult($result);
3939
}

src/Protocol.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -140,17 +140,17 @@ public function processMessage(Request|Notification|BatchRequest $message, strin
140140
$session->set('client_info', ['name' => 'stateless-client', 'version' => '1.0.0']);
141141
}
142142

143-
$callContext = new CallContext();
144-
if ($context['request'] ?? null) {
145-
$callContext->request = $context['request'];
146-
}
143+
$requestContext = new Context(
144+
$context['request'] ?? null,
145+
$session,
146+
);
147147

148148
$response = null;
149149

150150
if ($message instanceof BatchRequest) {
151-
$response = $this->processBatchRequest($message, $session, $callContext);
151+
$response = $this->processBatchRequest($message, $session, $requestContext);
152152
} elseif ($message instanceof Request) {
153-
$response = $this->processRequest($message, $session, $callContext);
153+
$response = $this->processRequest($message, $session, $requestContext);
154154
} elseif ($message instanceof Notification) {
155155
$this->processNotification($message, $session);
156156
}
@@ -173,7 +173,7 @@ public function processMessage(Request|Notification|BatchRequest $message, strin
173173
/**
174174
* Process a batch message
175175
*/
176-
private function processBatchRequest(BatchRequest $batch, SessionInterface $session, CallContext $callContext): ?BatchResponse
176+
private function processBatchRequest(BatchRequest $batch, SessionInterface $session, Context $requestContext): ?BatchResponse
177177
{
178178
$items = [];
179179

@@ -182,7 +182,7 @@ private function processBatchRequest(BatchRequest $batch, SessionInterface $sess
182182
}
183183

184184
foreach ($batch->getRequests() as $request) {
185-
$items[] = $this->processRequest($request, $session, $callContext);
185+
$items[] = $this->processRequest($request, $session, $requestContext);
186186
}
187187

188188
return empty($items) ? null : new BatchResponse($items);
@@ -191,7 +191,7 @@ private function processBatchRequest(BatchRequest $batch, SessionInterface $sess
191191
/**
192192
* Process a request message
193193
*/
194-
private function processRequest(Request $request, SessionInterface $session, CallContext $callContext): Response|Error
194+
private function processRequest(Request $request, SessionInterface $session, Context $requestContext): Response|Error
195195
{
196196
try {
197197
if ($request->method !== 'initialize') {
@@ -200,7 +200,7 @@ private function processRequest(Request $request, SessionInterface $session, Cal
200200

201201
$this->assertRequestCapability($request->method);
202202

203-
$result = $this->dispatcher->handleRequest($request, $session, $callContext);
203+
$result = $this->dispatcher->handleRequest($request, $session, $requestContext);
204204

205205
return Response::make($request->id, $result);
206206
} catch (McpServerException $e) {

src/Utils/SchemaGenerator.php

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

55
use phpDocumentor\Reflection\DocBlock\Tags\Param;
66
use PhpMcp\Server\Attributes\Schema;
7-
use PhpMcp\Server\CallContext;
7+
use PhpMcp\Server\Context;
88
use ReflectionEnum;
99
use ReflectionIntersectionType;
1010
use ReflectionMethod;
@@ -419,7 +419,7 @@ private function parseParametersInfo(\ReflectionMethod|\ReflectionFunction $refl
419419

420420
$reflectionType = $rp->getType();
421421

422-
if ($reflectionType instanceof ReflectionNamedType && $reflectionType?->getName() === CallContext::class) {
422+
if ($reflectionType instanceof ReflectionNamedType && $reflectionType?->getName() === Context::class) {
423423
continue;
424424
}
425425

0 commit comments

Comments
 (0)