Skip to main content
AllMCPs
BrowseBestCategoriesStackCompareToolsGuidesBlog
Log in Submit MCP

Stay in the loop

Get new MCP servers and top picks in your inbox.

AllMCPs

The open directory for discovering and installing Model Context Protocol servers.

AllMCPs on GitHub (opens in a new tab)
Launched onTiny Startupstinystartups.com
Explore
  • Browse servers
  • Best MCP servers
  • Categories
  • MCP clients
  • Agent prompts
  • Stack Builder
  • Compare servers
  • Random discovery New
  • Submit a server
  • Pricing & Boost Boost
Learn
  • Guides hub
  • What is MCP?
  • Install guide
  • Build an MCP server
  • Deploy an MCP server
  • Security guide
  • Troubleshooting
  • MCP for SEO & AEO
  • Protocol versioning
  • Blog & updates
Tools
  • All developer tools
  • Config generator
  • Config validator
  • Config auditor
  • MCP playground
  • Token calculator
  • OpenAPI โ†’ MCP
  • Badge generator
For agents
  • REST API docs
  • Trust & traffic Live
  • Remote MCP server SSE โ†— (opens in a new tab)
  • llms.txt โ†— (opens in a new tab)
  • Catalog JSON โ†— (opens in a new tab)
Company
  • About
  • Advertise Sponsor
  • Contact
  • GitHub โ†— (opens in a new tab)
  • Terms
  • Privacy
AllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZoneAllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZone
ยฉ 2026 Jackalope Digital LLC. All rights reserved.
  1. Home
  2. ๐Ÿ—„๏ธ Databases
  3. S2 Sdk Typescript
S2 Sdk Typescript logo
Health: ActiveRecent health check succeeded.Last checked 9/11/2026, 6:15:54 PM

S2 Sdk Typescript

User RatingsBe the first to rate and review this MCP server!Ownership verifiedThe owner proved control of this listing via a GitHub README, site badge, or DNS TXT record.
View Repository35 GitHub StarsTotal stargazers on GitHub for the source repository (35 stars).Visit Website
typescriptstreamsdatastorerest-apiserverless

TypeScript SDK for S2 serverless stream platform enabling durable, append-only streams with REST API access.

Quick Install

Automated & IDE Setup

Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ€” or use 1-click editor setup below.

One-click editor setup isnโ€™t available for this listing yet โ€” we donโ€™t have a confirmed install command, and weโ€™d rather show nothing than point your editor at the wrong package or host. Follow the projectโ€™s own setup instructions, linked above.

Manual Client & Custom JSON ConfigExpand JSON โ–พ
No confirmed setup config for this listing yet. We only publish a config block when the install details come from the project itself โ€” its README, its docs, or a verified owner. We havenโ€™t found those for s2-streamstore/s2-sdk-typescript, and weโ€™d rather show nothing than a guess youโ€™d paste into your client. Follow the projectโ€™s own setup instructions for the current steps.
Install Directory Badge Alternatives๐Ÿ—„๏ธ More in Databases

Overview

This SDK provides TypeScript bindings for the S2 serverless stream platform, a managed service offering unlimited, durable streams. It allows appending records to streams and reading from any position by sequence number or timestamp, supporting live updates. Use this SDK when building applications that require scalable, durable streaming data storage with a REST API backend.

Use cases

โ€ขAppend records to streams with string or binary payloads
โ€ขRead records from streams by sequence number or timestamp
โ€ขCreate and manage basins (namespaces) and streams
โ€ขFollow live updates on streams
โ€ขManage access tokens and stream configurations

Key features

โ€ขAppend batches of records with optional headers
โ€ขRead stream data with flexible start/stop criteria
โ€ขCreate and manage basins and streams via API
โ€ขSupport for append sessions for ordered, stateful appends
โ€ขHigh-level abstractions over S2 REST API

Capabilities & Tool Schemas

Inspect callable tools, capabilities, and parameters exposed to AI agents by S2 Sdk Typescript.

Extracted Tool Capabilities
Append batches of records with optional headers
Read stream data with flexible start/stop criteria
Create and manage basins and streams via API
Support for append sessions for ordered, stateful appends
High-level abstractions over S2 REST API

Documentation Overview

TypeScript SDK for S2

npm version

This repo contains the official TypeScript SDK for S2, a serverless data store for streams, built on the service's REST API.

S2 is a managed service that provides unlimited, durable streams.

Streams can be appended to, with all new records added to the tail of the stream. You can read from any portion of a stream โ€“ indexing by record sequence number, or timestamp โ€“ and follow updates live.

See it in action on the playground.

Quick links:

  • Runnable examples directory
  • Patterns package
  • SDK documentation
  • S2 REST API documentation

Note: The repository for releases prior to 0.16.x can be found at this link.

Install

Terminal
npm add @s2-dev/streamstore
# or
yarn add @s2-dev/streamstore
# or
bun add @s2-dev/streamstore

Quick start

Want to get up and running? Head to the S2 dashboard to sign-up and grab an access key, and create a new "basin" from the UI.

Then define the following environment variables respectively:

server.ts
export S2_ACCESS_TOKEN="<token>"
export S2_BASIN="<basin>"

From there, you can run the following snippet (or any of the other examples).

server.ts
import {
	AppendAck,
	AppendInput,
	AppendRecord,
	S2,
	S2Environment,
} from "@s2-dev/streamstore";

const basinName = process.env.S2_BASIN ?? "my-existing-basin";
const streamName = process.env.S2_STREAM ?? "my-new-stream";

const s2 = new S2({
	...S2Environment.parse(),
	accessToken: process.env.S2_ACCESS_TOKEN ?? "my-access-token",
});

// Create a basin (namespace) client for basin-level operations.
const basin = s2.basin(basinName);

// Make a new stream within the basin, using the default configuration.
const streamResponse = await basin.streams.create({ stream: streamName });
console.dir(streamResponse, { depth: null });

// Create a stream client on our new stream.
const stream = basin.stream(streamName);

// Make a single append call.
const append: Promise<AppendAck> = stream.append(
	// `append` expects an input batch of one or many records.
	AppendInput.create([
		// Records can use a string encoding...
		AppendRecord.string({
			body: "Hello from the docs snippet!",
			headers: [["content-type", "text/plain"]],
		}),
		// ...or contain raw binary data.
		AppendRecord.bytes({
			body: new TextEncoder().encode("Bytes payload"),
		}),
	]),
);

// When the promise resolves, the data is fully durable and present on the stream.
const ack = await append;
console.log(
	`Appended records ${ack.start.seqNum} through ${ack.end.seqNum} (exclusive).`,
);
console.dir(ack, { depth: null });

// Read the two records back as binary.
const batch = await stream.read(
	{
		start: { from: { seqNum: ack.start.seqNum } },
		stop: { limits: { count: 2 } },
	},
	{ as: "bytes" },
);

for (const record of batch.records) {
	console.dir(record, { depth: null });
	console.log("decoded body: %s", new TextDecoder().decode(record.body));
}

Development

Run examples:

server.ts
export S2_ACCESS_TOKEN="<token>"
export S2_BASIN="<basin>"
export S2_STREAM="<stream>" # optional per example
npx tsx examples/<example>.ts

Run tests:

bash
bun run test

The SDK also ships with a basic browser example, to experiment with using the SDK directly from the web.

bash
bun run --cwd packages/streamstore example:browser

Using S2

S2 SDKs, including this TypeScript one, provide high-level abstractions and conveniences over the core REST API.

Account and basin operations

The account and basin APIs allow for CRUD ops on basins (namespaces of streams), streams, granular access tokens, and more.

Data plane (stream) operations

The core SDK verbs are around appending data to streams, reading data from them.

See the examples and documentation for more details.

Below are some high level notes on how to interact with the data plane.

Appends

The atomic unit of append is an AppendInput, which contains a batch of AppendRecords and some optional additional parameters.

Records contain a body and optional headers. After an append completes, each record will be assigned a sequence number (and a timestamp).

server.ts
// Append a mixed batch: string + bytes with headers.
console.log("Appending two records (string + bytes).");
const mixedAck = await stream.append(
	AppendInput.create([
		AppendRecord.string({
			body: "string payload",
			headers: [
				["record-type", "example"],
				["user-id", "123"],
			],
		}),
		AppendRecord.bytes({
			body: new TextEncoder().encode("bytes payload"),
			headers: [[new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6])]],
		}),
	]),
);
console.dir(mixedAck, { depth: null });

Append sessions (ordered, stateful appends)

Use an AppendSession when you want higher throughput and ordering guarantees:

  • It is stateful and enforces that the order you submit batches becomes the order on the stream.
  • It supports pipelining submissions while still preserving ordering (especially with the s2s transport).
server.ts
console.log("Opening appendSession with maxInflightBytes=1MiB.");
const appendSession = await stream.appendSession({
	// This determines the maximum amount of unacknowledged, pending appends,
	// which can be outstanding at any given time. This is used to apply backpressure.
	maxInflightBytes: 1024 * 1024,
});

const startSeq = mixedAck.end.seqNum;
// Submit an append batch.
// This returns a promise that resolves into a `BatchSubmitTicket` once the session has
// capacity to send it.
const append1: BatchSubmitTicket = await appendSession.submit(
	AppendInput.create([
		AppendRecord.string({ body: "session record A" }),
		AppendRecord.string({ body: "session record B" }),
	]),
);
const append2: BatchSubmitTicket = await appendSession.submit(
	AppendInput.create([AppendRecord.string({ body: "session record C" })]),
);

// The tickets can be used to wait for the append to become durable (acknowledged by S2).
console.dir(await append1.ack(), { depth: null });
console.dir(await append2.ack(), { depth: null });

console.log("Closing append session to flush outstanding batches.");
await appendSession.close();

Producer

Streams can support up to 200 appended batches per second (per single stream), but tens of MiB/second.

For throughput, you typically want fewer, but larger batches.

The Producer API simplifies this by connecting an appendSession with an auto-batcher (via BatchTransform), which lingers and accumulates records for a configurable amount of time. This is the recommended path for most high-throughput writers.

server.ts
const producer = new Producer(
	new BatchTransform({
		// Linger and collect new records for up to 25ms per batch.
		lingerDurationMillis: 25,
		maxBatchRecords: 200,
	}),
	await stream.appendSession(),
);

const tickets = [];
for (let i = 0; i < 10; i += 1) {
	const ticket = await producer.submit(
		AppendRecord.string({
			body: `record-${i}`,
		}),
	);
	tickets.push(ticket);
}

const acks = await Promise.all(tickets.map((ticket) => ticket.ack()));
for (const ack of acks) {
	console.log("Record durable at seqNum:", ack.seqNum());
}

// Use the seqNum of the third ack as a coordinate for reading it back.
let record3 = await stream.read({
	start: { from: { seqNum: acks[3].seqNum() } },
	stop: { limits: { count: 1 } },
});
console.dir(record3, { depth: null });

await producer.close();
await stream.close();

Read sessions

Read operations, similarly, can be done via individual read calls, or via a readSession.

Use a session whenever you want:

  • to read more than a single response batch (responses larger than 1 MiB),
  • to keep a session open and tail for new data (omit stop criteria).
server.ts
const readSession = await stream.readSession({
	start: { from: { tailOffset: 10 }, clamp: true },
	stop: { waitSecs: 10 },
});

for await (const record of readSession) {
	console.log(record.seqNum, record.body);
}

Client configuration

Retries and append retry policy

server.ts
import { S2, S2Environment, S2Error } from "@s2-dev/streamstore";

const accessToken = process.env.S2_ACCESS_TOKEN;
if (!accessToken) {
	throw new Error("Set S2_ACCESS_TOKEN to configure the SDK.");
}

const basinName = process.env.S2_BASIN;
if (!basinName) {
	throw new Error("Set S2_BASIN so we know which basin to inspect.");
}

const streamName = process.env.S2_STREAM ?? "docs/client-config";

Read the full README โ†’View source on GitHub โ†’

Related MCP Servers

View all in Databases View all alternatives
  • Insforge MCP logoInsforge MCP

    AI-native backend-as-a-service platform enabling AI agents to build and manage full-stack applications. Provides Auth, Database (PostgreSQL), Storage, and Functions as production-grade infrastructure, reducing MVP development time from weeks to hours.

    ๐Ÿ—„๏ธ Databases1 views
    Compare vs Insforge MCP โ†’
  • Genai Toolbox logoGenai Toolbox

    Open source MCP server specializing in easy, fast, and secure tools for Databases.

    ๐Ÿ—„๏ธ Databases5 views
    Compare vs Genai Toolbox โ†’
  • MCP Snowflake Server logoMCP Snowflake Server

    Snowflake integration implementing read and (optional) write operations as well as insight tracking

    ๐Ÿ—„๏ธ Databases2 views
    Compare vs MCP Snowflake Server โ†’
  • Airtable MCP Server logoAirtable MCP Server

    Airtable database integration with schema inspection, read and write capabilities

    ๐Ÿ—„๏ธ Databases2 views
    Compare vs Airtable MCP Server โ†’

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks โ€” not a rating.

GitHub stars
35
Stargazers on the source repository.
Last commit
2d ago
Most recent push to the default branch.
Directory activity
1 views
Config copies, upvotes, and views on AllMCPs.

Reviews

No reviews yet โ€” be the first to share how this listing worked for you.

Frequently Asked Questions about S2 Sdk Typescript

You must obtain an access token from the S2 dashboard and set it in the S2_ACCESS_TOKEN environment variable.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewS2 Sdk Typescript AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/s2-streamstore-s2-sdk-typescript?style=directory)](https://allmcps.com/mcp/s2-streamstore-s2-sdk-typescript)
HTML Embed
<a href="https://allmcps.com/mcp/s2-streamstore-s2-sdk-typescript"><img src="https://allmcps.com/api/badge/s2-streamstore-s2-sdk-typescript?style=directory" alt="S2 Sdk Typescript on AllMCPs" /></a>

Technical Specs & Signals

Category๐Ÿ—„๏ธDatabases
PricingPaid
More technical detailsExpand โ–พ
AuthAPI key
Last updatedSep 10, 2026
9/10 checks healthy over the last 33d
Views1
Unique ViewsTotal visits recorded for this listing page on AllMCPs.
Installs0
Installs & Copy ActionsTotal times users copied install commands or configuration snippets for this server.
GitHub stars35
GitHub Star CountTotal stargazers on GitHub representing community popularity (35 stars).
Last commit2d ago
Last Repository CommitThe most recent commit or push recorded for this server's GitHub repository.Last commit on Sep 10, 2026
64Quality signal: Good ยท 64/100How this signal is calculated โ–พ
Server availability25/25
Verified ownership20/20
Documentation & tools12/30
Adoption & activity7/15
Community engagement0/10

A guidance signal from public completeness & health data โ€” not a user rating. New listings start lower and rise as they add docs, get verified, and grow adoption. Signals we can't observe for a listing are skipped, not counted against it.

โ˜… FeaturedAllMCPs Server logo

AllMCPs Server

The official MCP server for AllMCPs.com - submit and manage tools directly from your AI. The open directory for MCP servers. Connect Claude, Cursor, Windsurf, and AI agents to databases, tools, files, and APIs. Explore 10,000+ servers. AllMCPs is the premier, open directory for discovering, evaluating, and installing Model Context Protocol (MCP) servers to equip AI agents and LLMs with real-world superpowers.

Explore Server โ†’

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.

Explore more

More in ๐Ÿ—„๏ธ Databases โ†’Best MCP servers for Databases โ†’Alternatives to S2 Sdk Typescript โ†’Install in Claude DesktopInstall in CursorInstall in VS Code