Skip to content

Commit ca79ea9

Browse files
author
klapaudius
committed
Refactor RedisAdapter configuration handling.
Centralize RedisAdapter configuration by passing config parameters directly via constructor. Simplify initialization logic and update service definitions to use consistent parameter references for Redis settings.
1 parent 62f1919 commit ca79ea9

File tree

5 files changed

+18
-33
lines changed

5 files changed

+18
-33
lines changed

src/DependencyInjection/KlpMcpServerExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ public function load(array $configs, ContainerBuilder $container): void
2222
$container->setParameter('klp_mcp_server.middlewares', $config['middlewares']);
2323
$container->setParameter('klp_mcp_server.provider', 'klp_mcp_server.provider.'.$config['server_provider']);
2424
$container->setParameter('klp_mcp_server.adapter', 'klp_mcp_server.adapter.'.$config['sse_adapter']);
25+
$container->setParameter('klp_mcp_server.adapters.redis.prefix', $config['adapters']['redis']['prefix']);
26+
$container->setParameter('klp_mcp_server.adapters.redis.connection', $config['adapters']['redis']['connection']);
27+
$container->setParameter('klp_mcp_server.adapters.redis.ttl', $config['adapters']['redis']['ttl']);
2528
$container->setParameter('klp_mcp_server.tools', $config['tools']);
2629
$container->setParameter('klp_mcp_server.prompts', $config['prompts']);
2730
$container->setParameter('klp_mcp_server.resources', $config['resources']);

src/Resources/config/packages/klp_mcp_server.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ klp_mcp_server:
4444
in_memory: {}
4545
redis:
4646
prefix: 'mcp_sse_'
47-
connection: '%env(MCP_REDIS_CONNECTION)' # database.php redis
47+
connection: 'localhost' # change it as needed
4848
ttl: 100
4949
# Add more adapter configurations as needed
5050

src/Resources/config/services.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919

2020
<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">
22+
<argument type="collection">
23+
<argument key="prefix">%klp_mcp_server.adapters.redis.prefix%</argument>
24+
<argument key="connection">%klp_mcp_server.adapters.redis.connection%</argument>
25+
<argument key="ttl">%klp_mcp_server.adapters.redis.ttl%</argument>
26+
</argument>
2227
<argument type="service" id="logger" on-invalid="null" />
2328
</service>
2429
<service id="klp_mcp_server.transport.sse" class="KLP\KlpMcpServer\Transports\SseTransport">

src/Transports/SseAdapters/RedisAdapter.php

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
final class RedisAdapter implements SseAdapterInterface
1818
{
19+
const FAILED_TO_INITIALIZE = 'Failed to initialize Redis SSE Adapter: ';
1920
/**
2021
* Redis connection instance
2122
*/
@@ -32,33 +33,18 @@ final class RedisAdapter implements SseAdapterInterface
3233
protected int $messageTtl = 100;
3334

3435
public function __construct(
36+
private readonly array $config,
3537
private readonly ?LoggerInterface $logger
36-
) {}
37-
38-
/**
39-
* Initialize the adapter with any required configuration
40-
*
41-
* @param array $config Configuration options for the adapter
42-
*
43-
* @throws Exception If initialization fails
44-
*/
45-
public function initialize(array $config): void
46-
{
38+
) {
4739
try {
48-
$connection = $config['connection'] ?? 'default';
40+
$this->keyPrefix = $this->config['prefix'] ?? 'mcp_sse_';
41+
$this->messageTtl = (int)$this->config['ttl'] ?: 100;
4942
$this->redis = new Redis;
50-
$this->redis->connect('localhost', 6379);
51-
52-
if (isset($config['prefix'])) {
53-
$this->keyPrefix = $config['prefix'];
54-
}
55-
56-
if (isset($config['ttl'])) {
57-
$this->messageTtl = (int) $config['ttl'];
58-
}
43+
$this->redis->connect($this->config['connection'], 6379);
44+
$this->redis->setOption(Redis::OPT_PREFIX, $this->keyPrefix);
5945
} catch (Exception $e) {
60-
$this->logger?->error('Failed to initialize Redis SSE Adapter: '.$e->getMessage());
61-
throw new Exception('Failed to initialize Redis SSE Adapter: '.$e->getMessage());
46+
$this->logger?->error(self::FAILED_TO_INITIALIZE .$e->getMessage());
47+
throw new \Exception(self::FAILED_TO_INITIALIZE .$e->getMessage());
6248
}
6349
}
6450

src/Transports/SseAdapters/SseAdapterInterface.php

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,4 @@ public function hasMessages(string $clientId): bool;
6767
* @return int The number of messages
6868
*/
6969
public function getMessageCount(string $clientId): int;
70-
71-
/**
72-
* Initialize the adapter with any required configuration
73-
*
74-
* @param array $config Configuration options for the adapter
75-
*
76-
* @throws \Exception If initialization fails
77-
*/
78-
public function initialize(array $config): void;
7970
}

0 commit comments

Comments
 (0)