PluginBench
MCP Server
Active
MIT

nodrix MCP Server

live.nodrix/nodrix

Self-hosted IoT platform with realtime dashboards, automations, and AI control via MCP.

What is the nodrix MCP server?

The nodrix MCP server is a native Model Context Protocol integration for nodrix, a self-hosted IoT telemetry and control platform. It exposes 12 read tools and 16 write tools (when enabled) to let AI assistants query live and historical device data, manage projects and automations, and actuate ESP32/Arduino hardware remotely.

nodrix is a single-tenant IoT platform you deploy to your own Cloudflare account. Hardware sends telemetry over HTTPS or WebSocket; variables auto-create on first sight. Build realtime drag-and-drop dashboards, set up visual automations with webhooks and integrations, and read everything back through a clean API. The native MCP server lets Claude or other AI assistants read telemetry and control devices without the hardware being physically connected to the assistant's machine.

How to install nodrix

Copy-paste configuration for popular MCP clients.

transport: http
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • Authorization
    required
    secret

    A nodrix API token, prefixed with 'Bearer '. Mint one in Settings, and enable MCP under Settings > More.

~/.cursor/mcp.json
{
  "mcpServers": {
    "nodrix": {
      "url": "https://{host}/v1/mcp/oauth"
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • list_projects — List all projects accessible to the token.
  • list_variables — List variables in a project.
  • get_state — Get the latest state of all variables in a project.
  • get_series — Get time-series telemetry data for a variable.
  • list_dashboards — List dashboards in a project.
  • get_dashboard — Get dashboard configuration and widgets.
  • list_widget_types — List available widget types.
  • list_widgets — List widgets in a dashboard.
  • list_block_types — List available automation block types.
  • list_integration_kinds — List available integration types.
  • list_automations — List automations in a project.
  • list_integrations — List integrations in a project.
  • set_variable — Write a value to a variable (e.g., toggle a relay).
  • run_automation — Trigger an automation manually.
  • emit_event — Emit an event to trigger automations.
  • test_integration — Test an integration endpoint.
  • create_project — Create a new project.
  • update_project — Update project settings.
  • create_variable — Create a variable.
  • update_variable — Update variable metadata.

Use cases

  • Monitor ESP32/Arduino sensor data (temperature, humidity, pressure) in real-time and query historical trends.
  • Automate hardware control: trigger relays, adjust setpoints, or send alerts based on variable thresholds or schedules.
  • Build custom dashboards with embeddable Web Components to visualize IoT metrics in your own application.
  • Ask Claude to read current device state and execute control commands without physical access to the hardware.
  • Set up multi-user access with role-based permissions and audit logging for team IoT projects.

nodrix MCP server FAQ

What is the nodrix MCP server?

It is a native Model Context Protocol integration that exposes nodrix's telemetry and control APIs to AI assistants like Claude. It includes 12 read tools (query projects, variables, state, time-series, dashboards, automations, integrations) and 16 write tools (create/update resources, set variables, run automations, emit events).

Is nodrix free?

nodrix is open source (MIT license) and self-hosted on your Cloudflare account. Cloudflare's free tier covers small deployments; costs scale with usage (Workers, Durable Objects, D1, R2).

How do I install nodrix in Cursor or Claude?

Deploy nodrix to your Cloudflare account (one-click at nodrix.live or `bun run deploy:platform`). Then enable the MCP server in Settings → More (`mcp_enabled` and optionally `mcp_write_enabled`). Add the endpoint `/v1/mcp` (Bearer token) or `/v1/mcp/oauth` (OAuth) to your client's MCP configuration.

What authentication does the MCP server use?

Two endpoints: `/v1/mcp` uses Bearer token auth (for CLI/IDE clients), and `/v1/mcp/oauth` uses OAuth (for claude.ai-style connectors). Both are off by default; the owner enables them in Settings.

Can the MCP server control my hardware?

Yes, but only if the owner enables `mcp_write_enabled` in Settings. By default, the server is read-only. Write tools include `set_variable` (to toggle relays or adjust setpoints), `run_automation`, and `emit_event`.

Do I need to run MQTT or a separate broker?

No. Hardware POSTs JSON telemetry directly to your nodrix deployment over HTTPS or WebSocket. Variables auto-create on first sight; no schema definition required.

README (reference)

Source of truth, from the repository.

nodrix

The IoT platform Cloudflare didn't build. Point your hardware at one endpoint over HTTPS or WebSocket, watch variables appear on their own, build realtime drag-and-drop dashboards, automate, and read it all back through a clean API — entirely on infrastructure you own. nodrix is single-tenant and open source: it deploys into your Cloudflare account on Workers, Durable Objects, D1, and R2.

Features

  • 📡 Telemetry over HTTPS or WebSocket — hardware POSTs JSON to a project; variables auto-create on first sight. No schema to define, no MQTT broker to run.
  • 📊 Realtime dashboards — a drag-and-drop widget grid streams updates over hibernating WebSockets; share any dashboard read-only by public link.
  • 🧩 Embeddable widgets — every widget is a framework-agnostic Web Component you can lift straight into your own app.
  • 🎮 Two-way control — toggles, sliders, color pickers, and buttons write values back to hardware via short polls or a control socket.
  • 🤖 Visual automations — variable, schedule, sunrise/sunset, and event triggers run conditions and actions: webhooks, code snippets, and service integrations.
  • 🔌 Integrations — fan out to HTTP, email, and chat (Slack, Telegram, Discord, and more).
  • 📖 Clean read API — latest state, time-series, and variable listings behind one token.
  • 🧠 Native MCP server — read telemetry and control hardware from an AI assistant, on devices you are not physically next to. Owner-gated and off by default; see AI assistants (MCP).
  • 👥 Multi-user — owner / admin / member roles, email invites, and social sign-in (Google, GitHub).
  • 📝 Audit log — every privileged action recorded and paginated in the UI.

Quick start

  1. Deploy to your Cloudflare account — one click, or bun run deploy:platform from a clone.

  2. Create the owner account — the first visit prompts a "Create owner account" page; the first signup becomes owner.

  3. Create a project and mint a project token from the dashboard.

  4. Send telemetry — variables are created the moment data arrives:

    curl -X POST https://<your-worker>/v1/telemetry \
      -H "Authorization: Bearer $NODRIX_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"metrics":{"temperature":23.4,"humidity":61}}'
    
  5. Read it back:

    curl https://<your-worker>/v1/projects/<project>/state \
      -H "Authorization: Bearer $NODRIX_TOKEN"
    

AI assistants (MCP)

nodrix ships a native Model Context Protocol server, so an assistant can read a project's telemetry and — once you allow it — act on the hardware. Because devices report to your deployment rather than to your laptop, the board does not need to be plugged into the machine running the assistant; it can be in another building.

Two endpoints, both Streamable HTTP:

EndpointAuthFor
/v1/mcpBearer tokenCLI and IDE clients
/v1/mcp/oauthOAuthclaude.ai-style connectors

Both are off by default. The owner flips them in Settings → More:

  • mcp_enabled — the master switch. While it is off, /v1/mcp returns 404, so a disabled server looks absent rather than merely forbidden.
  • mcp_write_enabled — gates the management and control tools. Until it is on, even an admin-scope token gets read-only tools, so an assistant cannot command hardware by default.

12 read tools — list_projects, list_variables, get_state, get_series, list_dashboards, get_dashboard, list_widget_types, list_widgets, list_block_types, list_integration_kinds, list_automations, list_integrations.

16 write tools — creating and updating projects, variables, dashboards, widgets, automations, and integrations, plus set_variable (how an assistant turns a relay on), run_automation, emit_event, and test_integration.

There are no delete tools, by design. Every tool resolves its target project through the token's scope before it runs, so it cannot reach a project the token cannot.

Architecture

  • Worker (worker/) — a single Hono app. Durable Objects for Project, Dashboard, Scheduler, and the MCP agent; one Workflow for provisioning; D1 (metadata), R2 (telemetry history), KV (read cache + JWKS).
  • Web (web/) — Vue 3 + Tailwind + Reka UI admin panel and drag-and-drop dashboard builder, built and served as Worker static assets.
  • Shared (shared/) — framework-agnostic Web Component widgets, the integration catalog, and automation blocks, consumed by both web and worker so there is a single source of truth.
  • Deploy (deploy/) — the small config carrier behind the one-click Deploy to Cloudflare.
worker/   Cloudflare Worker — API, Durable Objects, Workflow
web/      Vue 3 admin panel + dashboard builder
shared/   Web Component widgets, integration catalog, automation blocks
deploy/   One-click Deploy to Cloudflare config
scripts/  Build, version, and migration generators

Storage

StoreHolds
Project DO (SQLite)Latest variable state, recent ring buffer, pending control writes, flush cursor
R2Cold telemetry history (NDJSON, partitioned by project + hour)
D1Users, sessions, accounts, projects, variables, dashboards, tokens, automations, integrations, audit log, OAuth provider config (metadata only — never any telemetry point)
KVCached /state responses and JWKS
Dashboard DOPer-dashboard subscriptions + hibernated WebSockets
Scheduler DOOne alarm at the next schedule/sunset automation fire time

Authentication

Better Auth handles sign-in. Email + password is on by default; Google and GitHub OAuth can be enabled at runtime from Settings → Sign-in providers (the owner enters a client ID + secret per provider, and the login page shows the matching buttons immediately).

The first signup on a fresh deployment becomes owner. After that, registration is closed: the owner invites people from Users, each with an owner / admin / member role. Sessions are cookie-based and persist 30 days; each device is a separate session, listed and revokable from Users.

Development

nodrix uses Bun.

bun install
bun run dev              # worker (wrangler dev)
bun run dev:web          # web (vite)
bun run typecheck
bun run build
bun run deploy:platform  # build + deploy the worker

Links

License

MIT © Arjun Krishna

Related MCP servers

PUPulsar logo

Pulsar

Active

A public stage for AI agents to express a personality, play, meet and remember shared moments.

0
JavaScript
MIT
View repository →

Put a live video feed on air and get a URL you can embed.

Compile full-stack apps from one architecture spec, with a shared Memory Fabric.

TRTraintrackr logo

GB (National Rail) train times: live departures, platforms, timetables and journey planning.

0
Python
MIT
View repository →

Local-first memory for AI agents: ground truths, failure firewall, negotiated recall over MCP.

The independent agent-commerce protocol for AI-agent checkout on any online store.