Description
The Dual-Transport Server makes Dots usable from locally spawned MCP hosts and remote network clients through one shared server factory. runStdioServer connects createScopedMcpServer to the official stdio transport behind dots mcp. createMcpWebHandler manages credential-bound Streamable HTTP sessions mounted at /api/v1/mcp, while both transports resolve authority through the same authenticated path.
The workflow is designed for MCP host integrators. It uses the same authenticated, company-scoped service contracts as the rest of Dots, so terminal or protocol convenience never creates a second source of truth. Inputs are validated before or at the route boundary, and outputs preserve identifiers and structured details needed for a reliable next step.
Selling Points
- Lets desktop and coding hosts spawn a local server with a simple command.
- Supports remote MCP clients through a standard credentialed HTTP endpoint.
- Keeps tool catalog, scope, rendering, and behavior identical across transports.
- Binds network sessions to bearer identity and active-company context.
- Uses the official MCP SDK rather than a bespoke JSON-RPC implementation.
User Story
A developer uses stdio from a local coding host during desktop work, then configures a remote service to connect over Streamable HTTP with a PAT. Both clients discover the same scoped tools and receive the same result contracts. The result is a concrete, inspectable outcome that another person or automation can continue from without reconstructing hidden state.
Extension Surface
The feature is configurable: packages/mcp/src/index.ts exposes the stdio runner, packages/mcp/src/web-handler.ts exposes the HTTP bind, and callers inject endpoint, token, company, fetch, and read-only settings. The rating reflects the most-open supported seam that is true for this capability, not a transitive implementation detail. The cited path is the operational proof: consumers can use the documented seam, while unsupported changes still require a core release.
Capabilities & Limits
- Capability: Local stdio transport launched by
dots mcp. - Capability: Credentialed Streamable HTTP sessions on the API route.
- Capability: Shared scoped factory and concurrency-safe injected HTTP client.
- Limit: The network bind requires a valid bearer and supported MCP session flow; stdio remains a long-running protocol process rather than a one-shot CLI command.
The limit is intentional product truth rather than missing documentation. Calls also remain subject to authentication, tenant selection, schema validation, and the permissions enforced by the authoritative service.
Implementation Map
packages/mcp/src/index.tspackages/mcp/src/web-handler.tsdocs/mcp/transport-and-auth.md