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.json → node + serve-stdio.mjs
VS Code MCP Supported (stdio) .vscode/mcp.json → same stdio entry
ChatGPT Supported (HTTP) Developer mode connector → HTTPS /mcp; OpenAI extensions via @openai/mcp-extensions
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"]
}
}
}

Serve Streamable HTTP (typically /mcp) over HTTPS. Tunnel locally or deploy.

  1. pnpm add @openai/mcp-extensions
  2. Pass openaiUi on the View and openaiUiToolMeta({ entrypoints: [...] }) on tools via mountly-mcp/openai/server
  3. In the View, import { useOpenAIExtensions } from "mountly-mcp/react/openai"
  4. ChatGPT → Settings → Security and login → Developer mode
  5. Plugins → + → paste https://…/mcp → Create
  6. New chat, enable the connector, prompt a tool, or open a global entrypoint from Desktop sidebar

Mountly leaves OAuth and hosting to you. Refresh the connector after metadata changes.

Plugin Extensions place the same View on extra ChatGPT surfaces via tool openai/ui entrypoints. Every other host ignores them and renders the View inline.

Entrypoint type Surface
global Sidebar panel (+ quickAction)
thread Conversation panel
file File viewer/editor by extensions
settings Plugin settings

MCP Events let your server notify ChatGPT through webhooks. They need an MCP 2.0 server (2026-07-28). mountly-mcp/events implements the draft spec; the package README shows the wiring.

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.