aws-iot-core-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AWS_REGION | Yes | Region holding the fleet | |
| AWS_PROFILE | No | AWS profile to use for credentials, as shown in the Claude Desktop/Claude Code example. AWS credentials must be available via the standard AWS credential chain. | |
| AWS_IOT_MCP_AUDIT | No | One JSON line per call, to stderr. | on |
| AWS_IOT_MCP_TOOLS | No | Comma-separated tool allowlist. A typo fails startup rather than exposing nothing. | all |
| AWS_IOT_MCP_MAX_ITEMS | No | Page-size ceiling. | 100 |
| AWS_IOT_MCP_AUDIT_ARGS | No | Include redacted arguments in the audit line. | on |
| AWS_IOT_MCP_THING_ALLOW | No | Thing-name globs (gw-*,sensor-01). Anything unmatched is refused. | account-wide |
| AWS_IOT_MCP_CERT_WARN_DAYS | No | Certificate expiry warning. | 45 |
| AWS_IOT_MCP_MAX_FLEET_SAMPLE | No | Things per fleet-health call. | 25 |
| AWS_IOT_MCP_CERT_CRITICAL_DAYS | No | Certificate expiry critical. | 14 |
| AWS_IOT_MCP_STALE_WARN_SECONDS | No | Shadow staleness warning. | 3600 |
| AWS_IOT_MCP_MAX_UNTRUSTED_BYTES | No | Device bytes embedded per result. | 24000 |
| AWS_IOT_MCP_STALE_CRITICAL_SECONDS | No | Shadow staleness critical. | 86400 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_thingsA | Lists AWS IoT things in the configured region, newest page first, with optional filters by thing type or by a single attribute name/value pair. Use this to discover thing names before inspecting a shadow. Returns names and types only — call describe_thing for detail. |
| describe_thingA | Returns the registry record of one thing: ARN, thing type, version, billing group, its thing groups, and its attributes. Attributes are returned inside an untrusted-data fence because any principal with UpdateThing can write them. |
| search_fleet_indexA | Runs a fleet-indexing query (AWS_Things index) and returns matching things with their connectivity state when connectivity indexing is enabled. This is the only way to answer "which devices are offline right now". Query syntax examples: connectivity.connected:false — thingName:gw-* — attributes.site:santiago — shadow.reported.firmware:1.2.3. Requires fleet indexing to be enabled on the account. |
| describe_indexing_configurationA | Reports whether fleet indexing is enabled and which modes are active (registry, shadow, connectivity, named shadows). Call this first when search_fleet_index returns nothing or reports unknown connectivity — it distinguishes "no matches" from "not indexed". |
| get_device_shadowA | Reads the classic or a named device shadow and returns three things: how stale each reported field is, which desired fields the device has not converged on, and the raw document inside an untrusted-data fence. Prefer this over reading the raw shadow yourself — the staleness and drift analysis is where the operational answer usually is. |
| list_named_shadowsA | Lists the named shadows that exist for one thing. The classic (unnamed) shadow is never listed here by AWS — read it with get_device_shadow and no shadow_name. |
| compare_device_shadowsA | Structural diff of the reported state of two things (or of two named shadows of the same thing). This is the fastest way to answer "what is different about the one that misbehaves?" — it lists only the fields that differ, so a fleet-wide config drift shows up immediately. |
| list_topic_rulesA | Lists the topic rules of the account with their topic filter and whether they are disabled. Use it to answer "where does telemetry from this topic go?" before opening a single rule. |
| describe_topic_ruleA | Returns one topic rule in full: its SQL, its SQL version, every action with the target it writes to, and its error action. A rule without an error action loses messages silently when its action fails, which this tool calls out explicitly. |
| describe_iot_endpointA | Returns the account-specific IoT endpoint addresses. iot:Data-ATS is the MQTT/HTTPS data endpoint devices connect to; the others serve jobs and the credential provider. Endpoints are per account and per region, which is the usual cause of "the device connects but nothing arrives". |
| inspect_thing_certificatesA | Lists the X.509 certificates attached to a thing with their status and expiry date, and flags the ones that are inactive, revoked, already expired or expiring soon. Certificate expiry is the classic silent fleet outage: everything works until the day it does not. |
| assess_fleet_healthA | Diagnostic sweep over a sample of things. For each one it checks shadow freshness, desired-vs-reported convergence, certificate status and expiry, and connectivity when the fleet index provides it, then returns findings ranked worst-first with a per-code summary. Read-only and non-prescriptive: it reports what is wrong and never changes anything. Give it either an explicit list of thing names or a fleet-index query. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Each tool targets a distinct resource or action, and the descriptions go out of their way to explain relationships (list_things vs describe_thing, list vs describe topic rules, get_device_shadow vs list_named_shadows). The main overlap is that assess_fleet_health internally subsumes shadow freshness, certificate status, and connectivity checks that the single-purpose tools also perform, so an agent must choose between the sweep and the targeted reads.
All 12 tools use a consistent snake_case verb_noun pattern (list_things, describe_thing, get_device_shadow, search_fleet_index, inspect_thing_certificates, assess_fleet_health). Singular/plural usage is predictable: describe_* for one entity, list_* for collections.
12 tools is well-scoped for the IoT Core diagnostic domain, with each tool covering a distinct facet (registry, rules, endpoint, index, shadows, certificates, health sweep). Nothing feels padded or thin.
The surface thoroughly covers read-only diagnosis across things, rules, shadows, certificates, and fleet indexing with no obvious dead ends for that purpose. Minor gaps exist for adjacent resources like thing groups and jobs, and there is no write/mutation path, though the toolset appears intentionally read-only.