mcpField
O
OpenDeviceDB

OpenDeviceDB

本地服务
opendevicedb.org开发工具333 天前更新

关于 OpenDeviceDB

OpenDeviceDB 的 MCP 服务让 AI Agent 查询设备是否已有开放固件或协议相关成果,并可登记认领和提交发现。记录包含安装路线与来源信息;写入保留在本地检出目录中,供后续通过拉取请求审核。

主要功能

  1. 01按型号和标识符查询设备
  2. 02按名称和别名排序搜索
  3. 03创建有期限的工作认领
  4. 04校验并发布设备发现
  5. 05安装路线和来源元数据
  6. 06本地写入并提供 PR 操作指引

适用场景

  1. 01检查设备是否已有逆向工程成果
  2. 02查找开放固件或协议记录
  3. 03开始研究前登记认领
  4. 04提交经验证的发现供维护者审核

MCP 相关

stdio MCP 服务提供六种工具,用于设备查询、搜索、认领、发现发布、设备需求和来源列表。可读取本地仓库并写入,或以只读模式使用静态 API。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"org-opendevicedb-opendevicedb": {
"command": "npx",
"args": [
"-y",
"@opendevicedb/mcp"
]
}
}
}
启动命令npx -y @opendevicedb/mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@opendevicedb/mcp0.3.0

工具

6

收录的工具列表 · 更新于 1 周前

参数类型必填说明
idstring否如果已有 OpenDeviceDB id(<vendor-slug>/<model-slug>),请提供,例如从 search_devices 获取。
usbstring否小写十六进制格式的 USB 厂商:产品 ID,例如 "2ca3:001f"(来自 lsusb)。
modelstring否设备或包装上印刷的型号名称,例如 "Neo 2"。
fcc_idstring否标签上的 FCC ID,例如 "SS3-NEO2"。标识符是最可靠的匹配依据。
vendorstring否制造商或品牌,例如 "DJI"。
ble_namestring否Bluetooth LE 广播名称。
zigbee_modelstring否设备报告的 Zigbee modelId。

详细介绍

@opendevicedb/mcp

MCP 服务,让 AI Agent(Claude Code、Codex、Cursor、REA…)在对设备进行逆向工程之前询问 OpenDeviceDB——“这项工作已经有人做过了吗?有人正在做吗?”——并在完成之后记录成果。使用 Stdio 传输,官方 @modelcontextprotocol/sdk。

需要 Node ≥ 22.18(直接运行 .ts 源文件,无需构建步骤),并且已在此仓库根目录运行 npm install。

工具

工具用途
lookup_device(id?, vendor?, model?, fcc_id?, usb?, ble_name?, zigbee_model?)查询单个设备:完整记录、有效状态、当前认领情况以及一行建议;明确说明是否没有相关信息
search_devices(query, category?, status?, limit?)探索:按名称、别名和标识符返回排序后的匹配结果(若有,则显示最简单的 install 难度)
claim_device(id? | vendor+model, category?, who, contact, scope, days=30)声明你正在处理该设备(最多 90 天);必要时创建占位记录
publish_findings(id, patch, allow_downgrade?, release_claim_of?)将结果合并到记录中(经过验证,状态只会向前推进,并经过策略筛查)
request_device(vendor, model, fcc_id?, usb?, ble_name?, zigbee_model?, goal?)用户想要使用该设备,但不愿对其进行逆向工程:返回现有请求供其添加 👍,或返回预填好的公开 GitHub issue 链接,由用户自行提交(只读,绝不代为发布)
list_sources()已导入数据库的许可、快照日期和记录数,以及整理后的记录数

安装途径。 记录中可以包含 install:将开源固件或软件安装到设备上的方法(例如 web-serial、ota-exploit、usb-bootloader、pairing);项目的官方 guide 和 installer;difficulty;tools;opens_device、mains_powered、brick_risk、reversible/revert、firmware_constraints。lookup_device 会在 record.install 中返回这些信息,并建议 Agent 使用官方指南,引导用户采用最简单的途径(如果必须打开市电设备,绝不提供逐步操作说明);search_devices 会将最简单的 difficulty 作为 install 返回;publish_findings 接受 patch.install 中的途径,并按方法 + 指南合并。此处不会刷写或托管任何内容。

写入内容会保存到本地检出目录中的 data/devices/<vendor>/<model>.yaml。服务不会运行 git:每次写入结果都会指出已更改的文件,并给出下一步操作(git checkout -b … && git add … && git commit … && gh pr create --fill)。

后端(环境变量)

变量效果
ODB_REPO=/path/to/opendevicedb本地检出目录:读取整理后的记录和已导入记录,允许写入
ODB_API_URL=https://…只读:使用网站的静态 API(/api/index.json、/api/devices/<id>.json),缓存 10 分钟;claim/publish 会返回错误并要求设置 ODB_REPO
两者均未设置使用此软件包所在的检出目录(等同于将 ODB_REPO 指向该目录)

同时设置时,以 ODB_REPO 为准。

注册

将 /path/to/opendevicedb 替换为你的检出目录。

Claude Code

claude mcp add opendevicedb -e ODB_REPO=/path/to/opendevicedb -- node /path/to/opendevicedb/packages/mcp/src/server.ts

(设置 --scope user,即可在每个项目中使用。)

Codex(~/.codex/config.toml,或 codex mcp add opendevicedb -- node …/server.ts)

[mcp_servers.opendevicedb]
command = "node"
args = ["/path/to/opendevicedb/packages/mcp/src/server.ts"]
env = { ODB_REPO = "/path/to/opendevicedb" }

Cursor(项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json)

{
  "mcpServers": {
    "opendevicedb": {
      "command": "node",
      "args": ["/path/to/opendevicedb/packages/mcp/src/server.ts"],
      "env": { "ODB_REPO": "/path/to/opendevicedb" }
    }
  }
}

无需检出自己的数据即可只读使用:将 ODB_API_URL 设置为网站的基础 URL,而不是设置 ODB_REPO。

Agent 工作流

  1. 查找 — 使用标签上的信息调用 lookup_device(FCC ID、lsusb 显示的 USB vid:pid、BLE 名称),或使用厂商 + 型号。遵循建议:如果有开放固件或 SDK,就使用它;如果有人持有有效认领,请联系对方。 如果没有任何已知信息,而用户只是想让设备出现在目录中?向他们提供请求链接(查找结果中的 request / request_url,或 request_device),以便记录这份兴趣。
  2. 认领 — 没有已知信息(或信息不完整)?开始前,使用 claim_device 填写认领人、联系方式和范围,然后提交文件并创建 PR,让其他人能看到这项认领。
  3. 开展工作 — 逆向工程。切勿触碰 Remote ID、地理围栏或其他安全功能;切勿复制固件映像或厂商代码(POLICY.md)。
  4. 发布 — 使用 publish_findings 填写摘要、状态、接口(将协议文档链接设为 spec)、项目(托管在其他地方的代码)、安装途径、验证信息和 provenance.ai_assisted。传入 release_claim_of 以结束认领。
  5. PR — 运行结果中的 git / gh pr create 命令。维护者会审核。

SKILL.md 是相同工作流的 Agent 技能版本,可直接放入技能目录(或嵌入其他工具)。

CLI

可在 shell 中调用相同的函数(使用相同的环境变量),并以 JSON 格式打印工具结果:

node src/cli.ts lookup --vendor DJI --model "Neo 2"
node src/cli.ts lookup --usb 2ca3:001f
node src/cli.ts search tello --category drone
node src/cli.ts claim --vendor Acme --model "X1" --category toy --who alice --contact @alice --scope "BLE control" --days 30
node src/cli.ts publish acme/x1 --patch '{"status":"partial-protocol","summary":"…"}'   # or --patch-file findings.json
node src/cli.ts sources

开发

npm test -w @opendevicedb/mcp   # node:test; uses temporary fake repositories, plus a stdio end-to-end test
npm run mcp                     # from the repo root: start the server on stdio

代码:AGPL-3.0-or-later(参见仓库中的 LICENSE)。单独的 SKILL.md 采用 CC0-1.0 许可,其他工具可嵌入使用。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。