WoT-MCP协议转换服务

WoT-MCP是一种服务器应用程序,通过模型上下文协议(MCP)将Web of Things(WoT)设备暴露给AI助手,实现设备发现、监控和控制。

  • by macc-n
  • TypeScript
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 macc-n/wot-mcp

使用说明

WoT MCP

WoT MCP是一个服务器应用程序,它通过模型上下文协议(MCP)将物联网(WoT)设备暴露给AI助手。

随着人工智能代理变得越来越复杂,它们与现实世界交互的能力仍然受到分散的物联网协议的限制。WoT MCP通过翻译标准化的 物联网 模型(属性、操作、事件)转换为 主控程序 原语(资源和工具)。

这允许任何符合MCP的AI客户端(如Claude Desktop或LangChain代理)本地发现、监视和控制物理设备,而无需为每个设备定制代码。

特性

  • 协议转换:将WoT属性、操作和事件转换为MCP资源和工具。
  • 两种工具策略:
    • explicit:为每个属性和动作生成单独的工具(例如。, set_temperature, get_humidity).最适合少量设备。
    • generic:提供一组固定的工具(list_devices, read_property, write_property, invoke_action)管理任意数量的设备。最适合可扩展性。
  • 运输方式:支持两者 stdio 和 streamable-http.
  • 事件缓冲:捕获WoT事件并将其作为MCP资源公开。
  • Docker支持:已准备好使用Dockerfile进行容器化部署。

安装

git clone https://github.com/macc-n/wot-mcp.git
cd wot-mcp
npm install
npm run build

用法

Stdio(本地客户)

将WoT MCP用于本地客户,如 克劳德桌面版,您可以配置它们以直接生成服务器。

Claude桌面配置: 将以下内容添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "wot": {
      "command": "npm",
      "args": [
        "--prefix",
        "<absolute-path>/wot-mcp",
        "start",
        "--",
        "--tool-strategy",
        "explicit",
        "--config",
        "<absolute-path>/things-config.json"
      ]
    }
  }
}

注: 确保脚本和配置文件都使用绝对路径。

流式HTTP

要通过HTTP公开MCP服务器,请执行以下操作:

npm start -- --mode streamable-http --port 3000 --config things-config.json

Claude桌面配置: 将以下内容添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "wot": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://<remote-ip>:<port>/mcp",
        "--allow-http"
      ]
    }
  }
}

工具策略

显式策略(默认) 为每种功能创建一个独特的工具:

  • WoT财产:
    • 创建一个 获取器 工具。
    • 如果属性是可写的,则还会创建 设置器 工具。
  • WoT动作:
    • 使用直接从WoT-Action输入模式派生的输入模式创建单个工具。
  • WoT事件:
    • 公开可订阅资源。
npm start -- --tool-strategy explicit --config things-config.json

通用策略 使用4个静态工具管理所有设备:

  • list_devices:返回所有设备及其功能的JSON列表。
  • read_property:需要 devide_id 和 property_name.
  • write_property:需要 devide_id, property_name,以及 value.
  • invoke_action:需要 devide_id, action_name,可选 params.

注: WoT事件的管理方式如前所述。

npm start -- --tool-strategy generic --config things-config.json

配置文件

您必须从JSON配置文件加载内容。该文件支持HTTP、CoAP和MQTT设备。

// things-config.json
{
  "things": [
    {
        "protocol": "http",
        "url": "http://localhost:8080/httpthermostat"
    },
    {
        "protocol": "coap",
        "url": "coap://localhost:5683/coaplight"
    },
    {
        "protocol": "mqtt",
        "url": "mqtt://test.mosquitto.org/MqttSensor",
        "td": "/path/to/mqtt-td.json"
    }
  ]
}

注: 对于 mqtt 设备 td 字段是必需的,并且必须指向包含事物描述的本地文件,因为MQTT不支持TD发现。

例子

这 wot-mcp-cli 存储库包含一个用于WoT MCP服务器的交互式命令行界面(CLI)客户端,允许您检查工具并与设备交互。

这 wot-mcp示例 存储库包含设备、配置文件和客户端的示例代码。

有关全面的文档和更多详细信息,请咨询相应的存储库。

码头工人

塑造形象:

docker build -t wot-mcp .

使用配置文件运行:

docker run --rm --network="host" \
  -v $(pwd)/things-config.json:/app/things-config.json \
  wot-mcp \
  --tool-strategy explicit \
  --config /app/things-config.json \
  --mode streamable-http \
  --port 3000

注: 替换配置文件的路径。

已知限制

此第一个版本侧重于将物联网设备桥接到MCP的核心功能。它还不包括身份验证、安全机制或持久存储层等高级功能。