Official SDK
A community hardware-planning tool whose README describes Muse ESP32 and Linux build resources. Its own explanations of SDK terms are community guidance and should be checked against the official terms.
Unofficial community directory · not affiliated with MetaUnofficial · not affiliated with Meta
About this sitemsanchezgrice/hackshop-mcp
Short answer
Runs on a computer with a Node-based MCP client and npx, without requiring a particular development board. Reasoning can use the host’s sampling capability; an optional Anthropic API key provides a fallback. Assembly simulation requires a separate Python MuJoCo worker.
Add npx hackshop-mcp to the MCP client configuration, or install dependencies and build locally with npm. The planning tools return device-specific parts and build instructions. Assembly simulation connects to a separately running worker; installing the MCP server does not flash any hardware.
A community hardware-planning tool whose README describes Muse ESP32 and Linux build resources. Its own explanations of SDK terms are community guidance and should be checked against the official terms.
MIT, as declared in the README’s license section.
Last pushed 3 Oct 2026, with 0 stars and 0 forks. This is repository activity metadata, not a build or device validation.
Source: GitHub README
Written by the project’s authors, not by Muse Gadgets Hub. Shown with the images and links the authors published, under the project’s MIT license.
Hardware-literate AI scout for tinkerers. Idea-to-hardware mapping via MCP.
You describe a project. The agent surfaces 3-5 hackable hardware options you wouldn't have thought of, with brick risk, firmware links, and a suggested eBay search query. Compose with ebay-mcp for live listings.
A tinkerer has an idea. The idea would be cooler with the right piece of hardware attached: an old screen, an abandoned smart speaker, a bricked frame, a hackable handheld. The tinkerer doesn't know what hardware exists, what's hackable, or what would creatively fit the idea. So the idea stays purely software, or gets paired with a Raspberry Pi.
This is a hardware-knowledge layer on top of LLMs. Four tools, 80 researched devices, one closed-set tag vocabulary, and a brick-risk safety rule that won't let the agent fabricate a score for hardware classes where bricks are unrecoverable. simulate_assembly drops a proposed robot into a MuJoCo physics world and tells you, honestly, whether it would actually move.
Hackshop now knows about Meta's Muse Gadgets SDK: ESP32 boards and Linux machines that can become a physical body for Muse, Meta's personal AI agent. Muse recommendations include the SDK tier, setup path, supported features, printable stand/enclosure links when available, and the required terms caveat: personal, non-commercial use only, at most 50 devices per token, no selling or public marketplace listing, and revocable access.
v0.0.5 - published on npm and hosted at https://www.hackshop.dev/mcp. The hosted MCP exposes the deterministic tools (plan_gadget, get_build_plan, assess_hackability); the npm server also includes propose_hardware and simulate_assembly. The simulation layer is live at hackshop.dev.
Hosted connector, when your client supports streamable HTTP:
{
"url": "https://www.hackshop.dev/mcp",
"transport": "streamable-http"
}Or add the local npm server to your MCP client config (Claude Desktop / Claude Code / Cursor):
{
"mcpServers": {
"hackshop": {
"command": "npx",
"args": ["-y", "hackshop-mcp"]
}
}
}ANTHROPIC_API_KEY is optional. It only improves propose_hardware in the local npm server when the MCP host cannot sample; plan_gadget, get_build_plan, and assess_hackability never need a key. Anonymous usage telemetry (tool names and timings only) is on by default in the npm server; set HACKSHOP_TELEMETRY=0 to turn it off.
propose_hardware(idea, budget_usd?, constraints?)Returns 3-5 hardware proposals, each with:
name and categorywhy_this_fits — one sentence referencing your idea explicitlyhack_difficulty (1-5)brick_risk — numeric score, OR null + "unknown" label for hard-to-recover categories with LLM-inferred riskbrick_risk_disclaimer — present when llm-inferred but score retainedfirmware_links — github repos, hackaday articlescommunity_size — tiny | small | active | thrivingebay_query_suggestion — pass to ebay-mcp's search tool for live listingsassess_hackability(device_name)Lookup by id, exact name, or substring. Returns the same shape as a single proposal. Use when you have a device in mind and want to verify hackability before searching for one to buy.
plan_gadget(idea, platform?, budget_usd?, owned_device_ids?, needs?, size?, limit?)Deterministically plans a physical gadget for an AI agent, with Meta Muse Gadgets as the first supported platform. It infers needs such as voice, screen, camera, air sensors, e-paper, round display, home-network tunnel, or Linux control; ranks supported boards; and returns:
inferred_needs, fit (all | partial | none), notes, warnings, questions, and ranked pickswhy, gaps, needs_met, within_budget, price label, firmware/build links, setup steps, and caveatsfabrication.printables with STL/STEP/SVG/fab.json URLs when a stand or enclosure existsterms for every platform represented in the picksnext_steps, starting with the build page where the human can save progressThis tool does not call an LLM and does not use the network. It never suggests selling Muse devices; the Muse SDK token terms are personal and non-commercial.
get_build_plan(device_id)Returns the full, deterministic build plan for one device: parts (with store or search links), shopping_list with explicit purchase policy, numbered steps with exact commands, machine-readable assembly, try_saying prompts, caveats, the Muse SDK terms, and agent_brief_md, a self-contained Markdown brief a coding agent can follow. It also returns the human page (https://www.hackshop.dev/build/<device_id>), raw JSON (/build/<device_id>/plan.json) and raw brief (/build/<device_id>/build.md). It never buys anything; ordering parts is left to the human.
Both hosted MCP and npm expose:
hackshop://muse/boards - JSON for every Muse board: ids, names, platform, tier, price, features, build command and build page URL.hackshop://muse/sdk-terms - text summary of Muse SDK token terms.hackshop://catalog/tags - catalog tag list.plan-muse-gadget - tells an agent to do intake, call plan_gadget, call get_build_plan, show the shopping list, ask before buying, assemble, flash and pair.simulate_assembly(assembly)Takes an Assembly IR — { idea, components[{ref,device_id,name,role}], edges[], goal{kind,spec,success_metric}, world{template,goal_xy?} } (build it from the site's assembly output or by hand) — drops it into a MuJoCo physics world, and runs a bounded, synchronous rollout (duration_s ≤ 10, default 8) on the sim-worker. It returns:
success — did the rollout pass the typed position, collision, and upright acceptance criteriasummary / post_mortem — natural-language verdict plus honest failure theatre (stuck / tipped / collisions / heading-oscillation)artifacts — hosted URLs for the rendered video, scene (MJCF), control (control.py), and telemetry.jsonmetric_value, telemetry, authored_by, world_descToday it simulates the diff-drive navigate slice; other goal kinds return an honest unsupported rather than faking a pass. Set SIM_WORKER_URL to point at a running sim-worker (defaults to http://127.0.0.1:8000). The bounded rollout here is intentionally small so it fits in a single tool call; the rich, longer, agent-driven runs happen via the web app at hackshop.dev, backed by the worker at hackshop-sim.fly.dev.
The site turns a proposal into a watchable robot: proposal → select one complete build → deterministic feasibility check → MuJoCo rollout → interactive 3D replay, with a shareable summary page you can link to. Honest by design — a robot that gets stuck on a ramp gets a post-mortem, not a green checkmark.
The current navigation slice deliberately has a narrow fidelity contract:
alternative chassis are separate candidates, never merged into one BOM;
Create 3 uses an explicit Pi + RPLIDAR build, while TurtleBot 4 Lite preserves its factory-integrated Pi/camera/lidar stack;
versioned manifests provide real outer dimensions and mass to product-specific primitive proxies (not pretend CAD);
the controller only runs when the assembly declares the 2D-lidar observations it consumes;
typed position/collision/upright criteria drive the verdict; and
the browser replay supports orbit, zoom, playback/scrubbing, world geometry, path/goal overlays, and collision/failure markers.
Live: https://hackshop.dev
Worker: https://hackshop-sim.fly.dev
Design doc: docs/v2-simulation-plan.md
The simulate_assembly MCP tool above is the bounded, single-call entry point into this same physics worker.
@modelcontextprotocol/sdkpropose_hardware delegates to the host via sampling/createMessage first, then falls back to a direct Anthropic API call (@anthropic-ai/sdk) only when optional ANTHROPIC_API_KEY is setsimulate_assembly calls out to a separate Python MuJoCo sim-worker over HTTP (SIM_WORKER_URL); the worker isn't bundled in the npm packagecatalog.json in the repo (JSON, version-controllable, 80 devices and growing)tags.md, validated at boot — server refuses to start on tag driftebay-mcp at the host level.git clone <this-repo> cd hackshop-mcp npm install npm run validate # verifies catalog + tags npm test # safety + schema + lookup tests npm run build # tsc -> dist/
Ask your agent to call plan_gadget with a desk gadget I can talk to. This should return Muse board picks instantly and without any API key. If propose_hardware returns catalog matches without reasoning, your host probably does not support sampling and no optional ANTHROPIC_API_KEY is set.
To run a locally built copy instead of npx, add to your MCP client config:
{
"mcpServers": {
"hackshop": {
"command": "node",
"args": ["/Users/YOU/hackshop-mcp/dist/server.js"]
}
}
}For idea-to-hardware-to-listings flow, also install ebay-mcp from YosefHayim/ebay-mcp.
The founder had an Electric Objects EO1 picture frame. The company shut down; the device bricked. He revived it with Claude, ~6 hours of firmware reverse-engineering. Wondered: "what if an agent already knew this stuff?" That's hackshop-mcp.
Bricking unrecoverable hardware is the single failure mode that ends this product. The catalog tracks brick-risk provenance: founder-verified | community-reported | vendor-docs | llm-inferred. For categories where bricks are unrecoverable (handheld, sbc), the server refuses to surface LLM-inferred brick-risk scores. It returns "brick-risk unknown - research before flashing" instead. This is a tested release gate. See src/safety.ts and test/safety.test.ts.
Starting with v0.0.4 the MCP server sends an anonymous ping when it starts and after each tool call. It exists so the maintainer can tell whether anyone is actually using the server.
hackshop-mcp version, MCP client name/version (e.g. claude-code), OS platform, Node major version, and a random install id stored in ~/.config/hackshop-mcp/telemetry.json.https://www.hackshop.dev/api/telemetry/mcp, which forwards to the project's PostHog.HACKSHOP_TELEMETRY=0 (or DO_NOT_TRACK=1) in the server's env. Telemetry is also off automatically in CI and under test runners. The implementation is src/telemetry.ts.See CONTRIBUTING.md. New devices come in via PR; tag changes require a tags.md edit; community-reported is the default provenance for community contributions.
MIT.

cameronapak/muse-r1
Native Android HOME app that turns a Rabbit r1 running LineageOS into a Muse gadget.

viticci/muse-pocket
An e-paper Muse companion for the Xteink X4 Pro: character, status, settings and recoverable SD firmware updates.