Introduction

TypeScript framework for MCP Apps on the 2026-07-28 stateless core.

bitmcp is a TypeScript compiler and runtime for official MCP Apps. It is not a general MCP toolkit.

A tool is a server function. A View is a predeclared, hashed HTML resource. Confirmations use MRTR. State uses handles, not sessions.

One folder, one app

src/tools/forecast/
  tool.ts
  view.tsx
  actions.ts

That folder produces:

  • A tools/call handler with text and structuredContent
  • A hashed ui:// HTML resource for UI-capable hosts
  • Optional app-only backing tools hidden from the model

If the host has no UI, the tool still works. If the host has UI, the View renders. If the process restarts or the next request hits another replica, nothing breaks.

Degradation order

Always: text → MRTR → View.

Tools work in text-only hosts. Confirmations use MRTR, not iframe-only buttons. Views are never the only path for a side effect.

How bitmcp differs

  • Official Apps shape: predeclared, content-hashed ui:// HTML. Not JSX from a tool handler. Not a JSON component tree.
  • Stateless core: per-request server factory. Handles, not sessions.
  • File convention as compiler input: envelope fields are compiler output.
  • Sugar over the protocol: bitmcp/react wraps @modelcontextprotocol/ext-apps.

Public packages

  • bitmcp: runtime, CLI, and defineConfig
  • bitmcp/react: useApp() for Views
  • bitmcp/vite: compiler plugin
  • create-bitmcp: scaffold (--deploy node|vercel|cloudflare)

LLM-friendly docs

For the complete documentation index, see llms.txt. Markdown variants of every page are available by appending .md to the URL.