feat(plugin): mcp-server-dev — close remote-path dead-end with deploy/test/connect guidance

The remote HTTP path (starred default) previously ended at localhost:3000
with no next steps. Adds CF Workers deploy reference, Inspector test
commands, user-connection guide, and a versions ledger. Swaps the
build-mcp-app scaffold from stdio to streamable-HTTP to match the
remote-first stance.
This commit is contained in:
Den Delimarsky
2026-03-19 01:50:36 +00:00
parent 68c9a9a4ed
commit 8fffb2f746
5 changed files with 192 additions and 5 deletions

View File

@@ -174,16 +174,17 @@ Keep widgets **small and single-purpose**. A picker picks. A chart displays. Don
**Install:**
```bash
npm install @modelcontextprotocol/sdk @modelcontextprotocol/ext-apps zod
npm install @modelcontextprotocol/sdk @modelcontextprotocol/ext-apps zod express
```
**Server (`src/server.ts`):**
```typescript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
import { registerAppTool, registerAppResource, RESOURCE_MIME_TYPE }
from "@modelcontextprotocol/ext-apps/server";
import express from "express";
import { readFileSync } from "node:fs";
import { z } from "zod";
@@ -206,9 +207,19 @@ registerAppResource(server, "Contact Picker", "ui://widgets/picker.html", {},
}),
);
await server.connect(new StdioServerTransport());
const app = express();
app.use(express.json());
app.post("/mcp", async (req, res) => {
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
res.on("close", () => transport.close());
await server.connect(transport);
await transport.handleRequest(req, res, req.body);
});
app.listen(process.env.PORT ?? 3000);
```
For local-only widget apps (driving a desktop app, reading local files), swap the transport to `StdioServerTransport` and package via the `build-mcpb` skill.
**Widget (`widgets/picker.html`):**
```html