> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mcp-assistant.in/llms.txt
> Use this file to discover all available pages before exploring further.

# May 18, 2026

> Release notes for mcp-ts v2.0.0: a standardized session API, Neon storage backend, Code Mode, the Tool Router as a standalone package, and deeper tool search.

<Note>
  v2.0.0 includes breaking changes. See the [migration guide](/migration) before upgrading.
</Note>

## New features

### Neon storage backend

A new [Neon storage backend](/storage-backends/neon) persists MCP sessions on Neon's serverless Postgres. It ships with optional Row-Level Security configuration and a `pg_cron` cleanup job for expired sessions. See the [storage backends overview](/storage-backends/overview) for how it compares to Redis, Supabase, SQLite, and the file system.

### Code Mode

Code Mode is a new execution mode that lets the LLM write and run small TypeScript snippets in an isolated sandbox. The model calls your MCP tools as plain async functions (for example, `github.get_issue(...)`) instead of issuing one tool call at a time. Code Mode auto-generates TypeScript interfaces for connected servers and ships four built-in tools for searching, listing, inspecting, and chaining tool calls. The sandbox runtime is an optional dependency.

### Tool Router as a standalone package

The [Tool Router](/core-concepts/tool-router) is now available as its own installable package, so you can drop it into any agent or framework without pulling in the rest of mcp-ts. The default [meta-tools](/core-concepts/meta-tools) behave exactly as before.

## Updates

### Standardized session API

v2.0.0 aligns the session and client APIs around consistent naming. Highlights:

* The user identifier passed to clients, storage backends, and hooks is now `userId` (previously `identity`).
* Session management has moved from `storage` to a dedicated `sessions` API with `create`, `list`, `get`, and `update` methods.
* The Streamable HTTP transport type is now spelled `streamable-http` consistently across config, [client](/reference/client), and [server](/reference/server) options.
* Session data accessors on storage backends have been renamed for clarity — see the [storage reference](/reference/storage).

Database-backed storage (Supabase, Neon, SQLite) requires running the provided migrations before deploying. Full upgrade steps are in the [v2.0 migration guide](/migration).

### Deeper tool search

[`mcp_search_tools`](/core-concepts/meta-tools) now indexes words from nested argument schemas — object properties, array item types, and enum values — not just the top-level tool name and description. The LLM can find a tool by terms that appear only inside its input schema, improving recall on large MCP servers without changing the response shape.

### Tool approvals and annotations

The tool approval flow now delivers a more consistent approval payload to apps that use the [React](/react) or [Vue](/vue) hooks. We also removed annotation fields from tool definitions to simplify the [tool types](/reference/types).

### Optional peer dependencies

`json-schema-to-zod` and `isolated-vm` are now optional. Install them only if you generate Zod schemas from MCP tool schemas or run Code Mode, respectively, which keeps the default install slimmer.

## Bug fixes

* **SSE header construction** — The SSE client now trims header names and values and skips empty entries, preventing malformed optional headers from leaking into connection setup.
* **Tool search recall** — Fixed cases where nested schema fields prevented matches on otherwise valid search terms.
