feat(session): implement PSR-16 cache based session storage (#114)
This commit is contained in:
parent
7190bee153
commit
f41ea86608
1 changed files with 125 additions and 5 deletions
|
|
@ -139,6 +139,9 @@ Configure session storage and lifecycle. By default, the SDK uses `InMemorySessi
|
|||
```php
|
||||
use Mcp\Server\Session\FileSessionStore;
|
||||
use Mcp\Server\Session\InMemorySessionStore;
|
||||
use Mcp\Server\Session\Psr16StoreSession;
|
||||
use Symfony\Component\Cache\Psr16Cache;
|
||||
use Symfony\Component\Cache\Adapter\RedisAdapter;
|
||||
|
||||
// Use default in-memory sessions with custom TTL
|
||||
$server = Server::builder()
|
||||
|
|
@ -147,18 +150,35 @@ $server = Server::builder()
|
|||
|
||||
// Override with file-based storage
|
||||
$server = Server::builder()
|
||||
->setSession(new FileSessionStore('/tmp/mcp-sessions'))
|
||||
->setSession(new FileSessionStore(__DIR__ . '/sessions'))
|
||||
->build();
|
||||
|
||||
// Override with in-memory storage and custom TTL
|
||||
$server = Server::builder()
|
||||
->setSession(new InMemorySessionStore(3600))
|
||||
->build();
|
||||
|
||||
// Override with PSR-16 cache-based storage
|
||||
// Requires psr/simple-cache and symfony/cache (or any other PSR-16 implementation)
|
||||
// composer require psr/simple-cache symfony/cache
|
||||
$redisAdapter = new RedisAdapter(
|
||||
RedisAdapter::createConnection('redis://localhost:6379'),
|
||||
'mcp_sessions'
|
||||
);
|
||||
|
||||
$server = Server::builder()
|
||||
->setSession(new Psr16StoreSession(
|
||||
cache: new Psr16Cache($redisAdapter),
|
||||
prefix: 'mcp-',
|
||||
ttl: 3600
|
||||
))
|
||||
->build();
|
||||
```
|
||||
|
||||
**Available Session Stores:**
|
||||
- `InMemorySessionStore`: Fast in-memory storage (default)
|
||||
- `FileSessionStore`: Persistent file-based storage
|
||||
- `Psr16StoreSession`: PSR-16 compliant cache-based storage
|
||||
|
||||
**Custom Session Stores:**
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue