[ norboten ]
mcp · lab mcp-05

The Stream That Stops

· about 35 minutes · runs on ubuntu-26.04-claude · unrated

An unrated lab. It runs on your machine with no account and no network, and everything about it — the faults, the checks, the hints and the reference solution — is in the repository. An attempt on it is recorded on your profile and never moves a rating: only rated labs do. Rated and unrated labs.

The briefing

~/bin/weekly-report has Claude Code, in ~/ops-report, ask the reports MCP server to build the week's operations report. The server (/opt/reports-mcp/reports_mcp.py, settings in /etc/reports-mcp/config.json, sudo reports-mcp restart) is published through nginx on http://127.0.0.1:8080/mcp; nginx's site is /etc/nginx/conf.d/reports.conf, and sudo proxy-restart tests and reloads it. Building a report takes a few seconds, and the server reports progress as it goes.

Since the proxy went in front of it, the job says the reports tool failed. Asked directly on its own port, the server builds the report every time. The job's JSON result is ~/weekly-report.json.

This lab runs in a container, as learner with sudo. claude here is the real Claude Code 2.1.270, talking to a scripted model on this machine; it calls the server through the proxy for real.

What is expected, and graded:

  1. The job gets the report, through the proxy.
  2. Through the proxy, progress reaches the client as each step finishes, not all at the end.
  3. The server can be reached only through the proxy — every client's traffic is logged there.

What is graded

This lab runs in a container — Docker or Podman, no VM — so there is no boot to survive: the checks run once, against the state you left.

CheckObjective
01_the_report_arrivesProxy a remote MCP server's event stream without holding it back or cutting it off
02_progress_streams_through_the_proxyProxy a remote MCP server's event stream without holding it back or cutting it off
03_the_server_answers_only_the_proxyKeep a proxied MCP server reachable through its proxy only

Start it

  1. 2Labs
  2. mcp-05select this one
  3. udownload it
  4. sstart the machine

Reading

Where the lab's hints send you, level by level, as you ask for them (h, then l opens a journal section in the TUI).

Theory for this lab

3 questions on the same topic, in the lab's Theory tab. They never affect the lab's grade. Here they are, to answer in place:

Question 1

A remote MCP server streams a progress event every 3 seconds during a 9-second tool call. nginx in front has proxy_buffering on and proxy_read_timeout 300s. What does the client see?

Question 2

What does nginx's proxy_read_timeout limit?

Question 3

An MCP server sits behind nginx on the same machine, and ss -ltn shows it listening on 0.0.0.0:8931. Why is that a problem?