Skip to content

Host matrix

Run mountly-mcp dev while you iterate. Ship the same dist/ artifacts to a real host over the transport you choose.

Terminal window
pnpm dev # scaffold: mountly-mcp dev --server ./server.mjs

You exercise handshake, CSP, tool results, and View-initiated tool calls. Open the App once in Claude or VS Code before you call it done.

Host Status Connect
mountly-mcp dev Supported Built-in AppBridge + sandbox proxy
Claude Desktop Supported (stdio) claude_desktop_config.jsonnode + serve-stdio.mjs
VS Code MCP Supported (stdio) .vscode/mcp.json → same stdio entry
ChatGPT Partial Custom connector or hosted HTTP MCP; you own OAuth
Other SEP-1865 hosts Untested here Same manifest if the host implements ui://

“Untested” means this repo has no CI against that host. Do not assume coverage.

Scaffolds ship serve-stdio.mjs:

import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import createServer from "./server.mjs";
const server = await createServer();
await server.connect(new StdioServerTransport());

Log to stderr. stdout is the JSON-RPC channel.

~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
"mcpServers": {
"my-app": {
"command": "node",
"args": ["/absolute/path/to/serve-stdio.mjs"]
}
}
}

.vscode/mcp.json:

{
"servers": {
"my-app": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/serve-stdio.mjs"]
}
}
}

Point your connector at the same stdio process or at an HTTP transport you deploy. Mountly does not ship OAuth or hosting.

Terminal window
npx mountly-mcp build
npx mountly-mcp verify --strict --render

--render fails blank Views in Chromium. Host screenshots stay manual until each vendor exposes stable automation.

Hosts without MCP Apps still get tool text: Mountly adds a JSON text block when your handler returns only structuredContent. How it works.