Token导航 LogoToken导航

MCP Server · AI代理

Smarthome MCP Lab

一个基于MCP协议的智能家居控制系统,支持本地和远程控制TAPO灯泡,包含本地代理、AWS物联网集成和混合记忆搜索功能。

stdio官方级别未说明来源级核验工具 5
智能家居PythonClaudeClaude Desktop

快速开始

作者 / 组织
jui-hung-yuan
提供方
jui-hung-yuan
运行时
Python

工具数量

5

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Smarthome MCP Lab 属于AI代理类 MCP Server,公开资料标注 5 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude,有可以直接复制的安装命令;接入前要先准备 OAuth 授权。

分类

AI代理

传输方式

stdio

认证方式

OAuth 授权

部署方式

公开资料未说明

安装与配置

安装命令

uv run python -m smarthome.agent --mock

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 5 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

智能家居MCP实验室

探索MCP(模型上下文协议)和代理开发的个人学习练习。使用智能家居控制(TAPO L530E灯泡)作为构建和测试MCP服务器和本地代理的实践示例。

控制路径

路径状态描述
本地MCP✅ 完成FastMCP服务器作为Claude Desktop子进程,LAN控制
远程MCP✅ 完成代理核心网关+Cognito+Lambda+物联网核心
本地代理✅ 完成基于OpenClaw的代理循环,具有Markdown内存、混合搜索和设备技能

特性

MCP路径

  • 打开/关闭灯, 设置亮度, 获取灯泡状态 (开/关、亮度、色温)
  • 真实灯泡控制 通过 tapo 局域网图书馆
  • 模拟回退 --当凭据丢失或灯泡无法访问时,自动使用模拟
  • 持久状态 --灯泡状态在服务器重启后仍然存在
  • DynamoDB状态日志记录 -即发即弃,从不阻挡MCP工具
  • AWS物联网核心集成 --带设备影子的MQTT网桥用于状态同步
  • AgentCore网关 --用于Claude web应用程序的Cognito OAuth远程MCP服务器
  • 多设备支持 --单网桥通过以下方式管理多个设备 DeviceRegistry
  • 设备无关架构 — BaseDevice 界面使添加新设备类型变得简单

本地代理

  • 交互式CLI和Slack机器人 --两个前端共享相同的代理循环、内存和技能
  • 松弛插座模式 --每个线程会话, @mention 在渠道中,直接信息;空闲会话在30分钟后自动退出,并刷新内存
  • 持久内存,无云依赖 --Markdown文件+SQLite索引,完全在设备上运行
  • 混合内存搜索 --BM25(FTS5)+通过互易秩融合合并的向量嵌入(ollama)
  • 可插拔技能 --将文件夹放入 skills/,写 SKILL.md --循环无变化
  • 渐进式技能披露 --启动时,系统提示中只有技能索引(姓名+描述);首次使用时通过加载完整文档 describe_skill,然后在疗程中继续注射
  • 色温控制 — set_color_temp (2500–6500 K)通过代理技能
  • 心跳调度程序 — HeartbeatScheduler 从以下位置启动基于时间的自动化 SCHEDULE.md克劳德通过 schedule_task 工具(添加/删除/列出),更改在重新启动后仍然存在

项目结构

src/smarthome/
├── devices/              # Shared device layer (all paths use this)
│   ├── base.py           # BaseDevice ABC: execute(), apply_desired_state(), get_shadow_state()
│   ├── device_registry.py # Manages multiple devices by ID
│   └── tapo_bulb.py      # TapoBulb (real hardware) + MockTapoBulb (testing/fallback)
├── aws_mcp/              # AWS path: Local MCP server + Lambda + IoT bridge
│   ├── bridge/           # IoT Core MQTT bridge (config, iot_bridge, shadow_manager)
│   ├── cloud/            # Lambda-side IoT helpers (iot_commands)
│   ├── logging/          # DynamoDB state logger
│   ├── mcp_servers/      # FastMCP server (light_server.py)
│   └── lambda_handler.py # AgentCore Gateway Lambda entry point
└── agent/                # Local-first agent loop (CLI + Slack)
    ├── __main__.py       # Entry: `python -m smarthome.agent [--mock|--slack]`
    ├── config.py         # AgentConfig: paths, model, mock flag
    ├── loop.py           # AgentLoop: Claude tool-use loop + 5 built-in tools
    ├── scheduler.py      # HeartbeatScheduler: fires SCHEDULE.md tasks on a periodic tick
    ├── skill_loader.py   # Discovers skills/*/SKILL.md, dynamic dispatch
    ├── slack_adapter.py  # Slack channel adapter (Socket Mode, per-thread sessions)
    ├── memory/
    │   ├── manager.py    # MemoryManager: search, write, sync, session context
    │   ├── schema.py     # SQLite schema: files, chunks, FTS5, vec, device_events
    │   ├── chunker.py    # Markdown → overlapping chunks (~400 tokens)
    │   └── embedder.py   # OllamaEmbedder: async HTTP → ollama /api/embed
    └── skills/
        └── light-control/
            ├── SKILL.md  # Skill docs + frontmatter (name, description)
            └── scripts/
                └── bulb.py  # execute(action, params) wraps TapoBulb/MockTapoBulb

scripts/aws/              # AWS provisioning and operation scripts
docs/                     # Setup guides and architecture notes
tests/                    # Unit tests (188 tests, all passing)

运作原理

本地MCP(克劳德桌面)

Claude Desktop将FastMCP服务器作为本地子进程运行:

Claude Desktop → FastMCP server (subprocess) → TapoBulb / MockTapoBulb

暴露的工具: turn_on, turn_off, set_brightness(level), get_status

在第一次工具调用时,服务器尝试使用来自的凭据连接到真实灯泡 ~/.smarthome/.env。如果凭据丢失或灯泡无法访问,则自动回退到模拟。

远程MCP(克劳德网络应用程序)

Claude Web App
  → AgentCore Gateway (Cognito JWT auth)
  → Lambda (smarthome-gateway-handler)
  → IoT Core MQTT
  → IoT Bridge (local network)
  → TapoBulb

看 docs/claude-web-oauth.md 有关OAuth流的详细信息和 docs/mcp-setup.md 用于完整的配置步骤。

本地代理

一个受OpenClaw启发的代理循环,完全在本地运行,不依赖于云。两个前端共享同一个 AgentLoop、记忆和技能:

CLI input   →  AgentLoop
Slack input ↗     ├── memory/  ~/.smarthome/memory/ — MEMORY.md, USER.md, SOUL.md, daily logs
                  └── skills/  light-control — wraps TapoBulb / MockTapoBulb

前端:

  • 命令行界面 --交互式REPL,每个进程一个会话
  • Slack (--slack)——Socket模式机器人;每次一次会议 (channel, thread),回应 @mention 在信道和DM中的所有消息中;空闲会话在30分钟后自动退出,并刷新内存

5个内置工具 克劳德可以打电话:

  1. execute_skill(skill_name, action, params) --分派给任何负载技能
  2. describe_skill(skill_name) --一次性加载完整的技能文档;注入会话的系统提示符中
  3. memory_search(query) --混合BM25+向量搜索(互序融合)
  4. memory_write(path, content, mode) --持久化为Markdown文件
  5. schedule_task(action, ...) --在中添加/删除/列出计划的自动化 SCHEDULE.md

内存存储在 ~/.smarthome/memory/ 作为Markdown文件(MEMORY.md, USER.md, SOUL.md,每日日志),在SQLite中使用FTS5和可选的SQLite-vec嵌入进行索引。嵌入使用 ollama;BM25仅在不可用时回退。

添加技能:在下面放置一个文件夹 skills/,写 SKILL.md + scripts/*.py 随着 execute(action, params) → dict.零变化 loop.py.

设备层

所有设备均已实施 BaseDevice:

  • execute(action, parameters) --分派任何动作(turn_on、set_bright、…)
  • apply_desired_state(desired) --从IoT Shadow delta应用状态
  • get_shadow_state() --向影子报告当前状态

TapoBulb 连接到真实的硬件。 MockTapoBulb 在内存中模拟灯泡,可选择将状态持久化到 ~/.smarthome/tapo_bulb_state.json.

设置

看 docs/mcp-setup.md 了解涵盖这两条路径的完整分步说明。

快速入门--本地MCP

  1. 创建 ~/.smarthome/.env 使用灯泡凭据(或跳过--mock模式在没有灯泡凭据的情况下工作):
   TAPO_USERNAME=your_tapo_email
   TAPO_PASSWORD=your_tapo_password
   TAPO_IP_ADDRESS=192.168.x.x
  1. 添加到Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):
   {
     "mcpServers": {
       "smarthome": {
         "command": "uv",
         "args": ["run", "--directory", "/path/to/smarthome",
                  "fastmcp", "run",
                  "src/smarthome/aws_mcp/mcp_servers/light_server.py"]
       }
     }
   }
  1. 重新启动克劳德桌面。

快速入门--本地代理

  1. 添加您的Anthropic API密钥:
   mkdir -p ~/.smarthome
   echo 'ANTHROPIC_API_KEY=sk-...' >> ~/.smarthome/.env
  1. 种子内存文件(可选但推荐):
   mkdir -p ~/.smarthome/memory
   echo "# Memory" > ~/.smarthome/memory/MEMORY.md
   echo "# User Preferences" > ~/.smarthome/memory/USER.md
  1. 使用模拟灯泡运行(无需硬件):
   uv run python -m smarthome.agent --mock
  1. 用真正的灯泡运行——添加 TAPO_USERNAME, TAPO_PASSWORD, TAPO_IP_ADDRESS 到 ~/.smarthome/.env那么:
   uv run python -m smarthome.agent
  1. 以Slack机器人模式运行——添加 SLACK_BOT_TOKEN, SLACK_APP_TOKEN, SLACK_SIGNING_SECRET 到 ~/.smarthome/.env那么:
   uv run python -m smarthome.agent --slack --mock   # mock bulb
   uv run python -m smarthome.agent --slack          # real bulb

快速启动——远程MCP(AWS)

按顺序运行配置脚本(需要AWS配置文件 self):

AWS_PROFILE=self uv run python scripts/aws/create_bridge_thing.py
AWS_PROFILE=self uv run python scripts/aws/create_cognito.py
uv run python scripts/aws/package_lambda.py
AWS_PROFILE=self uv run python scripts/aws/create_lambda.py
AWS_PROFILE=self uv run python scripts/aws/create_agentcore_gateway.py

# Start the local bridge (keep running on-premises)
uv run python scripts/aws/run_bridge.py

# Test end-to-end
AWS_PROFILE=self uv run python scripts/aws/test_gateway.py

测试

# Unit tests
uv run pytest tests/ -v

# Interactive MCP dev UI (localhost:6274)
uv run fastmcp dev src/smarthome/aws_mcp/mcp_servers/light_server.py

关键依赖关系

依赖关系被拆分,因此可以在没有AWS/MCP堆栈的情况下安装本地代理。

核心(本地代理):

包装用途
anthropicClaude API SDK(代理循环)
tapo本地网络上的TAPO设备控制
slack-boltSlack套接字模式机器人
sqlite-vecSQLite的矢量搜索扩展
httpx异步HTTP客户端(ollama嵌入)
aiohttp, pydantic, python-dotenvHTTP、验证、环境配置

aws-mcp 额外(仅限MCP路径):

包装用途
fastmcpMCP服务器框架
boto3AWS SDK(DynamoDB、物联网核心、Lambda、Cognito)
awsiotsdkAWS物联网核心MQTT客户端

开发人员:

包装用途
moto[dynamodb]用于测试的内存AWS模拟
pytest, pytest-asyncio试验转轮

为每个环境安装:

uv sync --no-dev             # Raspberry Pi — local agent only
uv sync --extra aws-mcp      # Dev machine — everything

接下来是什么

  • \[x\] 通过Claude Desktop实现本地MCP
  • \[x\] 通过AgentCore网关+Cognito OAuth实现远程MCP
  • \[x\] 通过以下方式支持多设备 DeviceRegistry
  • \[x\] 带Markdown内存的本地代理循环
  • \[x\] 灯泡控制作为一种代理技能
  • \[x\] 色温控制
  • \[x\] 心跳调度程序 SCHEDULE.md 和 schedule_task 工具
  • \[\]其他设备类型(智能插头、传感器)
  • \[\]本地网络上的设备自动发现

许可证

麻省理工学院

工具与能力

工具数量

5

资源数量

0

提示词数量

0

能力标签

智能家居Python本地部署MCP协议物联网控制本地代理AWS集成

支持客户端

Claude DesktopClaude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 只提供 5 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备OAuth 授权,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到OAuth 授权的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Smarthome MCP Lab

MCP World · 本页

5stdio有1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Smarthome MCP Lab 怎么安装?

公开资料给出的安装命令是 uv run python -m smarthome.agent --mock,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Smarthome MCP Lab 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Smarthome MCP Lab 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Smarthome MCP Lab 需要 API Key 吗?

公开资料标注的认证方式是OAuth 授权,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Smarthome MCP Lab 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP