For Claude and Claude Code users, this is a neat example of where MCP starts to feel genuinely useful rather than just theoretical. Instead of wiring an LLM to some abstract API demo, this project plugs Claude into a real household device: a Shark/SharkNinja robot vacuum that can be started, paused, docked, or sent to specific rooms in plain language.
sharkclean-mcp is an MCP server for SharkClean / SharkNinja robot vacuums.start_cleaning and clean_rooms verify that the robot is online before issuing commands.uv and Python 3.10 or newer.claude mcp add command, or via .mcp.json.shark-mcp-rc, for scripting and cron jobs.What strikes me is that this is exactly the kind of MCP project that makes the protocol feel practical. A robot vacuum is a small thing, sure, but it’s also a very believable one: “vacuum the kitchen,” “send it home,” “what’s the battery?” are the sort of tasks that map cleanly to natural language and don’t need a human to babysit them.
I think the most interesting part here is not the vacuum control itself, but the backend archaeology. The README is unusually candid about the fact that older community tooling targets Ayla, while newer devices live on SharkNinja’s “skegox” cloud. That is the real story: the project isn’t just an MCP wrapper, it’s a compatibility bridge for devices that had fallen out of reach of older integrations.
I’d be a little cautious about the auth flow, though. The browser-based one-time login is workable, but it’s also a reminder that consumer IoT clouds are fragile, hostile to automation, and not built with developer ergonomics in mind. The README is honest about that, which I appreciate. If this were my setup, I’d probably test it with one robot first, verify the live map and room naming, and then use Claude Code to trigger cleaning in a few scripted routines rather than treating it like a toy voice assistant.
What I like most is the restraint: the server refuses to fire commands if the robot is offline, validates room targets against the live map, and explicitly warns that SharkNinja could change the backend at any time. That’s the right tone for unofficial reverse-engineered infrastructure. It’s useful, but it’s not magic.
The takeaway: this is a strong little example of MCP doing something concrete, useful, and slightly delightful. Not hype — just a well-scoped bridge between Claude and a real device I’d actually want to control from text.