Skip to main content
Canvas MCP supports three transports through the same canvas-mcp entry point. The transport you choose depends on where your MCP client runs — locally on the same machine, on a remote host, or in a legacy environment that only speaks SSE.

Choosing a transport

TransportBest for
stdio (default)Desktop clients on the same machine (Claude Desktop, Cursor)
http / streamable-httpNetworked or production deployments; recommended by FastMCP v3
sseLegacy clients that require Server-Sent Events

stdio

stdio is the default transport and requires no additional flags. The MCP client launches canvas-mcp as a subprocess and communicates over its standard input/output streams.
uv run canvas-mcp
Desktop clients like Claude Desktop and Cursor always use stdio. They manage the subprocess lifecycle themselves — you do not need to keep a server running in the background.

HTTP (streamable-http)

http and streamable-http are aliases for the same FastMCP transport. The server binds to a host and port and exposes the MCP endpoint at /mcp by default. Use this transport when your client is on a different machine or when you want a persistent server process.
uv run canvas-mcp --transport http --host 127.0.0.1 --port 8000
The MCP endpoint is then reachable at http://127.0.0.1:8000/mcp. You can also use the helper script, which loads .env automatically:
./scripts/start_mcp_server.sh --transport http --host 127.0.0.1 --port 8000
FastMCP v3 recommends http over sse for all new networked deployments. Use sse only if your client does not support streamable HTTP.

SSE

sse provides legacy Server-Sent Events support for older MCP clients. It accepts the same --host and --port flags as HTTP.
uv run canvas-mcp --transport sse --host 127.0.0.1 --port 8000
SSE support is provided for backwards compatibility. Prefer http for any new integration.

CLI flags

--transport
string
default:"stdio"
Transport to expose. Accepted values: stdio, http, streamable-http, sse. http and streamable-http are equivalent.
--host
string
Network interface for HTTP-based transports. Ignored when --transport stdio is used. Example: 127.0.0.1 to bind loopback only, 0.0.0.0 to bind all interfaces.
--port
number
Port number for HTTP-based transports. Ignored when --transport stdio is used.
--path
string
Custom MCP endpoint path for HTTP-based transports. Defaults to /mcp when using the http transport.
--no-banner
boolean
Disable the FastMCP startup banner. Useful in environments where clean stdout is required.

Example invocations

uv run canvas-mcp

Build docs developers (and LLMs) love