ext-apps/examples/basic-server-svelte
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Olivier Chafik 5373f01d6f
chore: bump ext-apps to 1.1.2 (#503)
* chore: bump ext-apps to 1.1.2

Changes since 1.1.1:
- feat: add ui/download-file method for host-mediated file downloads (#475)
- pdf-server: robust path validation + folder/file root support (#497)
- ci: auto-fix prettier formatting in pre-commit hook and CI (#498)

* fix: sync local SDK build into node_modules for examples

npm workspaces hoists example dependencies to the root node_modules,
but installs the published registry copy of @modelcontextprotocol/ext-apps
instead of linking to the local source. This causes type-check failures
when examples use features not yet published to npm.

Add scripts/link-self.mjs which copies the freshly-built dist/ and
package.json into the hoisted node_modules copy after each SDK build,
ensuring examples always type-check against the latest local types.

See: https://github.com/npm/feedback/discussions/774

* Revert "fix: sync local SDK build into node_modules for examples"

This reverts commit e3387e8434f3def030f5a223a70632092c929119.
2026-02-25 01:43:51 +00:00
..
src Improve example CSS files to better demonstrate host style integration 2026-01-30 09:32:26 -06:00
.gitignore Improve consistency and organization of examples for AI learning 2026-01-13 20:48:02 -06:00
main.ts Refactor server startup functions 2026-01-24 09:27:54 -06: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 chore: bump ext-apps to 1.1.2 (#503) 2026-02-25 01:43:51 +00:00
README.md chore: stable spec release 2026-01-26 and SDK v1.0.0 (#362) 2026-01-26 17:31:33 +00:00
server.ts Rewrite Quickstart guide with type-checked code examples 2026-01-24 09:41:51 -06: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.