关于 AWS IoT Core
AWS IoT Core MCP 服务将设备注册表、影子、任务、规则引擎和消息功能开放为 MCP 工具,面向管理 AWS IoT Core 设备与设备群的用户。
主要功能
- 01设备与设备组管理
- 02读取和更新设备影子
- 03创建及跟踪设备群任务
- 04发布 MQTT 消息
- 05管理证书、策略和规则
适用场景
- 01查询或维护设备注册信息
- 02更新设备期望或报告状态
- 03向设备群发布消息或安排任务
MCP 相关
通过 MCP 工具向客户端提供 AWS IoT Core 的设备注册表、设备影子、任务、规则引擎、消息及证书策略管理能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx aws-iot-core-mcp-serverAWS_ACCESS_KEY_ID密钥AWS access key IDAWS_SECRET_ACCESS_KEY密钥AWS secret access keyAWS_SESSION_TOKEN密钥AWS session token, for temporary credentialsAWS_PROFILENamed profile from ~/.aws/credentials, as an alternative to explicit keysAWS_REGIONAWS region -- required, AWS IoT Core is regional本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
AWS IoT Core MCP 服务
一个适用于 AWS IoT Core 的 Model Context Protocol(MCP)服务,涵盖设备注册表、设备影子、作业(设备群管理)、规则引擎和消息传递。
刻意将范围限定为 IoT Core 本身:不包括 Greengrass(独立的边缘部署 API)、IoT SiteWise(已有官方 awslabs MCP 服务),也不包括 Device Defender、Events 或 TwinMaker——它们各自都是独立的 AWS 服务,拥有自己的 API,也应各自作为独立连接器。
工具
Things(设备注册表)
| 工具 | 描述 |
|---|---|
list_things(thing_type_name, attribute_name, attribute_value, thing_group_name, max_results) | 列出 Things,可选择按条件筛选。 |
search_things(query_string, index_name, max_results) | 搜索设备群索引,例如 attributes.location:"lab-1"。需要启用索引。 |
get_thing(thing_name) | 获取 Thing 的属性和类型。 |
create_thing(thing_name, thing_type_name, attributes, billing_group_name, overwrite=False) | 注册新的 Thing。 |
update_thing(thing_name, attributes, thing_type_name, remove_thing_type, attributes_merge=True) | 更新 Thing 的属性或类型。 |
delete_thing(thing_name, confirm=False) | 删除 Thing。不可撤销。 |
Thing 类型和 Thing 组
| 工具 | 描述 |
|---|---|
list_thing_types(thing_type_name) / get_thing_type(thing_type_name) | 列出/读取 Thing 类型。 |
create_thing_type(thing_type_name, description, searchable_attributes) | 创建 Thing 类型。创建后不可修改(AWS 的限制),之后仅支持弃用。 |
deprecate_thing_type(thing_type_name, undo=False) | 弃用(或取消弃用)Thing 类型。 |
list_thing_groups(parent_group, name_prefix_filter) / get_thing_group(thing_group_name) | 列出/读取 Thing 组。 |
create_thing_group(thing_group_name, parent_group_name, attributes, overwrite=False) | 创建 Thing 组。 |
delete_thing_group(thing_group_name, confirm=False) | 删除 Thing 组。不可撤销。 |
modify_thing_group_membership(thing_name, thing_group_name, action) | 将 Thing 添加到组中(action="add"),或从组中移除("remove")。 |
list_things_in_thing_group(thing_group_name) | 列出组中的成员。 |
设备影子(数据平面)
| 工具 | 描述 |
|---|---|
get_thing_shadow(thing_name, shadow_name) | 读取 Thing 的影子文档(desired/reported/delta)。省略 shadow_name 可读取经典(未命名)影子。 |
update_thing_shadow(thing_name, desired, reported, shadow_name) | 合并更新 desired 和/或 reported 状态。 |
delete_thing_shadow(thing_name, shadow_name, confirm=False) | 删除影子文档。 |
list_named_shadows_for_thing(thing_name) | 列出 Thing 的命名影子(非经典影子)。 |
消息传递
| 工具 | 描述 |
|---|---|
publish_message(topic, payload, qos=0) | 通过 IoT Data Plane 向设备群发布 MQTT 消息。 |
作业(设备群管理)
| 工具 | 描述 |
|---|---|
list_jobs(status, thing_group_name, max_results) / get_job(job_id) | 列出/读取作业。 |
create_job(job_id, thing_arns, document, description, target_selection="SNAPSHOT") | 创建设备群作业(例如 OTA 更新或远程命令)。 |
cancel_job(job_id, confirm=False, comment, force=False) | 取消作业。 |
delete_job(job_id, confirm=False, force=False) | 删除作业。不可撤销。 |
list_job_executions_for_job(job_id, status) / list_job_executions_for_thing(thing_name, status) | 跟踪每台设备的执行状态。 |
证书与策略(设备身份验证)
| 工具 | 描述 |
|---|---|
create_keys_and_certificate(set_as_active=True) | 生成新的密钥对和证书。私钥仅返回一次——请立即保存。 |
get_certificate(certificate_id) / list_certificates(page_size) | 读取证书元数据。 |
set_certificate_status(certificate_id, status) | ACTIVE、INACTIVE 或 REVOKED。 |
delete_certificate(certificate_id, confirm=False, force_delete=False) | 删除证书。不可撤销。 |
create_policy(policy_name, policy_document, overwrite=False) / get_policy / list_policies | 管理 IAM 风格的 IoT 策略(JSON 文档)。 |
delete_policy(policy_name, confirm=False) | 删除策略。不可撤销。 |
modify_policy_attachment(policy_name, target, action) | 将策略关联到证书 ARN,或取消关联。 |
modify_thing_principal(thing_name, principal, action) | 将证书(主体)关联到 thing,或取消关联。 |
list_thing_principals(thing_name) / list_principal_things(principal) | 从任一方向查询 thing↔证书关联。 |
规则引擎
| 工具 | 描述 |
|---|---|
list_topic_rules(topic) / get_topic_rule(rule_name) | 列出/读取基于 SQL 的消息路由规则。 |
put_topic_rule(rule_name, sql, actions, description, sql_version, overwrite=False) | 创建或替换规则。actions 是原始 AWS 操作对象列表(例如 {"lambda": {"functionArn": "..."}})。 |
set_topic_rule_enabled(rule_name, enabled) | 启用/停用规则,但不删除规则。 |
delete_topic_rule(rule_name, confirm=False) | 删除规则。不可撤销。 |
其他
| 工具 | 描述 |
|---|---|
get_endpoint(endpoint_type) | 查询此账户的 IoT Core 数据端点(默认值为 iot:Data-ATS)。 |
安全约定
与此仓库的其余部分相同:create_*/put_* 默认使用 overwrite=False(尽力而为——AWS IoT API 本身对大多数此类操作没有条件写入标头,因此这里只会先描述再创建,并不像 Ditto 的 If-None-Match 那样完全避免竞态)。每个 delete_*/cancel_* 都要求 confirm=True。
配置
使用标准 AWS SDK 凭证解析机制——身份验证不需要自定义环境变量。根据你的配置设置以下变量:
| 环境变量 | 描述 |
|---|---|
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN | 显式凭证。 |
AWS_PROFILE | 来自 ~/.aws/credentials 的命名配置文件。 |
AWS_REGION / AWS_DEFAULT_REGION | 必需——AWS IoT Core 按区域提供服务。 |
AWS_ENDPOINT_URL | 覆盖 API 端点(例如用于 LocalStack)。boto3 原生读取此变量。 |
也可以使用 IAM 角色,前提是运行环境已附加此类角色(EC2/ECS/Lambda)。请参阅 boto3 的凭证文档。
本地运行
uv sync
export AWS_REGION=us-east-1
# plus whichever credential env vars apply to you
uv run awsiotcoremcpserver.py
请参阅 mcp.json,了解可直接使用的客户端配置(stdio 和 Docker)。
测试
本仓库的设计原则要求针对真实实例进行测试,而不是使用模拟对象。AWS IoT Core 没有官方本地模拟器,而 LocalStack 的 IoT 支持需要付费套餐(没有免费套餐)——因此,此服务是本仓库中的一个例外:测试使用 moto 运行。moto 是一个成熟、免费、开源的 AWS API 模拟器(不是手工编写的模拟对象——它会针对此服务发出的实际 boto3 调用,实现真实的请求/响应行为)。
uv run pytest -v
许可证说明
此处不附带部署产物(不同于其他服务),因为没有可供本地运行的代理/服务——AWS IoT Core 仅作为 AWS 托管服务提供。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。