The Model Context Protocol from both ends: building a TypeScript MCP server that does not corrupt its own stdio stream, registering it in Claude Code and Cursor, and debugging a server that never shows up.