Skip to content

Commit a48f96a

Browse files
author
klapaudius
committed
Remove InMemoryAdapter and integrate RedisAdapter as default
Deprecated the InMemoryAdapter and updated configurations to use RedisAdapter as the default SSE adapter. Enhanced logging in MessageController and SseTransport for better traceability and testing. Adjusted tests and dependencies accordingly.
1 parent 2914da3 commit a48f96a

File tree

5 files changed

+14
-79
lines changed

5 files changed

+14
-79
lines changed

src/Controllers/MessageController.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,22 @@
33
namespace KLP\KlpMcpServer\Controllers;
44

55
use KLP\KlpMcpServer\Server\MCPServer;
6+
use Psr\Log\LoggerInterface;
67
use Symfony\Component\HttpFoundation\JsonResponse;
78
use Symfony\Component\HttpFoundation\Request;
89

910
class MessageController
1011
{
11-
public function __construct(private readonly MCPServer $server) {}
12+
public function __construct(private readonly MCPServer $server, private readonly LoggerInterface $logger) {}
1213

1314
public function handle(Request $request)
1415
{
1516
$sessionId = $request->request->get('sessionId') ?? $request->query->get('sessionId');
1617

1718
$messageJson = json_decode($request->getContent(), true, flags: JSON_THROW_ON_ERROR);
1819

20+
$this->logger?->debug('Received message for clientId:'.$sessionId, ['message' => $messageJson]);
21+
1922
$this->server->requestMessage(clientId: $sessionId, message: $messageJson);
2023

2124
return new JsonResponse(['success' => true]);

src/Resources/config/packages/klp_mcp_server.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ klp_mcp_server:
5454
# generating the tool list for the client.
5555
# Register your tools here
5656
tools:
57-
- \KLP\KlpMcpServer\Services\ToolService\Examples\HelloWorldTool::class
58-
- \KLP\KlpMcpServer\Services\ToolService\Examples\VersionCheckTool::class
57+
- KLP\KlpMcpServer\Services\ToolService\Examples\HelloWorldTool
58+
- KLP\KlpMcpServer\Services\ToolService\Examples\VersionCheckTool
5959

6060
# Prompts List
6161
# https://modelcontextprotocol.io/docs/concepts/prompts

src/Resources/config/services.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,18 @@
1212

1313
<service id="KLP\KlpMcpServer\Controllers\MessageController" class="KLP\KlpMcpServer\Controllers\MessageController">
1414
<argument type="service" id="klp_mcp_server.server" />
15+
<argument type="service" id="logger" on-invalid="null" />
1516
<tag name="controller.service_arguments" />
1617
</service>
1718
<service id="klp_mcp_server.controller.message" alias="KLP\KlpMcpServer\Controllers\MessageController" />
1819

19-
<service id="klp_mcp_server.adapter.default" alias="klp_mcp_server.adapter.in_memory" />
20-
<service id="klp_mcp_server.adapter.in_memory" class="KLP\KlpMcpServer\Transports\SseAdapters\InMemoryAdapter" />
20+
<service id="klp_mcp_server.adapter.default" alias="klp_mcp_server.adapter.redis" />
2121
<service id="klp_mcp_server.adapter.redis" class="KLP\KlpMcpServer\Transports\SseAdapters\RedisAdapter">
2222
<argument type="service" id="logger" on-invalid="null" />
2323
</service>
2424
<service id="klp_mcp_server.transport.sse" class="KLP\KlpMcpServer\Transports\SseTransport">
2525
<argument type="string">%klp_mcp_server.default_path%</argument>
26+
<argument type="service" id="klp_mcp_server.adapter.redis" on-invalid="null" />
2627
<argument type="service" id="logger" on-invalid="null" />
2728
</service>
2829

src/Transports/SseAdapters/InMemoryAdapter.php

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

tests/Transports/SseTransportTest.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,16 @@
1414
class SseTransportTest extends TestCase
1515
{
1616
private LoggerInterface|MockObject $loggerMock;
17+
private SseAdapterInterface|MockObject $adapterMock;
1718

1819
private SseTransport $instance;
1920

2021
protected function setUp(): void
2122
{
2223
parent::setUp();
2324
$this->loggerMock = $this->createMock(LoggerInterface::class);
24-
$this->instance = new SseTransport('/default-path', $this->loggerMock);
25+
$this->adapterMock = $this->createMock(SseAdapterInterface::class);
26+
$this->instance = new SseTransport('/default-path', $this->adapterMock, $this->loggerMock);
2527
}
2628

2729
/**
@@ -313,6 +315,7 @@ public function test_receive_returns_empty_array_without_adapter(): void
313315
public function test_receive_logs_info_when_no_adapter(): void
314316
{
315317
// Arrange
318+
$this->instance->setAdapter(null);
316319
$this->loggerMock->expects($this->once())
317320
->method('info')
318321
->with('SSE Transport::receive called but no adapter is configured.');
@@ -419,6 +422,7 @@ public function test_push_message_calls_adapter_correctly(): void
419422
public function test_push_message_throws_exception_without_adapter(): void
420423
{
421424
// Expect exception
425+
$this->instance->setAdapter(null);
422426
$this->expectException(SseTransportException::class);
423427
$this->expectExceptionMessage('Cannot push message: SSE Adapter is not configured.');
424428

0 commit comments

Comments
 (0)