内容
# 传感器设备用的 MCP 服务器
本项目是一个 Node.js 应用程序,设计用于与 Claude Desktop 配合使用。它模拟一个二氧化碳传感器设备,并提供一个 JSON-RPC 服务器来与设备交互。应用程序可以在模拟模式和真实模式下运行,在真实模式下,它通过 USB 连接到 Raspberry Pi Pico 以读取二氧化碳水平。
## 功能特点
- 在模拟模式下,模拟一个具有随机二氧化碳水平的二氧化碳传感器设备。
- 通过 USB 连接到 Raspberry Pi Pico 以读取真实的二氧化碳水平。
- 通过 JSON-RPC 提供设备信息、传感器数据和网络状态。
- 支持发布数据到 MQTT、重新连接 WiFi 和重新连接 MQTT 的命令(部分功能被模拟)。
## 安装
您需要在您的机器上安装 Node.js 才能运行此应用程序。如果您尚未安装 Node.js,可以从 [官方网站](https://nodejs.org/) 下载。
1. 克隆存储库。
2. 使用 npm 安装依赖项:
```sh
npm install
```
## 配置
确保 `claude_desktop_config.json` 文件正确配置以运行服务器。示例配置:
```json
{
"mcpServers": {
"二氧化碳传感器": {
"command": "node",
"args": [
"...mcp-server-for-sensor-device/index.js"
],
"env": {}
}
}
}
```
## 使用
要启动服务器,请运行以下命令:
```sh
node index.js
```
## JSON-RPC 方法
### `initialize`
初始化服务器并返回服务器功能。
### `shutdown`
关闭服务器。
### `resources/list`
列出可用的资源。
### `resources/read`
读取指定的资源。
### `tools/list`
列出可用的工具。
### `tools/call`
调用指定的工具。
## 设备状态类
`DeviceState` 类模拟设备状态并提供方法以获取设备信息、传感器数据和网络状态。它还处理与 Raspberry Pi Pico 的连接并读取二氧化碳水平。
### 方法
- `getDeviceInfo()`:返回设备信息。
- `getSensorData()`:返回传感器数据。
- `getNetworkStatus()`:返回网络状态(模拟功能)。
- `publishToMQTT()`:模拟发布数据到 MQTT(模拟功能)。
- `reconnectWiFi()`:模拟重新连接 WiFi(模拟功能)。
- `reconnectMQTT()`:模拟重新连接 MQTT(模拟功能)。
## 日志记录
应用程序将二氧化碳水平和其他信息记录到用户主目录中的日志文件(`co2_level.log`)。
## 许可证
本项目在 MIT 许可证下获得许可。