diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 3b237cb..2d389d7 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -98,6 +98,7 @@ 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 283577b..da04195 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -26,6 +26,7 @@ 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 e142933..00fdff0 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,16 @@ 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": [ @@ -393,6 +403,13 @@ 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/grid-cell.png b/examples/arcade-server/grid-cell.png new file mode 100644 index 0000000..37661df Binary files /dev/null and b/examples/arcade-server/grid-cell.png differ diff --git a/examples/arcade-server/server.ts b/examples/arcade-server/server.ts index d6b00b5..f3c20cc 100644 --- a/examples/arcade-server/server.ts +++ b/examples/arcade-server/server.ts @@ -35,7 +35,7 @@ export function validateGameId(gameId: string): boolean { */ export function createServer(port: number): McpServer { const server = new McpServer({ - name: "arcade-mcp-server", + name: "Arcade Server", version: "1.0.0", }); diff --git a/tests/e2e/generate-grid-screenshots.spec.ts b/tests/e2e/generate-grid-screenshots.spec.ts index bbe8959..4482ab8 100644 --- a/tests/e2e/generate-grid-screenshots.spec.ts +++ b/tests/e2e/generate-grid-screenshots.spec.ts @@ -27,6 +27,7 @@ const EXTRA_WAIT_MS: Record = { // Servers to skip (screenshots maintained manually) const SKIP_SERVERS = new Set([ + "arcade-server", // Loads games from archive.org - screenshots maintained manually "video-resource", // Uses custom screenshot from PR comment "qr-server", // Uses custom screenshot from PR comment "say-server", // TTS model download from HuggingFace can be slow @@ -37,6 +38,7 @@ const EXAMPLE_FILTER = process.env.EXAMPLE; // Server configurations (excludes integration-server which is for E2E testing) const ALL_SERVERS = [ + { key: "arcade-server", name: "Arcade Server", dir: "arcade-server" }, { key: "basic-react", name: "Basic MCP App Server (React)", diff --git a/tests/e2e/servers.spec.ts b/tests/e2e/servers.spec.ts index 6592471..ca0248f 100644 --- a/tests/e2e/servers.spec.ts +++ b/tests/e2e/servers.spec.ts @@ -35,6 +35,7 @@ const DYNAMIC_MASKS: Record = { // Servers that need extra stabilization time (e.g., for tile loading, WebGL init) const SLOW_SERVERS: Record = { "map-server": 15000, // CesiumJS needs time for tiles to load + "arcade-server": 15000, // Game loading from archive.org can be slow threejs: 2000, // Three.js WebGL initialization "say-server": 10000, // TTS model download from HuggingFace can be slow }; @@ -57,7 +58,7 @@ const HOST_MASKS: Record = { // Servers to skip in CI (require special resources like GPU, large ML models) const SKIP_SERVERS = new Set([ - // None currently - say-server view works without TTS model for screenshots + "arcade-server", // Loads games from archive.org which may be slow/unreliable in CI "qr-server", // TODO "say-server", // TTS model download from HuggingFace can be slow ]); @@ -67,6 +68,7 @@ const EXAMPLE_FILTER = process.env.EXAMPLE; // Server configurations (key is used for screenshot filenames, name is the MCP server name, dir is the folder name) const ALL_SERVERS = [ + { key: "arcade-server", name: "Arcade Server", dir: "arcade-server" }, { key: "integration", name: "Integration Test Server",