diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml
index 2d389d79..3b237cbe 100644
--- a/.github/workflows/npm-publish.yml
+++ b/.github/workflows/npm-publish.yml
@@ -98,7 +98,6 @@ jobs:
fail-fast: false
matrix:
example:
- - arcade-server
- basic-server-preact
- basic-server-react
- basic-server-solid
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index da041959..283577b2 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -26,7 +26,6 @@ jobs:
. \
./examples/basic-server-react \
./examples/basic-server-vanillajs \
- ./examples/arcade-server \
./examples/budget-allocator-server \
./examples/cohort-heatmap-server \
./examples/customer-segmentation-server \
diff --git a/README.md b/README.md
index 00fdff06..e1429330 100644
--- a/README.md
+++ b/README.md
@@ -176,16 +176,6 @@ To use these examples with MCP clients that support the stdio transport (such as
"--stdio"
]
},
- "arcade": {
- "command": "npx",
- "args": [
- "-y",
- "--silent",
- "--registry=https://registry.npmjs.org/",
- "@modelcontextprotocol/server-arcade",
- "--stdio"
- ]
- },
"budget-allocator": {
"command": "npx",
"args": [
@@ -403,13 +393,6 @@ Then configure your MCP client to build and run the local server. Replace `~/cod
"cd ~/code/ext-apps/examples/basic-server-solid && npm run build >&2 && node dist/index.js --stdio"
]
},
- "arcade": {
- "command": "bash",
- "args": [
- "-c",
- "cd ~/code/ext-apps/examples/arcade-server && npm run build >&2 && node dist/index.js --stdio"
- ]
- },
"budget-allocator": {
"command": "bash",
"args": [
diff --git a/examples/arcade-server/.gitignore b/examples/arcade-server/.gitignore
deleted file mode 100644
index b9470778..00000000
--- a/examples/arcade-server/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules/
-dist/
diff --git a/examples/arcade-server/README.md b/examples/arcade-server/README.md
deleted file mode 100644
index 557f368a..00000000
--- a/examples/arcade-server/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# Example: Arcade Server
-
-An MCP Apps server that lets you browse and play classic arcade games from [archive.org](https://archive.org) directly in an MCP-enabled host.
-
-## Overview
-
-This example demonstrates serving **external HTML content** as an MCP App resource. The resource is a static loader that uses the MCP Apps protocol to receive tool arguments, then fetches the processed game HTML from a server endpoint. This pattern allows the same resource to display different games based on tool input.
-
-Key techniques:
-
-- MCP Apps protocol handshake (`ui/initialize` → `ui/notifications/tool-input`) to receive game ID dynamically
-- Server-side HTML fetching and processing per game ID
-- `` tag for resolving relative URLs against archive.org
-- `baseUriDomains` CSP metadata to allow the base tag
-- Rewriting ES module `import()` to classic `
- `,
- );
- }
-
- // Convert inline ES module scripts to classic scripts
- html = convertModuleScripts(html);
-
- // Fetch the emulation script server-side and serve from local endpoint
- html = await rewriteEmulationScript(html, serverPort);
-
- return html;
-}
-
-/**
- * Fetches emulation.min.js server-side, rewrites import() → loadScript(),
- * caches it, and points the HTML `);
- } catch {
- // If fetch fails, leave the original script tag
- }
-
- return html;
-}
-
-/**
- * Converts ES module scripts to classic scripts and rewrites inline
- * import() calls to use window.loadScript().
- */
-function convertModuleScripts(html: string): string {
- return html.replace(
- /(
-