@kentcdodds: 绝佳的周末活动:将你的家庭设备变成MCP服务器,并用自然语言从任何地方控制它们

X AI KOLs Timeline 工具

摘要

本文提供了一个使用Cloudflare Tunnel设置家庭MCP服务器的指南,以通过自然语言安全地控制家庭设备,包括一个入门模板和详细的设置说明。

绝佳的周末活动:将你的家庭设备变成MCP服务器,并用自然语言从任何地方控制它们。 我将向你展示如何安全地进行此操作,并提供一个入门模板(无需Kody)! https://t.co/lz3TYWGzyu
查看原文
查看缓存全文

缓存时间: 2026/09/12 06:45

绝佳的周末活动在此:将您的家庭设备转变为 MCP 服务器,并可通过自然语言从任何地方控制它们。我将向您展示如何安全地实现这一点,并提供一个入门模板(Kody并非必需!) https://t.co/lz3TYWGzyu — # 连接家庭MCP服务器 — Kody 文档 来源:https://kody.codes/docs/local-mcp-tunnels Kody 运行在 Cloudflare Workers 上。它无法打开您笔记本电脑上的 localhost,读取磁盘上的保险库,或与仅存在于您家庭网络中的设备通信。 在该资源旁放置一个小型 MCP 服务器,为服务器提供一个受保护的公共 HTTPS URL,并将该 URL 添加为用户 MCP 服务器。搜索会对该服务器进行排名;search({ entity: ":mcp-server" }) 会列出其工具。 home-mcp-starter (https://github.com/kody-bot/home-mcp-starter) 仓库是一个完整、可 fork 的实现:支持流式 HTTP MCP、仅限 CIMD 的 OAuth、Docker、Cloudflare Tunnel 和 Access 文档,以及示例的家庭笔记工具(您可用自己的局域网接口替换)。 ## https://kody.codes/docs/local-mcp-tunnels#use-cases 使用场景 当能力必须驻留在 Kody 无法访问的资源旁边时,家庭 MCP 服务器是合适的形态: - 笔记和保险库。 搜索并写入同一台机器上的本地笔记文件或 Obsidian 保险库。保持工具范围狭窄(搜索、读取、创建),而不是暴露整个文件系统。 - 家庭设备。 灯光、电视、恒温器、窗帘等类似的局域网 API 留在家庭进程中。Kody 调用专用的工具;它永远不会加入家庭网络。 - 本地 CLI。 包装明确的命令并验证每个参数。不要仅为了让 CLI 可访问就暴露一个不受限制的 shell。 - NAS 托管的自动化。 在始终开启的设备上以 Docker 方式运行服务器,以便计划的 Kody 任务可以在您笔记本电脑休眠时调用家庭工具。当家庭设备离线时,Kody 托管的包、任务和记忆仍然可用。调用隧道化家庭工具的任务仍依赖于该进程及其网络。 ## https://kody.codes/docs/local-mcp-tunnels#the-pattern 模式 三个部分: 1. 一个本地 MCP 进程与保险库、CLI 或设备通信。 2. Cloudflare Tunnel 将该进程发布在稳定的 HTTPS 主机名上,而无需打开入站端口。 3. Cloudflare Access 和 MCP 服务器自身的 OAuth 保护公共路由。 Kody 连接到 MCP URL。 启动器通过 Streamable HTTP 在 /mcp 实现了 MCP 协议 2026-07-28。授权仅限客户端 ID 元数据文档(CIMD):没有动态客户端注册。生产环境 Kody 将 https://kody.codes/oauth/client-metadata.json 作为 client_id,并在 /account/mcp-servers/oauth/callback 进行回调。 ## https://kody.codes/docs/local-mcp-tunnels#1.-run-the-server-next-to-the-resource 1. 在资源旁运行服务器 从启动器开始(Node 24 或 Docker): git clone https://github.com/kody-bot/home-mcp-starter.git cd home-mcp-starter cp .env.example .env npm install npm run dev 或运行已发布的镜像。参见启动器的 Docker 指南 (https://github.com/kody-bot/home-mcp-starter/blob/main/docs/docker.md)。 将进程绑定到本地接口,并在添加隧道之前确认 /health 和 MCP 端点。 将授权检查保留在 MCP 服务器中;隧道是传输层,不是工具级策略的替代品。 用适配器替换示例的笔记工具,以适配您的保险库、设备或 CLI。启动器的添加工具指南 (https://github.com/kody-bot/home-mcp-starter/blob/main/docs/adding-tools.md) 涵盖了模式、破坏性提示,以及为何不受限制的 shell 不适用此处。 ## https://kody.codes/docs/local-mcp-tunnels#2.-publish-it-with-cloudflare-tunnel 2. 使用 Cloudflare Tunnel 发布它 按照 Cloudflare 当前的 Tunnel 设置指南 (https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/get-started/) 安装 cloudflared,创建隧道,并将主机名路由到本地进程(通常是 http://127.0.0.1:4040)。公共结果是一个 HTTPS MCP URL,如 https://home.example.com/mcp;源站仍在私有网络中。 将 HOME_MCP_PUBLIC_BASE_URL 设置为该 HTTPS 源站(无尾部斜杠)。OAuth 颁发者、授权/令牌 URL 以及 RFC 8707 的 resource 值均由此派生。它们必须与您稍后粘贴到 Kody 中的 URL 匹配。使用 Cloudflare 的指南获取仪表板或 CLI 详细信息。 在机器的服务管理器下保持连接器运行,以便 URL 不依赖于打开的终端。启动器的 Tunnel 指南 (https://github.com/kody-bot/home-mcp-starter/blob/main/docs/cloudflare-tunnel.md) 记录了家庭 MCP 特定的环境变量和路由说明。 通过遵循 Cloudflare 的自托管应用程序 Access 指南 (https://developers.cloudflare.com/cloudflare-one/applications/configure-apps/self-hosted-apps/) 创建一个自托管的 Access 应用程序。根据允许授权此服务器的人员要求适当的身份和策略。 支持 OAuth 的 MCP 服务器有机器协议路由和人类授权路由。将 Access 路径策略与启动器文档记录的路由匹配: - 绕过 /mcp、/token、/revoke、/.well-known 和 /health,以便 Kody 可以完成 CIMD OAuth 并调用工具。 - 允许 /authorize 和 /,以便人员在批准 Kody 之前登录到 Access。 - 在每个 /mcp 请求上保持启用 MCP 服务器的 OAuth 检查。 Access 绕过跳过 Access;当服务器仍需要承载令牌时,它不会使路由公开。 本地源站信任自己的网络。Access 保护浏览器批准步骤。MCP 服务器验证 Kody。 在您的主机名上阅读启动器的 well-known 文档,并根据它们公布的构建策略。 完整的路径说明在启动器的 Access 指南 (https://github.com/kody-bot/home-mcp-starter/blob/main/docs/cloudflare-access.md) 中。 为每个 Kody 账户分配其自己的 MCP 连接和授权授予。不要跨账户重复使用一个承载令牌。 如果多个账户共享一个公共端点,MCP 服务器必须隔离租户,并将每个经过身份验证的请求精确绑定到单个用户的本地资源。 Kody 的用户 MCP 连接支持一个存储的 Authorization 值。它不提供 Cloudflare Access 服务令牌头对。当 Access 保护浏览器授权流程时,首选上述 OAuth 形式。 ## https://kody.codes/docs/local-mcp-tunnels#4.-connect-the-public-mcp-url-to-kody 4. 将公共 MCP URL 连接到 Kody 遵循 连接远程 MCP 服务器到 Kody (https://github.com/kentcdodds/kody/blob/main/docs/use/mcp-client-servers.md): 1. 打开 /account/mcp-servers,或要求代理调用 mcpServerAdd。 2. 选择一个简短的、连字符分隔的名称,如 home 或 obsidian,并输入公共 HTTPS MCP URL。为每个 Kody 账户创建单独的连接。 3. 打开返回的授权链接,通过 Cloudflare Access,并批准 MCP 服务器的 OAuth 请求。 4. 使用 mcpServerList 确认,然后搜索服务器(例如 home)并打开 search({ entity: "home:mcp-server" }) 或 search({ domain: "mcp:home" }) 以列出工具。 5. 首先调用只读工具(在启动器上是 home_get_metadata),并确认请求到达预期的本地资源。 在 HTTPS Kody 上,客户端使用 CIMD 识别自身。允许列表: - 客户端源站: https://kody.codes - 重定向 URI: https://kody.codes/account/mcp-servers/oauth/callback - CIMD client_id: https://kody.codes/oauth/client-metadata.json 自托管 Kody 在所有三处使用该部署的源站。 详细信息在 连接远程 MCP 服务器 (https://github.com/kentcdodds/kody/blob/main/docs/use/mcp-client-servers.md) 和启动器的 OAuth 和 CIMD (https://github.com/kody-bot/home-mcp-starter/blob/main/docs/oauth-cimd.md) 页面中。 ## https://kody.codes/docs/local-mcp-tunnels#security-checklist 安全清单 - 暴露 MCP 端点,而不是通用的 shell 或文件系统服务器。 - 将本地进程限制在最小的保险库、命令集或设备集。 - 切勿在 Kody 账户之间共享连接器凭据。在共享端点上,强制执行凭据、授权状态和每个本地资源查找的租户隔离。 - 即使在 Access 允许协议流量的地方,也保持 MCP 认证启用。 - 在冒烟测试后审查 Access 日志、MCP 服务器日志和 Kody 活动。 - 如果连接器机器丢失或重建,轮换 MCP 授予和隧道凭据。 - 当本地功能退役时,移除 Kody MCP 连接并禁用隧道。

相似文章

@kentcdodds: MCP

X AI KOLs Timeline

Wes Bos 展示如何使用 MCP 与 Tesla 的 Grok Bot 更新,直接从汽车中控制智能家居设备,例如 Meross 车库门控制器。

@kentcdodds:MCP

X AI KOLs Following

Tyler Benfield 讨论了 MCP 在让 AI 代理访问数据方面的酷炫之处,分享了他使用 Claude 例程进行基础设施监控和改进的用例。