A remote MCP server that turns your personal devices into callable resources through authenticated capability invocation. Built on Supabase with OAuth 2.1 auth, it exposes tools like list_devices, invoke_device_capability, and get_artifact so LLM clients can discover what your phone or laptop can do and trigger one-shot actions like camera_capture, screen_capture, or contacts.find_contact. The control plane lives in Postgres with RLS, jobs get queued for device runtimes to consume, and results come back as structured data or artifact references. Reach for this when you want Claude or other agents to coordinate across your own hardware without building yet another API gateway. v1 focuses on request-response patterns, with WebRTC streaming planned for v2.
Sensact is a Supabase-hosted remote MCP device platform.
The goal is to let LLM clients such as Codex or Claude discover and invoke capabilities on user-owned devices through a standard MCP server, while Supabase Auth provides the OAuth 2.1 authorization flow and Postgres + Realtime + Storage provide the control plane.
Sensact is prepared for the official MCP Registry as a remote-only public preview server.
io.github.sensact-agents/sensacthttps://github.com/sensact-agents/Sensacthttps://helavgrvwipmdvyejfom.supabase.co/functions/v1/mcphttps://helavgrvwipmdvyejfom.supabase.co/functions/v1/mcp/.well-known/oauth-protected-resourcehttps://helavgrvwipmdvyejfom.supabase.co/auth/v1/.well-known/oauth-authorization-serverv1 is focused on one-shot device capability invocation:
Reference v1 capabilities:
vision.camera_capturecontacts.find_contactvision.screen_capturePlanned later phases:
v2: WebRTC media sessions for realtime audio/videov3: advanced actions and realtime inference orchestration/ and /oauth/consentNot part of this repository snapshot:
Implemented in this repository:
Supabase Edge Function MCP gateway at supabase/functions/mcpWWW-Authenticate challenge for remote MCP OAuthlist_devices, list_device_capabilities, invoke_device_capability, get_artifactSupabase AuthKnown limitations:
invoke_device_capability requires an actual device runtime to consume jobs and write resultshttps://www.sensactagent.com/oauth/consent in productionNode.js 20+npmSupabase CLISupabase project with:
cd /Users/luolingfeng/Sensact/services/mcp-service
npm install
npm run typecheck
cd /Users/luolingfeng/Sensact/services/oauth-consent-app
cp .env.example .env
Set:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEYThen run:
npm install
npm run dev
For local development the web auth app runs at:
http://127.0.0.1:3000/
http://127.0.0.1:3000/oauth/consent
Production web auth URLs:
https://www.sensactagent.com/
https://www.sensactagent.com/oauth/consent
Push migrations:
cd /Users/luolingfeng/Sensact
supabase db push --linked --yes
Deploy the MCP function:
cd /Users/luolingfeng/Sensact
supabase functions deploy mcp --project-ref <project-ref> --use-api --no-verify-jwt
--no-verify-jwt is intentional. The gateway must return its own 401 + WWW-Authenticate challenge for remote MCP discovery.
Public preview server URL:
https://helavgrvwipmdvyejfom.supabase.co/functions/v1/mcp
Public preview protected resource metadata:
https://helavgrvwipmdvyejfom.supabase.co/functions/v1/mcp/.well-known/oauth-protected-resource
Public preview authorization server metadata:
https://helavgrvwipmdvyejfom.supabase.co/auth/v1/.well-known/oauth-authorization-server
Deployment template:
https://<project-ref>.supabase.co/functions/v1/mcp
https://<project-ref>.supabase.co/functions/v1/mcp/.well-known/oauth-protected-resource
https://<project-ref>.supabase.co/auth/v1/.well-known/oauth-authorization-server
Registry lookup:
curl "https://registry.modelcontextprotocol.io/v0/servers?search=io.github.sensact-agents/sensact"
Fallback install for Codex:
codex mcp add sensact --url https://helavgrvwipmdvyejfom.supabase.co/functions/v1/mcp
Log in through Supabase OAuth:
codex mcp login sensact
Check status:
codex mcp list
codex mcp get sensact
Fallback install for Claude Code:
claude mcp add --transport http sensact https://helavgrvwipmdvyejfom.supabase.co/functions/v1/mcp
The repository publishes to the official MCP Registry from Git tags via GitHub Actions OIDC.
Create and push a release tag:
git tag vX.Y.Z
git push origin vX.Y.Z
The workflow at .github/workflows/publish-mcp.yml will:
services/mcp-serviceservices/oauth-consent-appserver.json against its $schemaserver.jsonmcp-publisher login github-oidcio.github.sensact-agents/sensact to the RegistryAfter publication, verify the public entry:
curl "https://registry.modelcontextprotocol.io/v0/servers?search=io.github.sensact-agents/sensact"
Consent app:
cd /Users/luolingfeng/Sensact/services/oauth-consent-app
npm test
npm run build
MCP shared package:
cd /Users/luolingfeng/Sensact/services/mcp-service
npm run typecheck
Registry publication assets:
cd /Users/luolingfeng/Sensact
node --test scripts/registry-publication.test.mjs
node scripts/validate-server-json.mjs
node scripts/smoke-test-remote-mcp.mjs
Remote MCP discovery:
curl -i https://helavgrvwipmdvyejfom.supabase.co/functions/v1/mcp
curl -i https://helavgrvwipmdvyejfom.supabase.co/functions/v1/mcp/.well-known/oauth-protected-resource
curl -i https://helavgrvwipmdvyejfom.supabase.co/auth/v1/.well-known/oauth-authorization-server
Current repository bootstrap:
d394e5bv0.1.0