319 查看 · 2026-07-07 更新
Google Home MCP 服务器
一个通过 Smart Home API 控制 Google Home 智能插座的MCP服务器实现。
功能
- 列出所有可用的智能插座及其状态
- 控制智能插座(开关)
- 获取特定智能插座的实时状态
- 自动刷新设备状态
- 通过Smart Home API进行OAuth2认证
前提条件
- 启用了Smart Home API的Google Cloud项目
- Actions on Google Smart Home Action项目
- Smart Home Action的OAuth 2.0客户端凭证
- Node.js 18或更高版本
- 访问Google Home智能插座
设置
-
创建一个Smart Home Action:
- 转到Actions on Google控制台
- 创建新项目
- 选择"Smart Home"作为项目类型
- 配置账户链接:
- OAuth Client ID
- OAuth Client Secret
- 授权URL
- Token URL
-
设置OAuth 2.0:
- 配置您的OAuth服务器端点
- 设置用户身份验证流程
- 实现令牌生成/验证
-
安装依赖项: bash pnpm install
-
配置服务器:
- 将
config.json.example复制为config.json - 填写您的:
- OAuth Client ID
- OAuth Client Secret
- 将
-
构建服务器: bash pnpm build
-
启动服务器: bash pnpm start
可用工具
1. 列出智能插座
typescript { name: "list_smart_plugs", description: "列出所有可用的智能插座及其当前状态", response: Array<{ id: string; name: string; state: { on: boolean; online: boolean; } }> }
2. 控制智能插座
typescript { name: "control_smart_plug", description: "打开或关闭智能插座", parameters: { deviceId: string; // 来自list_smart_plugs的设备ID state: boolean; // true表示开,false表示关 }, response: { success: boolean; device: { id: string; name: string; state: { on: boolean; online: boolean; } } } }
3. 获取智能插座状态
typescript { name: "get_smart_plug_state", description: "获取特定智能插座的当前状态", parameters: { deviceId: string; // 来自list_smart_plugs的设备ID }, response: { id: string; name: string; state: { on: boolean; online: boolean; } } }
API详情
该服务器实现了Smart Home API意图:
-
SYNC意图
- 当用户链接其帐户时调用
- 报告可用设备和功能
- 处理设备发现
-
QUERY意图
- 报告设备的当前状态
- 处理来自Google Assistant的状态查询
- 返回在线/离线状态
-
EXECUTE意图
- 处理设备控制命令
- 执行开/关操作
- 报告命令成功/失败
错误处理
服务器实现了全面的错误处理,并具有特定的错误代码:
CONFIG_ERROR: 配置加载或验证错误API_ERROR: 来自Smart Home API的错误DEVICE_NOT_FOUND: 在可用设备中找不到设备IDCOMMAND_ERROR: 执行设备命令时发生错误
每个错误包括:
- 错误消息
- 错误代码
- 如有提供,详细的错误信息
安全性
- OAuth 2.0认证流程
- 安全的令牌处理
- 请求验证
- 命令授权
- HTTPS通信
- 输入清理
开发
-
以开发模式启动: bash pnpm dev
-
运行测试: bash pnpm test
-
调试日志:
- 所有API调用都被记录
- 捕获错误详情
- 跟踪设备状态变化
贡献
- 分叉仓库
- 创建特性分支
- 提交更改
- 推送到分支
- 创建拉取请求
许可证
MIT
ghome-mcp-server
来源
- 来源:github
- 链接:https://github.com/jmagar/ghome-mcp-server