Geekhouse物联网MCP服务器
用于控制运行在Raspberry Pi Pico W上的Geekhouse物联网设备的模型上下文协议(MCP)服务器。
该MCP服务器为Claude提供了本地工具,用于控制LED、读取传感器、管理电机,并通过HATEOAS REST API在LCD屏幕上显示消息。
特性
- 8个MCP工具 用于面向工作流程的设备控制(LED、传感器、电机、LCD、发现)
- 4 MCP资源 通过以下方式查询设备状态
@提及 - 7个MCP提示 用于常见任务工作流和快速操作
- 动态设备发现 通过MDNS/你好
- 实时传感器监控 使用MCP资源订阅和基于TTL的缓存
- 多设备支持 用于管理多个Pico W单元
- HATEOAS REST API 与自动能力发现集成
安装
先决条件
- 转到1.21或更高版本
- 运行Geekhouse IoT固件的Raspberry Pi Pico W
- Claude Desktop(用于MCP集成)
从源代码构建
git clone https://github.com/pavelanni/geekhouse-mcp.git
cd geekhouse-mcp
make buildMakefile会自动将Git的版本信息(标签、提交、构建日期)嵌入到二进制文件中。
替代构建方法:
# Build with make (recommended)
make build
# Build without version info (development)
make build-dev
# Or use go directly
go build -o geekhouse-mcp ./cmd/server安装依赖项
make deps
# or
go mod download配置
创建一个 config.yaml 文件:
server:
discovery:
enabled: true
service_name: "_iot._tcp"
timeout_seconds: 5
devices:
- name: "living_room"
host: "192.168.1.130"
port: 80
cache:
device_ttl_seconds: 30
sensor_ttl_seconds: 5
logging:
level: "info"
format: "json"看 config/config.example.yaml 了解完整的配置选项。
用法
检查版本
./build/geekhouse-mcp --version输出:
Geekhouse IoT MCP Server
Version: v1.0.0
Commit: a1b2c3d
Build Date: 2025-11-14_19:13:26_UTCClaude桌面集成
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"geekhouse": {
"command": "/path/to/geekhouse-mcp",
"args": ["--config", "/path/to/config.yaml"]
}
}
}重新启动Claude Desktop,工具将自动显示。
可用工具
control_lighting-打开/关闭/切换LEDread_sensors-通过过滤读取传感器值control_motor-操作直流电机display_message-在LCD上显示文本configure_sensor-更新传感器校准list_devices-枚举可用设备get_device_status-获取设备状态discover_devices-Pico W设备的扫描网络
可用资源
MCP资源提供可查询的设备状态,您可以使用 @ 克劳德代码中提到:
@api://structure-完整的HAEOAS API结构,包括所有端点和导航链接@device://led/{id}-单个LED状态(例如。,@device://led/1)@device://sensor/{id}-单个传感器状态(例如。,@device://sensor/4)@device://motor/{id}-单个电机状态(例如。,@device://motor/1)@devices://leds-列出所有带有元数据的LED设备@devices://sensors-列出所有带有元数据的传感器设备@devices://motors-列出所有带有元数据的电机设备@sensor-data://{id}/stream-实时传感器数据流(例如。,@sensor-data://4/stream)
Claude Code中的示例用法:
Show me the API structure: @api://structure
What sensors are available? @devices://sensors
What's the current temperature? @device://sensor/4资源包括HATEOAS _links 显示可用操作和相关端点的部分。基于TTL的缓存确保了高效的性能,同时保持了新鲜的数据。
可用提示
MCP提示为常见任务提供预配置的工作流。通过Claude Desktop或Claude Code中的提示菜单访问它们:
system-status-获取所有设备和传感器的全面状态报告lights-out-关闭系统中的所有灯sensor-report-生成所有传感器读数的格式化报告(可选:按类型/位置过滤)calibrate-sensor-传感器校准过程指南(要求:sensor_id)emergency-shutdown-对所有设备执行安全停机顺序monitor-sensor-设置传感器的实时监控(需要:sensor_id,可选:阈值)device-inventory-列出所有具有功能的可用设备
示例用法:
在Claude Code中,提示有助于自动化常见的工作流程,而无需手动描述完整的操作序列。
发展
项目结构
geekhouse-mcp/
├── cmd/server/ # Entry point
├── internal/
│ ├── mcp/ # MCP server implementation
│ │ ├── tools/ # Tool handlers
│ │ ├── resources/ # Resource providers
│ │ └── prompts/ # Prompt templates
│ ├── rest/ # REST API client
│ ├── models/ # Data structures
│ └── config/ # Configuration loading
├── config/ # Example configs
└── docs/ # Documentation在本地运行
# Run with make
make run
# Or with go directly
go run ./cmd/server --config config.yaml
# Or run the built binary
./build/geekhouse-mcp --config config.yaml测试
make test
# or
go test ./...生成文件目标
make build # Build with version info (recommended)
make build-dev # Build without version info
make clean # Remove build artifacts
make test # Run tests
make deps # Download dependencies
make install # Install to $GOPATH/bin
make version # Show version info to be embedded
make run # Run in development mode
make all # Clean, deps, build
make help # Show all available targets建筑
看 MCP_实施_计划.md 详细的架构和设计决策。
许可证
MIT许可证-有关详细信息,请参阅许可证文件
贡献
欢迎投稿!请打开问题或拉取请求。
相关项目
- Geekhouse物联网 -Pico W的MicroPython固件
- 模型上下文协议 -MCP规范
- 官方Go SDK -MCP Go SDK
