Last reviewed
Correct answer: C. The banner went to the stream reserved for protocol messages, and it is not a valid one.
Explanation
The principle — A reserved channel is reserved from the first byte.
Why the key is correct — On this transport the server reads JSON-RPC messages from stdin and writes JSON-RPC messages to stdout, and the rule that protects it is absolute: the server MUST NOT write anything to its stdout that is not a valid MCP message. A banner is text on that stream, so the client's reader meets something that is not a message where only messages are allowed. The fix is one line long and it is a change of stream, not a change of wording.
Why the others are wrong — The client is not obliged to tolerate stray output. Appearing before the first request does not put text outside the channel. And no amount of escaping turns a banner into a protocol message.
Remember this — On stdio, print statements are a protocol bug.
Sources — MCP first-party documentation.
Practise 10 questions on this topic
Take MCP Fundamentals — Timed Test 1 (10 questions) — scored instantly, explanation for every question, no login.