Mcpway
No description available
Ask AI about Mcpway
Powered by Claude · Grounded in docs
I know everything about Mcpway. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
mcpway
mcpway runs MCP stdio servers over SSE, WebSocket, Streamable HTTP, and gRPC.
Install
cargo install mcpway
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
cargo build --release -p mcpway
./target/release/mcpway --stdio "./my-mcp-server --root ." --port 8000
Bridge Modes
Examples of supported input/output pairs:
# stdio -> sse (default output for --stdio)
mcpway --stdio "./my-mcp-server --root ." --port 8000
# stdio -> stdio (managed relay mode)
mcpway --stdio "./my-mcp-server --root ." --output-transport stdio
# stdio -> ws
mcpway --stdio "./my-mcp-server --root ." --output-transport ws --port 8000
# stdio -> streamable-http
mcpway --stdio "./my-mcp-server --root ." --output-transport streamable-http --port 8000
# stdio -> grpc
mcpway --stdio "./my-mcp-server --root ." --output-transport grpc --port 8000
# sse -> stdio
mcpway --sse https://example.com/sse
# streamable-http -> stdio
mcpway --streamable-http https://example.com/mcp
For endpoint-first usage, use connect:
mcpway connect https://example.com/mcp
mcpway connect wss://example.com/ws --protocol ws
mcpway connect grpc://127.0.0.1:50051 --protocol grpc
Cargo Workspace
Run from repository root:
cargo metadata --no-deps
cargo check -p mcpway
cargo test -p mcpway
cargo run -p mcpway -- --help
Release Smoke Test (macOS)
Run this on a macOS host before cutting a release:
cargo check -p mcpway
cargo test -p mcpway
# stdio -> stdio
cargo run -p mcpway -- --stdio "./my-mcp-server --root ." --output-transport stdio
# stdio -> sse
cargo run -p mcpway -- --stdio "./my-mcp-server --root ." --output-transport sse --port 8000
# stdio -> grpc
cargo run -p mcpway -- --stdio "./my-mcp-server --root ." --output-transport grpc --port 50051
# oauth flow (verifies browser launch on macOS via `open`)
cargo run -p mcpway -- connect https://example.com/mcp --oauth-login
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 web [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
mcpway web
--host --port --log-file --admin-base-url --admin-token --auth-token --theme-catalog-url --theme-cache-ttl-seconds --theme-cache-file --no-open-browser --log-level
Starts a minimal MCPway web inspector with:
- Live log stream over WebSocket (
/api/logs/ws) and recent log query (/api/logs/recent) - Optional runtime admin proxy panels (
/api/runtime/*,/api/discovery/search) - Theme catalog support for iTerm2-style schemes (
/api/themes/catalog,/api/themes/refresh)
Examples:
# local-only web inspector (default bind 127.0.0.1:5173)
mcpway web
# use a specific log file and runtime admin endpoint
mcpway web --log-file ~/.mcpway/logs/mcpway.ndjson --admin-base-url http://127.0.0.1:9101
# protect API routes with a bearer token
mcpway web --auth-token my-web-token
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.
