jwx-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jwx-mcpturn on the kitchen light"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jwx-mcp
The Justworx MCP server — exposes Justworx devices to AI agents (Claude, ChatGPT,
agent frameworks) as MCP tools (control) and resources (read-only state), backed
entirely by the public Developer API (/api/dev/v1).
It is a thin, standalone client of the Developer API: it calls the gateway over HTTPS, holding no device keys — actuation flows through the gateway to the Justworx platform.
Two run modes, one server core (the tools/resources are transport-agnostic):
stdio (
src/index.js) — a client (Claude Desktop, etc.) launches it locally with a singlejwx_live_API key. This is the local/desktop path.remote (
src/http-entry.js) — a hosted, multi-tenant OAuth 2.1 Resource Server over the MCP Streamable HTTP transport, for clients that can't launch a local process (claude.ai web, ChatGPT connectors). Each caller brings their own OAuth access token; see below.
Tools
Tool | What |
| List accessible devices (filters: |
| Full live twin state of one device (IO, rules, network, location). |
| Recent event history (time window + type filter). |
| Set an IO and hold it. |
| Drive an IO for |
| Enable/disable an on-device rule. |
Related MCP server: eyeot-mcp
Resources
justworx://devices— the accessible device list.justworx://devices/{serial}— live state for one device.
Configure & run
The server speaks stdio (how MCP clients launch a local server). It needs a Developer API
key — issue one via the portal / the gateway's /manage/keys API.
// Claude Desktop / MCP client config
{
"mcpServers": {
"justworx": {
"command": "node",
"args": ["C:/Users/Wkyle101/jwx-mcp/src/index.js"],
"env": {
"JWX_API_KEY": "jwx_live_…",
"JWX_API_BASE_URL": "https://dev-api.justworx.com/api/dev/v1"
}
}
}
}Inspect it locally with the MCP Inspector:
JWX_API_KEY=jwx_live_… npx @modelcontextprotocol/inspector node src/index.jsRemote mode (hosted, OAuth 2.1)
For hosted clients (claude.ai web, ChatGPT connectors) that can't spawn a local process, run the Streamable HTTP server. It is a standard OAuth 2.1 Resource Server: it does not issue tokens, it validates the ones from the OAuth authorization server and forwards each caller's token to the Developer API (the gateway accepts either an API key or an OAuth token). Fully multi-tenant — a fresh server is built per request, bound to that caller's token; no shared key, no cross-tenant state.
npm run start:http # → http://0.0.0.0:$MCP_HTTP_PORT/mcpEndpoint:
POST /mcp(Streamable HTTP, stateless).GET /healthzfor liveness.OAuth discovery (so clients self-register + authorize):
GET /.well-known/oauth-protected-resource(RFC 9728 → points at the AS) andGET /.well-known/oauth-authorization-server(RFC 8414 mirror). An unauthenticated call returns401+WWW-Authenticate: Bearer resource_metadata="…".Tokens must be audience-bound (RFC 8707) to
MCP_RESOURCE_URL; scopes map to Developer-API scopes.
Deployment: run this server behind an HTTPS reverse proxy or tunnel and publish it at your resource URL (e.g.
mcp.justworx.com). It validates tokens from the OAuth authorization server athttps://oauth.justworx.com. The OAuth Resource-Server layer is complete and covered by tests against a stub issuer. SeeDEPLOY-REMOTE.md.
Config (env)
Var | Default | Notes |
| (stdio only) | A |
|
| Gateway base; point at a local gateway for testing. |
|
| Per-request timeout. |
|
| Remote server listen port. |
|
| This server's public URL = its OAuth resource id (token audience). |
|
| The OAuth authorization server (issuer) whose tokens are accepted. |
|
| AS JWKS for token validation. |
Test
npm test # node:test — connects a real MCP client over an in-memory transportTests drive an actual MCP Client against the server with an injected fake API client; the
HTTP client itself is also verified end-to-end against a live jwx-dev-api (mock upstream).
Layout
src/apiClient.js thin fetch client for /api/dev/v1 (bearer: api key OR OAuth token)
src/server.js buildServer({client}) — tools + resources (transport-agnostic)
src/config.js env config (stdio + remote/OAuth)
src/index.js stdio entrypoint
src/oauth.js OAuth 2.1 token verifier (JWKS) — Resource Server side
src/http.js remote app: Streamable HTTP + OAuth discovery + per-request token forwarding
src/http-entry.js remote entrypoint (npm run start:http)
test/server.test.js stdio: MCP client ⇄ server over in-memory transport
test/http.test.js remote: real Streamable-HTTP MCP client + stub AS (JWKS) → authed tool callsMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceA general-purpose MCP gateway that exposes your local CLI skills to any AI assistant.Last updated231MIT
- AlicenseCqualityCmaintenanceAn MCP server that bridges AI agents to the eyeot ERP, exposing ~600 business actions (CRM, sales, stock, HR, finance, etc.) as MCP tools over stdio via OAuth 2.1 authentication.Last updated331MIT
- Flicense-qualityCmaintenanceExposes MCP tools that enable remote LLMs to query local Docker containers, OS processes, and system services in real time.Last updated
- Flicense-qualityDmaintenanceBridges stdio-based LLM harnesses to OAuth-protected remote MCP servers via Streamable HTTP, handling PKCE browser login and token refresh automatically.Last updated10
Related MCP Connectors
Artifact store for AI agents. Hosted OAuth at mcp.artifacta.io/mcp; local stdio via npm/PyPI.
StremAI MCP: shared memory for AI coding agents. Connected agents can recall. OAuth + local stdio.
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JustworxCloud/mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server