My Coding Agent Could Render One Android Layout. A Real Screen Needed Activity, Fragment, RecyclerView and Overlays. A developer built android-ui-renderer-mcp, an MCP server that renders composed Android screens — an Activity shell, Fragment container, RecyclerView rows and loading overlays — from real app XML resources while skipping the Fragment runtime, DI, navigation and networking. A new render_target tool with the activity_fragment kind inflates the Activity and Fragment layouts separately and fills list rows and overlays from deterministic request fixtures, freezing indeterminate ProgressBars so screenshots stay reproducible for automated visual checks. My coding agent could already render a single Android XML layout through Robolectric and get back a PNG plus a View Tree with pixel bounds. Then I pointed it at a real screen from a work app, and one layout stopped being enough. A real screen is an Activity shell, a Fragment container, a RecyclerView with data, and states like a loading overlay. Launching the production Fragment would drag in DI, navigation, networking and the rest of the app's runtime. I wanted something narrower: a screen real enough for visual checks, without running the app. This is how android-ui-renderer-mcp https://github.com/hram/android-ui-renderer-mcp got composed-screen rendering. The work screen can't be shown, so every image here is a render of an open demo app in the same repository sample/ https://github.com/hram/android-ui-renderer-mcp/tree/main/sample . It has the same structure — Activity with a toolbar, Fragment, RecyclerView, master-detail, loading overlay — and each image can be reproduced from the request stored next to it. Activity XML — real Fragment XML — real item layout — real drawable — real Fragment runtime — not run DI — not run navigation — not run network — not run data — set explicitly That is the main design decision: the renderer uses the app's real UI resources, but takes runtime state from a deterministic request. Otherwise it becomes one more way to run the app, only harder than an emulator. A new render target tool supports one target kind, activity fragment . It inflates the Activity XML, finds the container, inflates the Fragment XML separately and inserts it. The production Fragment class never starts. { "target": { "kind": "activity fragment", "activityLayout": "activity main", "containerId": "fragmentContainer", "fragmentLayout": "fragment library" }, "widthPx": 1920, "heightPx": 1200, "densityDpi": 240, "orientation": "landscape" } The toolbar title and menu icons come from XML app:title , app:menu ; no Activity code ran. The details on the right are an