mcpway
mcpway runs MCP stdio servers over SSE, WebSocket, and Streamable HTTP.
Install
Crates.io: https://crates.io/crates/mcpway
Supported Platforms
mcpway is supported on:
- Linux
- macOS
- Windows
Platform notes:
- OAuth browser launch uses platform-native open commands (
openon macOS,xdg-openon Linux,starton Windows). connect --oauth-no-browseris available when launching a browser is not possible in your environment.
Quick Start
Bridge Modes
Examples of supported input/output pairs:
# stdio -> sse (default output for --stdio)
# stdio -> stdio (managed relay mode)
# stdio -> ws
# stdio -> streamable-http
# sse -> stdio
# streamable-http -> stdio
For endpoint-first usage, use connect:
Cargo Workspace
Run from repository root:
Release Smoke Test (macOS)
Run this on a macOS host before cutting a release:
# stdio -> stdio
# stdio -> sse
# oauth flow (verifies browser launch on macOS via `open`)
Command Reference
Shortcuts:
-h/--helpis available everywhere.- No custom short flags are defined; use full
--long-optionflags.
Commands:
mcpway [OPTIONS](run gateway)mcpway generate --definition <PATH> --out <DIR> [OPTIONS]mcpway regenerate --metadata <PATH> [OPTIONS]mcpway connect [ENDPOINT] [OPTIONS]mcpway discover [OPTIONS]mcpway import [OPTIONS]mcpway logs <COMMAND>mcpway logs tail [OPTIONS]
mcpway [OPTIONS]
--stdio --sse --streamable-http --output-transport --port --base-url --sse-path --message-path --streamable-http-path --log-level --cors --health-endpoint --header --env --oauth2-bearer --stateful --session-timeout --protocol-version --runtime-prompt --runtime-admin-port --runtime-admin-host --runtime-admin-token --retry-attempts --retry-base-delay-ms --retry-max-delay-ms --circuit-failure-threshold --circuit-cooldown-ms
mcpway generate
--definition --server --out --artifact-name --bundle-mcpway --no-bundle-mcpway --mcpway-binary --compile-wrapper --no-compile-wrapper
mcpway regenerate
--metadata --definition --server --out --bundle-mcpway --no-bundle-mcpway --mcpway-binary --compile-wrapper --no-compile-wrapper
mcpway connect
--server --stdio-cmd --stdio-arg --stdio-env --stdio-wrapper --save-wrapper --protocol --header --oauth2-bearer --oauth-profile --oauth-issuer --oauth-client-id --oauth-scope --oauth-flow --oauth-no-browser --oauth-cache --oauth-login --oauth-logout --oauth-audience --save-profile --registry --profile-name --retry-attempts --retry-base-delay-ms --retry-max-delay-ms --circuit-failure-threshold --circuit-cooldown-ms --log-level --protocol-version
mcpway discover
--from --project-root --json --strict-conflicts --search --transport --scope --enabled-only --sort --order --offset --limit
mcpway import
--from --project-root --json --strict-conflicts --registry --save-profiles --bundle-mcpway --compile-wrapper
mcpway logs tail
--file --lines --level --transport --json --no-follow
Runtime Admin API
When --runtime-admin-port is set, the admin server exposes:
GET /v1/runtime/healthGET /v1/runtime/metrics(JSON)GET /v1/runtime/metrics.prom(Prometheus text)POST /v1/runtime/defaultsPOST /v1/runtime/session/{id}GET /v1/runtime/sessionsPOST /v1/discovery/search
Auth controls:
--runtime-admin-token(orMCPWAY_RUNTIME_ADMIN_TOKEN) acceptsAuthorization: Bearer <token>.--runtime-admin-host+ loopback policy govern network exposure.
Migration notes (breaking change):
- Legacy
/runtime/*routes were removed; use/v1/runtime/*. - Legacy
x-mcpway-tokenheader was removed; useAuthorization: Bearer <token>. - Legacy camelCase CLI flags were removed; use canonical kebab-case flags.
- Tool API alias invocation was removed; call tools by canonical name only.
- Windsurf legacy config path
~/.codeium/mcp_config.jsonis no longer read. - Discovery source parsers now require canonical source keys (for example no
mcp.serversfallback in Claude/VSCode parser paths). - OpenCode discovery now reads only
environment(noenvfallback). - Tool API transport now reads only
Mcp-Session-Idfor session capture. - Gateway session handling now uses canonical
Mcp-Session-Idonly. - Connect wrapper JSON now requires
normalized.command,normalized.args, andnormalized.env_template. transport=sseURL query hint inference was removed; only explicit type/path/scheme inference remains.- Generate definition parsing now requires top-level
mcpServers; root-level server objects are no longer accepted.