Adafruit IO MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Read Adafruit IO feeds, data, groups and dashboards; publish a data point or create a feed.
17 tools: 1 can delete or cancel things, 1 change things and 15 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads15Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http adafruit-io https://adafruit-io.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
17 tools
Deletes or cancels 1Claude Code: deny
adafruitio_publish_data_pointWRITE: publish one data point (a value) to a feed.No findings
Why it is in this group
- The name "adafruitio_publish_data_point" says "publish": a word for a change that another call does not undo.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: publish one data point (a value) to a feed. This can drive REAL DEVICES: anything subscribed to the feed (relays, motors, lights, heaters, locks, dashboard toggles) will receive and may act on the value, and it cannot be undone from here. Only publish a value the user has asked for. Counts against the account's data rate limit (30 per minute on free accounts, 60 on Plus). POST /feeds/{feed_key}/data.
Annotations the server declares
- title: Publish data point
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
Changes things 1Claude Code: ask
adafruitio_create_feedWRITE: create a new, empty feed (private by default), optionally inside an existing group.No findings
Why it is in this group
- The name "adafruitio_create_feed" says "create": a word for a change.
Description, as the server wrote it WRITE: create a new, empty feed (private by default), optionally inside an existing group. Adds a feed only; it does not change or delete anything existing, and fails if the name is taken. POST /feeds.
Annotations the server declares
- title: Create feed
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 15Claude Code: allow
adafruitio_get_dashboardOne dashboard by key.No findings
Why it is in this group
- The name "adafruitio_get_dashboard" says "get": a word for reading.
Description, as the server wrote it One dashboard by key. GET /dashboards/{dashboard_key}.
Annotations the server declares
- title: Get dashboard
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_get_data_pointOne stored data point of a feed by its id.No findings
Why it is in this group
- The name "adafruitio_get_data_point" says "get": a word for reading.
Description, as the server wrote it One stored data point of a feed by its id. GET /feeds/{feed_key}/data/{id}.
Annotations the server declares
- title: Get data point
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_get_feedOne feed by key: name, description, unit, visibility, last value, status settings and the groups it belongs to.No findings
Why it is in this group
- The name "adafruitio_get_feed" says "get": a word for reading.
Description, as the server wrote it One feed by key: name, description, unit, visibility, last value, status settings and the groups it belongs to. GET /feeds/{feed_key}.
Annotations the server declares
- title: Get feed
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_get_feed_chartAggregated chart data for a feed: values sliced by `resolution` minutes over the last `hours` (or a start/end range), using avg, sum, min, max, val or val_count.No findings
Why it is in this group
- The name "adafruitio_get_feed_chart" says "get": a word for reading.
Description, as the server wrote it Aggregated chart data for a feed: values sliced by `resolution` minutes over the last `hours` (or a start/end range), using avg, sum, min, max, val or val_count. Good for trends without downloading every point. GET /feeds/{feed_key}/data/chart.
Annotations the server declares
- title: Get feed chart data
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_get_feed_detailsA feed with its details block: first and last data point and the number of stored points.No findings
Why it is in this group
- The name "adafruitio_get_feed_details" says "get": a word for reading.
Description, as the server wrote it A feed with its details block: first and last data point and the number of stored points. GET /feeds/{feed_key}/details.
Annotations the server declares
- title: Get feed details
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_get_groupOne group by key with its feeds.No findings
Why it is in this group
- The name "adafruitio_get_group" says "get": a word for reading.
Description, as the server wrote it One group by key with its feeds. GET /groups/{group_key}.
Annotations the server declares
- title: Get group
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_get_last_dataThe most recent data point of a feed (value, location, created_at).No findings
Why it is in this group
- The name "adafruitio_get_last_data" says "get": a word for reading.
Description, as the server wrote it The most recent data point of a feed (value, location, created_at). GET /feeds/{feed_key}/data/last.
Annotations the server declares
- title: Get latest data point
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_get_throttleThe account's data rate limit (data-record modifications per minute: 30 on free accounts, 60 on Plus) and the current active data rate.No findings
Why it is in this group
- The name "adafruitio_get_throttle" says "get": a word for reading.
Description, as the server wrote it The account's data rate limit (data-record modifications per minute: 30 on free accounts, 60 on Plus) and the current active data rate. Check it before publishing many points. GET /api/v2/{username}/throttle.
Annotations the server declares
- title: Get data rate limit
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_get_userThe Adafruit IO account this key belongs to: id, name, username, time zone, created/updated times, plus the data rate limit when reported.No findings
Why it is in this group
- The name "adafruitio_get_user" says "get": a word for reading.
Description, as the server wrote it The Adafruit IO account this key belongs to: id, name, username, time zone, created/updated times, plus the data rate limit when reported. GET /api/v2/user.
Annotations the server declares
- title: Get user
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_list_activitiesThe account's activity log (feed/data/dashboard changes), optionally within a time range.No findings
Why it is in this group
- The name "adafruitio_list_activities" says "list": a word for reading.
Description, as the server wrote it The account's activity log (feed/data/dashboard changes), optionally within a time range. GET /activities.
Annotations the server declares
- title: List activity log
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_list_blocksThe blocks (widgets: gauges, toggles, charts, sliders...) of a dashboard with their feeds, position and properties.No findings
Why it is in this group
- The name "adafruitio_list_blocks" says "list": a word for reading.
Description, as the server wrote it The blocks (widgets: gauges, toggles, charts, sliders...) of a dashboard with their feeds, position and properties. Integration secrets in properties are removed. GET /dashboards/{dashboard_key}/blocks.
Annotations the server declares
- title: List dashboard blocks
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_list_dashboardsList the account's dashboards with key, name, description and visibility.No findings
Why it is in this group
- The name "adafruitio_list_dashboards" says "list": a word for reading.
Description, as the server wrote it List the account's dashboards with key, name, description and visibility. GET /dashboards.
Annotations the server declares
- title: List dashboards
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_list_feed_dataData points of a feed (max 1000 per call).No findings
Why it is in this group
- The name "adafruitio_list_feed_data" says "list": a word for reading.
Description, as the server wrote it Data points of a feed (max 1000 per call). Newest first, except that with start_time the API returns the oldest page after that time. Filter by time range and limit; to read further back call again with the reply's next_page_args (the same filters plus `before`). GET /feeds/{feed_key}/data.
Annotations the server declares
- title: List feed data
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_list_feedsList all of the account's feeds with key, name, description, unit, visibility, enabled flag, last value and last update.No findings
Why it is in this group
- The name "adafruitio_list_feeds" says "list": a word for reading.
Description, as the server wrote it List all of the account's feeds with key, name, description, unit, visibility, enabled flag, last value and last update. GET /feeds.
Annotations the server declares
- title: List feeds
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
adafruitio_list_groupsList the account's groups (named sets of feeds) with their feeds.No findings
Why it is in this group
- The name "adafruitio_list_groups" says "list": a word for reading.
Description, as the server wrote it List the account's groups (named sets of feeds) with their feeds. GET /groups.
Annotations the server declares
- title: List groups
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.3.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http adafruit-io https://adafruit-io.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__adafruit-io__adafruitio_get_user",
"mcp__adafruit-io__adafruitio_get_throttle",
"mcp__adafruit-io__adafruitio_list_feeds",
"mcp__adafruit-io__adafruitio_get_feed",
"mcp__adafruit-io__adafruitio_get_feed_details",
"mcp__adafruit-io__adafruitio_list_feed_data",
"mcp__adafruit-io__adafruitio_get_last_data",
"mcp__adafruit-io__adafruitio_get_data_point",
"mcp__adafruit-io__adafruitio_get_feed_chart",
"mcp__adafruit-io__adafruitio_list_groups",
"mcp__adafruit-io__adafruitio_get_group",
"mcp__adafruit-io__adafruitio_list_dashboards",
"mcp__adafruit-io__adafruitio_get_dashboard",
"mcp__adafruit-io__adafruitio_list_blocks",
"mcp__adafruit-io__adafruitio_list_activities"
],
"ask": [
"mcp__adafruit-io__adafruitio_create_feed"
],
"deny": [
"mcp__adafruit-io__adafruitio_publish_data_point"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as adafruit-io. Review it before you use it.