Skip to content

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

ParameterType
sessionIdstring

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

ParameterType
sessionIdstring
snapshotFsmSnapshot

Returns

Promise<void>