Goal: Map a running MCP connection onto the host-client-server model by hand, and prove to yourself that the JSON-RPC 2.0 data layer is identical whether it travels over stdio or over HTTP. Everything in this lab uses free, local, open-source tools — no paid API keys required. Steps:
pip install "mcp[cli]", SDK 1.2.0+) in a fresh virtual environment.server.py) that exposes one Tool (e.g., get_word_count(text: str)), one Resource (e.g., a static readme://notes resource), and one Prompt template. Keep it under 40 lines.mcp dev server.py or npx @modelcontextprotocol/inspector, both free/local). Open the Inspector's network/message log and connect to your server.initialize request/response handshake and the initialized notification, (b) tools/list and resources/list discovery calls, and (c) one tools/call execution with its result. Save these as screenshots or copy the raw JSON into a text file.streamable-http run mode to the same server.py (the SDK supports this with a one-line change to the mcp.run(transport=...) call) and restart it as a local HTTP server on localhost.id fields, and payload shapes are identical, and explain in your own words which parts changed (only the transport envelope) and which didn't (the data layer).Deliverables: Submit your server.py, your captured JSON-RPC message logs (stdio and HTTP), and your one-page comparison memo (PDF or text) as an upload, or paste the memo directly into the text-entry submission box.