Connect a reviewed MCP read operation
Discover a compatible MCP server, approve one fixed read and map its JSON result to dashboard values.
A room temperature of 21.5 °C and a battery bar at 76%, read by a read_environment tool every five minutes.
- A trusted public HTTPS Streamable HTTP MCP server, with no authentication or a bearer token you can supply.
- The server’s hostname allowed in
DENFRAME_CUSTOM_BLOCK_HOSTSon the Denframe host (see Allow the API host). - A supported 2026-07-28 or 2025-11-25 server profile and an independently reviewed read-only operation. The example is a contract for a server you control, not a built-in Denframe tool.
- Microsoft and Home Assistant MCP presets are not verified; use their own connection guides first. OAuth-only servers, stdio programs and generic LAN MCP endpoints are not supported by this connection.
Follow these steps in your own Denframe. This website never connects to your household, your accounts or your devices, and never asks for your credentials.
Prepare a compatible read tool
Denframe is an MCP client: it connects outbound to an MCP server you run and reads reviewed, read-only data. It is not an MCP server, and it offers no cloud or public API for agents to control a household; its own interfaces require the household's credentials and are reachable beyond the home network only through a route its owner sets up.
Your server must advertise a read-only, non-destructive tool with bounded JSON schemas, like the
tools/listentry below. Called with{"room":"living_room"}, it returnsstructuredContentcontaining{"temperature":21.5,"battery_pct":76}. Configure and secure the server with its own deployment instructions; Denframe doesn’t install it.Example tool metadata returned by your MCP server { "name": "read_environment", "inputSchema": { "type": "object", "properties": { "room": { "type": "string", "enum": [ "living_room" ] } }, "required": [ "room" ], "additionalProperties": false }, "outputSchema": { "type": "object", "properties": { "temperature": { "type": "number" }, "battery_pct": { "type": "number", "minimum": 0, "maximum": 100 } }, "required": [ "temperature", "battery_pct" ] }, "annotations": { "readOnlyHint": true, "destructiveHint": false } }Discover operations
In Studio, open Sources, then Custom. Choose Add a custom source; the sheet asks where the data comes from.
Choose MCP server. Enter your actual endpoint in MCP endpoint (HTTPS), for example
https://mcp.example.com/mcp, and its token in Bearer token (optional) if it needs one.Under Protocol profile, choose Current · 2026 for protocol 2026-07-28 or Compatibility · 2025 for 2025-11-25. Denframe doesn’t silently downgrade between profiles.
Choose Discover operations. Discovery doesn’t call tools or read resource contents. Select
read_environmentin Saved operation.Review and run one test
Enter the arguments below in Fixed JSON arguments. Check independently that the operation and account only read the intended data; the server’s annotations are claims, not proof.
Fixed JSON arguments {"room":"living_room"}Tick I verified this operation and these arguments only read data, then choose Run test once. This authorizes one call with exactly those arguments.
Map the result
On Choose data, set up the first value and choose Add another value for the second:
Value Field path Settings Living room /temperatureMetric; °C; Hero number; expected 21.5 Battery /battery_pctRange; %; 0 to 100; Bars; expected 76 Keep Visibility on Household or Private as appropriate, then choose Preview selected values.
Approve the schedule and add it
On Preview, set Check every (seconds) to
300and tick the box that approves runningread_environmentwith the tested arguments every 300 seconds.Pick the value in Value to show, tick the dashboard under Show on, and choose Add source. Each refresh uses the saved arguments and rechecks the operation’s contract.
If the schema or read policy changes, or the server refuses the token, Denframe pauses the source and asks for review. Open it and choose Edit connection and data: re-enter the token if the server needs one, then discover, review, test and approve again. A successful review resumes an automatically paused source; a manually paused source stays paused.
JSON resources and older text results
A resource must advertise
application/jsonand return one JSON text item for the exact selected URI. Use{}as its arguments; Denframe doesn’t follow returned links.For an older tool that returns one complete JSON text item, tick Accept one complete JSON text result for older tools before testing. Structured output is preferred.
Schemas with references, regex or compositions are unavailable in this bounded implementation; use a simpler read wrapper. Sampling, prompts, user-input requests, multimodal results and control tools are not executed.
Check it worked
The dashboard shows Living room at 21.5 °C and Battery as a 76% bar, and the source’s card on the Custom page reads MCP · saved read operation.
If it doesn’t work
No eligible operation
Check readOnlyHint is true, destructiveHint is false, and the input and output schemas use the supported bounded subset. Don’t relabel a control tool as read-only.
Discovery fails
Check the actual protocol version, the allowed public host, the token and the direct endpoint. Redirects and compressed responses are rejected.
The operation requires interaction
Use an unattended read operation that needs no extra user input or OAuth discovery during a refresh.
The sample expires
Choose Run test once again. Setup samples last ten minutes; importing a dashboard doesn’t grant permission to run a tool.