ext-apps/examples/basic-server-svelte
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Olivier Chafik 1a713173cc
Migrate to MCP SDK 2.0 with official Protocol and isolated role peers (#720)
App and AppBridge extend the public Protocol from @modelcontextprotocol/client; the iframe wire protocol (ui/initialize only) is unchanged. Peers move to the split SDK 2.0 packages with client and server as optional role peers. Fixups (lockfile, peer ranges, restored handler guards, docs, wire-compat tests) follow in a separate PR.

Co-authored-by: Andrew Khadder <andrew@manufact.com>
Co-authored-by: Felix Weinberger <fweinberger@anthropic.com>
Closes #702
2026-09-08 12:44:49 +01:00
..
src refactor: finish MCP SDK v2 migration 2026-07-14 17:07:30 -07:00
.gitignore Improve consistency and organization of examples for AI learning 2026-01-13 20:48:02 -06:00
main.ts refactor: finish MCP SDK v2 migration 2026-07-14 17:07:30 -07:00
mcp-app.html Add basic-server-* examples for Vue, Svelte, Preact, and Solid (#141) 2026-01-08 18:44:36 +00:00
package.json Migrate to MCP SDK 2.0 with official Protocol and isolated role peers (#720) 2026-09-08 12:44:49 +01:00
README.md Use apps.extensions.modelcontextprotocol.io domain for docs URLs 2026-02-24 11:38:54 -06:00
server.ts refactor: finish MCP SDK v2 migration 2026-07-14 17:07:30 -07:00
svelte.config.js Add basic-server-* examples for Vue, Svelte, Preact, and Solid (#141) 2026-01-08 18:44:36 +00:00
tsconfig.json Add basic-server-* examples for Vue, Svelte, Preact, and Solid (#141) 2026-01-08 18:44:36 +00:00
tsconfig.server.json feat: compile example servers to JavaScript for npm consumption (#259) 2026-01-14 23:46:17 +00:00
vite.config.ts Add basic-server-* examples for Vue, Svelte, Preact, and Solid (#141) 2026-01-08 18:44:36 +00:00

Example: Basic Server (Svelte)

An MCP App example with a Svelte 5 UI using runes for reactivity.

Tip

Looking for a vanilla JavaScript example? See basic-server-vanillajs!

MCP Client Configuration

Add to your MCP client configuration (stdio transport):

{
  "mcpServers": {
    "basic-svelte": {
      "command": "npx",
      "args": [
        "-y",
        "--silent",
        "--registry=https://registry.npmjs.org/",
        "@modelcontextprotocol/server-basic-svelte",
        "--stdio"
      ]
    }
  }
}

Local Development

To test local modifications, use this configuration (replace ~/code/ext-apps with your clone path):

{
  "mcpServers": {
    "basic-svelte": {
      "command": "bash",
      "args": [
        "-c",
        "cd ~/code/ext-apps/examples/basic-server-svelte && npm run build >&2 && node dist/index.js --stdio"
      ]
    }
  }
}

Overview

Key Files

Getting Started

npm install
npm run dev

How It Works

  1. The server registers a get-time tool with metadata linking it to a UI HTML resource (ui://get-time/mcp-app.html).
  2. When the tool is invoked, the Host renders the UI from the resource.
  3. The UI uses the MCP App SDK API to communicate with the host and call server tools.

Build System

This example bundles into a single HTML file using Vite with vite-plugin-singlefile — see vite.config.ts. This allows all UI content to be served as a single MCP resource. Alternatively, MCP apps can load external resources by defining _meta.ui.csp.resourceDomains in the UI resource metadata.