Document proxy mode and proxy port fields#852
Conversation
Cover the Proxy mode and Proxy port form fields across the registry, custom Docker image, custom source package, and custom remote MCP server flows so readers can distinguish the HTTP proxy port from the container target port. Refs #772 Co-authored-by: Cursor <cursoragent@cursor.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
Updates the ToolHive UI guide to document the Proxy mode and Proxy port fields in MCP server install/configuration flows, clarifying how ToolHive’s HTTP proxy relates to container target ports and remote transports.
Changes:
- Added documentation for Proxy mode (conditional for
stdio) and Proxy port (optional HTTP proxy listener) in the registry Local MCP flow. - Added documentation for Proxy port in the registry Remote MCP flow and the Custom remote MCP flow, noting Proxy mode is not shown for remote transports.
- Clarified target port vs proxy port in both Custom local MCP flows (Docker image and source package).
| configured for bearer-token authentication. For `sse` and `streamable-http` | ||
| transports, the MCP server already speaks HTTP, so no proxy mode selection is | ||
| needed. |
There was a problem hiding this comment.
Disagree with Copilot here, "bearer token" isn't generally hyphenated, but it shouldn't be capitalized unless specifically referring to a UI element to match.
| configured for bearer-token authentication. For `sse` and `streamable-http` | |
| transports, the MCP server already speaks HTTP, so no proxy mode selection is | |
| needed. | |
| configured for bearer token authentication. For `sse` and `streamable-http` | |
| transports, the MCP server already speaks HTTP, so no proxy mode selection is | |
| needed. |
There was a problem hiding this comment.
Agreed. Reverted to lowercase "bearer token authentication" here at 33b9ec9, and kept bold Bearer Token only when referring to the picker option label.
| The proxy transport mode that clients should use to connect to this server. | ||
| Choose **SSE** (`sse`) or **Streamable HTTP** (`streamable-http`). This | ||
| option appears only when the **transport protocol** is `stdio` and you're not | ||
| using bearer-token authentication. |
There was a problem hiding this comment.
Same as above, my suggestion would be "bearer token"
| using bearer-token authentication. | |
| using bearer token authentication. |
There was a problem hiding this comment.
Same lowercase fix applied to this Custom Docker bullet at 33b9ec9.
| The proxy transport mode that clients should use to connect to this server. | ||
| Choose **SSE** (`sse`) or **Streamable HTTP** (`streamable-http`). This | ||
| option appears only when the **transport protocol** is `stdio` and you're not | ||
| using bearer-token authentication. |
There was a problem hiding this comment.
Same as above, my suggestion would be "bearer token"
| using bearer-token authentication. | |
| using bearer token authentication. |
There was a problem hiding this comment.
Same lowercase fix applied to the Custom source bullet at 33b9ec9.
danbarr
left a comment
There was a problem hiding this comment.
Nice tightening of the target-port / proxy-port distinction. A few editorial points beyond the inline comments:
Primary issue
Default value for Proxy mode is missing
The new Proxy mode bullets describe the choice but don't say which option is the default. The CLI guide documents this at docs/toolhive/guides-cli/run-mcp-servers.mdx:363-364: "As of ToolHive CLI version 0.6.0, the default proxy mode for stdio MCP servers is streamable-http." A UI reader looking at the form needs the same information; omitting it forces them to guess or experiment.
Ask: State the default in the Proxy mode bullets, e.g., "Streamable HTTP is the default."
Secondary issues
| Issue | Recommendation |
|---|---|
Same condition phrased two ways: "the MCP server uses the stdio transport" (line 110) vs. "the transport protocol is stdio" (lines 311, 385) |
Unify on the transport protocol wording, since it points readers to the actual form field. |
| Target-port-vs-proxy-port distinction phrased two ways in the same PR: "distinct from" (line 114) vs. "separate from" (lines 315, 389) | Pick one. |
New trailing sentence on the existing Target port bullet ("Selecting stdio hides this field, since stdio servers don't expose a port from the container", lines 304-305 and 378-379) duplicates the bullet's existing parenthetical "(SSE or Streamable HTTP transports only)" |
Drop the trailing sentence; the condition is already conveyed. |
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | ||
| automatically assign a random port. This is the port that AI clients connect |
There was a problem hiding this comment.
Fix passive voice:
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | |
| automatically assign a random port. This is the port that AI clients connect | |
| Port for the HTTP proxy to listen on. If not specified, ToolHive | |
| automatically assigns a random port. This is the port that AI clients connect |
There was a problem hiding this comment.
Switched this Proxy port description to active voice at 33b9ec9: "ToolHive automatically assigns a random port".
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | ||
| automatically assign a random port. This is the port that AI clients connect |
There was a problem hiding this comment.
Fix passive voice:
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | |
| automatically assign a random port. This is the port that AI clients connect | |
| Port for the HTTP proxy to listen on. If not specified, ToolHive | |
| automatically assigns a random port. This is the port that AI clients connect |
There was a problem hiding this comment.
Same active-voice fix applied on the Custom Docker Proxy port bullet at 33b9ec9.
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | ||
| automatically assign a random port. **Proxy mode** is not shown for remote |
There was a problem hiding this comment.
Fix passive voice:
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | |
| automatically assign a random port. **Proxy mode** is not shown for remote | |
| Port for the HTTP proxy to listen on. If not specified, ToolHive | |
| automatically assigns a random port. **Proxy mode** is not shown for remote |
There was a problem hiding this comment.
Active voice applied on this bullet at 33b9ec9, kept the "Proxy mode is not shown for remote" note as suggested.
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | ||
| automatically assign a random port. This is the port that AI clients connect |
There was a problem hiding this comment.
Fix passive voice:
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | |
| automatically assign a random port. This is the port that AI clients connect | |
| Port for the HTTP proxy to listen on. If not specified, ToolHive | |
| automatically assigns a random port. This is the port that AI clients connect |
There was a problem hiding this comment.
Same active-voice fix applied to the Custom source Proxy port bullet at 33b9ec9.
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | ||
| automatically assign a random port. **Proxy mode** is not shown for remote |
There was a problem hiding this comment.
Fix passive voice:
| Port for the HTTP proxy to listen on. If not specified, ToolHive will | |
| automatically assign a random port. **Proxy mode** is not shown for remote | |
| Port for the HTTP proxy to listen on. If not specified, ToolHive | |
| automatically assigns a random port. **Proxy mode** is not shown for remote |
There was a problem hiding this comment.
Active voice applied here as well at 33b9ec9, with the "Proxy mode is not shown for remote" sentence preserved.
Address Copilot feedback on #852: align with the UI label "Bearer Token" instead of "bearer-token". Co-authored-by: Cursor <cursoragent@cursor.com>
Address danbarr's CHANGES_REQUESTED review on #852: state the default Streamable HTTP, lowercase "bearer token", switch to active voice for port assignment, standardize on "distinct from", drop redundant target-port copy, and align UI string formatting. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Thanks for the review. Pushed updates as
|
danbarr
left a comment
There was a problem hiding this comment.
All feedback addressed: default value added ("Streamable HTTP is the default."), conditional phrasing unified across the three sibling sections, "distinct from" used consistently, trailing redundant sentence on Target port removed, inline comments resolved (active voice, lowercase "bearer token authentication"). Thanks!
Description
Closes #772.
Summary
run-mcp-servers.mdx.stacklok/toolhive-studioat tagv0.30.0.Test plan
npm run buildpassesType of change
Related issues/PRs
Closes #772
Submitter checklist
Content and formatting
Made with Cursor