Adafruit IO MCP by usefulapi
Read Adafruit IO feeds, data, groups and dashboards; publish a data point or create a feed.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"adafruit-io": {
"url": "https://adafruit-io.usefulapi.io/mcp"
}
}
}远程端点
https://adafruit-io.usefulapi.io/mcpstreamable-http它能做什么
工具清单
工具(17)
🟢adafruitio_get_user
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.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_get_throttle
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.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_list_feeds
List all of the account's feeds with key, name, description, unit, visibility, enabled flag, last value and last update. GET /feeds.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_get_feed(feed_key)
One feed by key: name, description, unit, visibility, last value, status settings and the groups it belongs to. GET /feeds/{feed_key}.
输入模式
{
"type": "object",
"properties": {
"feed_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Feed key (the URL-safe key shown in Adafruit IO, for example 'temperature'; 'group-key.feed-key' also works)."
}
},
"required": [
"feed_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_get_feed_details(feed_key)
A feed with its details block: first and last data point and the number of stored points. GET /feeds/{feed_key}/details.
输入模式
{
"type": "object",
"properties": {
"feed_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Feed key (the URL-safe key shown in Adafruit IO, for example 'temperature'; 'group-key.feed-key' also works)."
}
},
"required": [
"feed_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_list_feed_data(feed_key, start_time, end_time, limit, include, ...)
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.
输入模式
{
"type": "object",
"properties": {
"feed_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Feed key (the URL-safe key shown in Adafruit IO, for example 'temperature'; 'group-key.feed-key' also works)."
},
"start_time": {
"type": "string",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01T00:00:00Z."
},
"end_time": {
"type": "string",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01T00:00:00Z."
},
"limit": {
"description": "Maximum records to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"include": {
"description": "Comma-separated fields to return: value, lat, lon, ele, id, created_at.",
"type": "string",
"pattern": "^(value|lat|lon|ele|id|created_at)(,(value|lat|lon|ele|id|created_at))*$"
},
"before": {
"description": "Pagination token: next_before from the previous reply (keep the same other arguments).",
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"feed_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_get_last_data(feed_key, include)
The most recent data point of a feed (value, location, created_at). GET /feeds/{feed_key}/data/last.
输入模式
{
"type": "object",
"properties": {
"feed_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Feed key (the URL-safe key shown in Adafruit IO, for example 'temperature'; 'group-key.feed-key' also works)."
},
"include": {
"description": "Comma-separated fields to return: value, lat, lon, ele, id, created_at.",
"type": "string",
"pattern": "^(value|lat|lon|ele|id|created_at)(,(value|lat|lon|ele|id|created_at))*$"
}
},
"required": [
"feed_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_get_data_point(feed_key, data_id)
One stored data point of a feed by its id. GET /feeds/{feed_key}/data/{id}.
输入模式
{
"type": "object",
"properties": {
"feed_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Feed key (the URL-safe key shown in Adafruit IO, for example 'temperature'; 'group-key.feed-key' also works)."
},
"data_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Data point id (the `id` field of a data point)."
}
},
"required": [
"feed_key",
"data_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_get_feed_chart(feed_key, hours, resolution, field, start_time, ...)
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.
输入模式
{
"type": "object",
"properties": {
"feed_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Feed key (the URL-safe key shown in Adafruit IO, for example 'temperature'; 'group-key.feed-key' also works)."
},
"hours": {
"description": "Hours of history (ignored when start_time and end_time are given).",
"type": "integer",
"minimum": 1,
"maximum": 8760
},
"resolution": {
"description": "Slice size in minutes.",
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 5
},
{
"type": "number",
"const": 10
},
{
"type": "number",
"const": 30
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 120
},
{
"type": "number",
"const": 240
},
{
"type": "number",
"const": 480
},
{
"type": "number",
"const": 960
}
]
},
"field": {
"description": "Aggregation (default avg).",
"type": "string",
"enum": [
"avg",
"sum",
"val",
"min",
"max",
"val_count"
]
},
"start_time": {
"type": "string",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01T00:00:00Z."
},
"end_time": {
"type": "string",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01T00:00:00Z."
}
},
"required": [
"feed_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_list_groups
List the account's groups (named sets of feeds) with their feeds. GET /groups.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_get_group(group_key)
One group by key with its feeds. GET /groups/{group_key}.
输入模式
{
"type": "object",
"properties": {
"group_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Group key."
}
},
"required": [
"group_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_list_dashboards
List the account's dashboards with key, name, description and visibility. GET /dashboards.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_get_dashboard(dashboard_key)
One dashboard by key. GET /dashboards/{dashboard_key}.
输入模式
{
"type": "object",
"properties": {
"dashboard_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Dashboard key."
}
},
"required": [
"dashboard_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_list_blocks(dashboard_key)
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.
输入模式
{
"type": "object",
"properties": {
"dashboard_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Dashboard key."
}
},
"required": [
"dashboard_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢adafruitio_list_activities(start_time, end_time, limit)
The account's activity log (feed/data/dashboard changes), optionally within a time range. GET /activities.
输入模式
{
"type": "object",
"properties": {
"start_time": {
"type": "string",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01T00:00:00Z."
},
"end_time": {
"type": "string",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01T00:00:00Z."
},
"limit": {
"description": "Maximum entries, 1-1000.",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴adafruitio_publish_data_point(feed_key, value, lat, lon, ele)
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.
输入模式
{
"type": "object",
"properties": {
"feed_key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Feed key (the URL-safe key shown in Adafruit IO, for example 'temperature'; 'group-key.feed-key' also works)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "number"
}
],
"description": "The value to publish (text or number, up to 1000 characters)."
},
"lat": {
"description": "Latitude of the reading.",
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"description": "Longitude of the reading.",
"type": "number",
"minimum": -180,
"maximum": 180
},
"ele": {
"description": "Elevation of the reading in meters.",
"type": "number",
"minimum": -20000,
"maximum": 100000
}
},
"required": [
"feed_key",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴adafruitio_create_feed(name, description, group_key)
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.
输入模式
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Feed name (the key is derived from it)."
},
"description": {
"description": "Optional description.",
"type": "string",
"maxLength": 1000
},
"group_key": {
"description": "Optional existing group key to create the feed in.",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据