[Feature]: Forward/aggregate upstream MCP server instructions in gateway initialize response
Summary
When Bifrost's MCP Gateway aggregates one or more upstream MCP servers, the gateway's initialize response does not expose any instructions field, and the instructions configured on the upstream servers are silently dropped.
Per the MCP spec, a server may return an instructions string in the initialize result to tell the client how to use its tools/resources. Many servers use this (e.g. Outline's workspace-level "Additional MCP instructions" field). Routed through Bifrost, that guidance never reaches the client.
Reproduce
- Configure an upstream MCP server in Bifrost that sets a non-empty
instructionsvalue in itsinitializeresult (e.g. self-hosted Outline with "Additional instructions" set under AI settings). - Connect a client to the Bifrost MCP gateway endpoint and run the
initializehandshake.
curl -s -X POST http://<bifrost>:8083/mcp \
-H "Authorization: Bearer <key>" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"0.0.1"}}}'Observed
serverInfo: {"name":"dev","version":"v1.5.11"}
instructions present: falseThe gateway builds its own serverInfo and returns no instructions field; upstream instructions are not forwarded. Same on v1.6.0. A source scan finds Instructions only on LLM request params (system message), speech, realtime, and websocket-log types — nothing in the MCP gateway initialize path.
Expected
The gateway's initialize response should surface upstream server instructions. For multiple upstream servers, aggregate them (e.g. concatenated, each prefixed/labeled with its source server name).
Proposed (open to discussion)
- Aggregate non-empty upstream
instructionsinto the gatewayinitializeresult, labeled per source server. - Optional config toggle to enable/disable forwarding, and/or a gateway-level override/prepend string.
Why it matters
Without this, server-authored usage policies and conventions (e.g. "always update this doc on relevant changes") are invisible to the client and have to be duplicated manually in each client's system prompt — defeating the point of setting them on the server.
Environment
- Bifrost v1.5.11 (also confirmed on v1.6.0), MCP HTTP gateway, multiple aggregated upstream MCP servers.
Source: maximhq/bifrost