Dev builds 12-tool MCP server in 4 hours, shares hard lessons

Perufitlife wrapped 12 existing Apify Store web scrapers into a single MCP server over a weekend, sharing hard-won lessons along the way. A key early bug: implementing only the legacy SSE transport caused failures in modern MCP clients like Claude Desktop and Cursor, which require Streamable HTTP (`POST /mcp`). The fix is mounting both transports on the same server with session ID management. The post also covers silent scraper decay (eBay's DOM changed from `.s-item` to `.s-card` selectors, returning 0 items undetected), Cloudflare Turnstile defeating all stealth approaches on Yelp (resolved by switching to the Yelp Fusion API with a BYOK pattern), and Camoufox browser crashes in low-memory containers requiring at least 4GB.