mcpField
A
AWS IoT Core

AWS IoT Core

本地服务
github.com/nagarjunr云与基础设施06 天前更新

关于 AWS IoT Core

AWS IoT Core MCP 服务将设备注册表、影子、任务、规则引擎和消息功能开放为 MCP 工具,面向管理 AWS IoT Core 设备与设备群的用户。

主要功能

  1. 01设备与设备组管理
  2. 02读取和更新设备影子
  3. 03创建及跟踪设备群任务
  4. 04发布 MQTT 消息
  5. 05管理证书、策略和规则

适用场景

  1. 01查询或维护设备注册信息
  2. 02更新设备期望或报告状态
  3. 03向设备群发布消息或安排任务

MCP 相关

通过 MCP 工具向客户端提供 AWS IoT Core 的设备注册表、设备影子、任务、规则引擎、消息及证书策略管理能力。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"nagarjunr-aws-iot-core": {
"command": "uvx",
"args": [
"aws-iot-core-mcp-server"
],
"env": {
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"AWS_SESSION_TOKEN": "<AWS_SESSION_TOKEN>",
"AWS_PROFILE": "<AWS_PROFILE>",
"AWS_REGION": "<AWS_REGION>"
}
}
}
}
启动命令uvx aws-iot-core-mcp-server
需要配置的环境变量
AWS_ACCESS_KEY_ID密钥AWS access key ID
AWS_SECRET_ACCESS_KEY密钥AWS secret access key
AWS_SESSION_TOKEN密钥AWS session token, for temporary credentials
AWS_PROFILENamed profile from ~/.aws/credentials, as an alternative to explicit keys
AWS_REGIONAWS region -- required, AWS IoT Core is regional

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiaws-iot-core-mcp-server0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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,也应各自作为独立连接器。

使用 FastMCP 和 boto3 构建。

工具

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 托管服务提供。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。