Interface: FsmStateStore
Defined in: packages/core/src/fsm/StateMachineGate.ts:109
External state store for serverless/edge deployments.
When MCP runs over Streamable HTTP (Vercel, Cloudflare Workers), there is no persistent process — FSM state must be externalized. The sessionId comes from the Mcp-Session-Id header.
Example
typescript
const fsmStore: FsmStateStore = {
load: async (sessionId) => {
const data = await redis.get(`fsm:${sessionId}`);
return data ? JSON.parse(data) : undefined;
},
save: async (sessionId, snapshot) => {
await redis.set(`fsm:${sessionId}`, JSON.stringify(snapshot), { EX: 3600 });
},
};Methods
load()
ts
load(sessionId): Promise<FsmSnapshot | undefined>;Defined in: packages/core/src/fsm/StateMachineGate.ts:111
Load persisted FSM state for a session. Returns undefined for new sessions.
Parameters
| Parameter | Type |
|---|---|
sessionId | string |
Returns
Promise<FsmSnapshot | undefined>
save()
ts
save(sessionId, snapshot): Promise<void>;Defined in: packages/core/src/fsm/StateMachineGate.ts:113
Save FSM state after a transition.
Parameters
| Parameter | Type |
|---|---|
sessionId | string |
snapshot | FsmSnapshot |
Returns
Promise<void>