关于 ChirpStack
ChirpStack 是用于管理 ChirpStack v4 LoRaWAN 网络并实时调试设备的 MCP 服务。它通过原生 gRPC API 连接,并提供可配置的网络操作工具集。
主要功能
- 01设备与网络管理
- 02实时捕获事件和帧
- 03下行消息排队
- 04编解码器更新与检查
- 05可配置工具集
适用场景
- 01在应用开发期间调试设备上行数据
- 02发送下行消息并检查确认信息
- 03管理 ChirpStack 应用和网关
MCP 相关
通过原生 gRPC API 向 MCP 客户端提供 ChirpStack v4 管理和实时调试工具。可选择工具集,以控制开放的功能。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx chirpstack-mcp-serverCHIRPSTACK_SERVERhost:port of the ChirpStack API (the web-UI port, usually 8080)CHIRPSTACK_API_KEY密钥ChirpStack API key (tenant or global admin)CHIRPSTACK_TOOLSETSComma-separated toolsets to enable, or 'all' (default: devices,debug,applications,profiles,gateways)CHIRPSTACK_TLSUse TLS instead of plain h2c (default: false)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
40收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| offset | integer | 否 | |
| search | string | 否 | |
| application_id | string | 是 |
详细介绍
chirpstack-mcp-server
一个适用于 ChirpStack v4 的 MCP 服务。 它让 AI Agent(Claude Code、Claude Desktop 或任何 MCP 客户端)管理 LoRaWAN 网络, 并且——在开发设备应用时最重要的功能——实时调试设备: 排入一条下行消息、观察上行消息和事件到达、迭代载荷编解码器, 并检查链路质量,所有操作都可以在编码会话中完成。
该服务通过单个 API 密钥连接 ChirpStack 的原生 gRPC API。不包含任何 特定于设备或厂商的逻辑。

真实、未经剪辑的 Claude Code 会话(2.5× 速度,仅使用 ChirpStack MCP 工具):Agent 读取设备配置文件中的编解码器,在原始上行消息中发现探头断连哨兵值,通过 profile_set_codec 部署修复,然后使用 wait_for_event 等待设备的下一条上行消息,并确认解码后的对象。
安装
uvx chirpstack-mcp-server # run directly (needs uv: https://docs.astral.sh/uv/)
# or
pip install chirpstack-mcp-server
配置
| 变量 | 必填 | 默认值 | 含义 |
|---|---|---|---|
CHIRPSTACK_SERVER | 是 | — | ChirpStack API 的 host:port(Web UI 端口,通常为 8080) |
CHIRPSTACK_API_KEY | 是 | — | 在 ChirpStack → API keys 中获取的 API 密钥(租户管理员或全局管理员) |
CHIRPSTACK_TOOLSETS | 否 | devices, debug, applications, profiles, gateways | 以逗号分隔的工具集,或 all |
CHIRPSTACK_TLS | 否 | false | 使用 TLS,而非明文 HTTP/2 |
CHIRPSTACK_TRANSPORT | 否 | stdio | stdio 或 streamable-http |
CHIRPSTACK_HTTP_PORT | 否 | 8000 | streamable-http 使用的端口(绑定到 127.0.0.1) |
Claude Code
claude mcp add chirpstack -e CHIRPSTACK_SERVER=192.168.1.10:8080 -e CHIRPSTACK_API_KEY=eyJ... -- uvx chirpstack-mcp-server
Claude Desktop / 通用 MCP 配置
{
"mcpServers": {
"chirpstack": {
"command": "uvx",
"args": ["chirpstack-mcp-server"],
"env": {
"CHIRPSTACK_SERVER": "192.168.1.10:8080",
"CHIRPSTACK_API_KEY": "eyJ..."
}
}
}
}
工具集
工具按组分类,让 Agent 只看到所需工具。名称格式为 <toolset>_<verb>。
| 工具集 | 默认启用 | 工具 |
|---|---|---|
devices | 是 | 列出、获取、创建、更新、删除、设置密钥、激活、停用、清空设备 Nonce、加入队列、获取队列、清空队列、指标 |
debug | 是 | server_info、capture_start、capture_read、capture_stop、capture_list、wait_for_event、device_recent_events |
applications | 是 | 列出、获取、创建、更新、删除、列出设备标签 |
profiles | 是 | 列出、获取、创建、更新、删除、profile_set_codec、列出厂商、列出 ADR 算法 |
gateways | 是 | 列出、获取、创建、更新、删除、指标 |
multicast | 否 | 组 CRUD、添加/移除设备、加入队列、queue_list、queue_flush |
fuota | 否 | 部署 CRUD、启动、添加/移除/列出设备、list_jobs |
integrations | 否 | integration_list/get/set/delete——适用于 ChirpStack 全部十种集成类型的通用设置工具;除非 include_secrets=true,否则 integration_get 会对存储的凭据进行脱敏 |
tenants | 否 | 租户 CRUD、租户用户、API 密钥 |
relay | 否 | 中继设备和中继网关 |
使用 CHIRPSTACK_TOOLSETS=devices,debug,profiles,multicast 或 CHIRPSTACK_TOOLSETS=all 启用更多工具集。
server_info 是 Agent 检查连接和 API 密钥时应首先调用的工具;
其 chirpstack_version/regions 字段可能返回 null/空值,因为 ChirpStack 只会向已登录的用户会话提供这些信息,
不会向 API 密钥提供。
实时调试
ChirpStack 会为每台设备保留最近约 10 条事件,并持续推送新事件。debug 工具集将这些事件转换为 Agent 可以在工具调用间使用的信息:
capture_start(target, kind)会开启后台流(设备的events或frames,网关的gateway_frames),将数据写入包含 500 项的环形缓冲区,并返回一个session_id。device_enqueue(dev_eui, f_port, data_hex=...)会将下行消息加入队列。capture_read(session_id, since_seq)会返回自上次读取以来收到的所有内容——已解码的上行消息(f_port、f_cnt、data_hex、编解码器object、各网关的rssi/snr)、该下行消息的ack/txack,以及出错时的log条目。- 完成后调用
capture_stop(session_id)。空闲会话会在 30 分钟后过期。
快速查看时,可使用 wait_for_event(dev_eui, timeout_s),最多阻塞 60 秒以等待下一个实时事件——它只会返回调用时刻之后的新事件,不会返回 ChirpStack 重放的历史事件;device_recent_events(dev_eui) 则会返回历史事件,且不会保留会话。
A 类设备只能在下一次上行消息后接收下行消息;C 类设备则会立即收到。
安全说明
- API 密钥从环境变量中读取,绝不会出现在工具输出中。
device_get会隐藏根密钥,除非明确设置include_keys=true。 device_get/multicast_get会隐藏会话密钥,除非设置include_keys=true。integration_get会隐藏已存储的凭据,除非设置include_secrets=true。<redacted>为保留值:integration_set/multicast_update会在其出现的任何位置保留已存储的值(因此可直接将编辑后的_get结果传回),而当没有可保留的值时,integration_set/multicast_create会拒绝该值。- 默认使用纯 HTTP/2(h2c),因为 ChirpStack 的 API 端口默认使用纯连接。纯 h2c 会在传输过程中以明文发送 API 密钥作为 bearer token;仅在可信 LAN 上使用,并在其他环境中设置
CHIRPSTACK_TLS=true(须位于支持 gRPC 的 TLS 终止代理之后)或使用 VPN。 streamable-http本身不提供身份验证,并绑定到127.0.0.1。请勿将其暴露在公共网络接口上。- HTTP 传输会验证
Host/Origin标头(防止 DNS 重绑定),因此,操作人员浏览器中的网页无法通过环回监听器建立 MCP 会话。 - 破坏性工具会带有注释(
destructiveHint),因此 MCP 客户端可以在运行前征求确认。 - 启用
tenants工具集后,Agent 可以创建 API 密钥;api_key_create会在结果中返回一次新令牌。
开发
uv sync
uv run pytest # unit tests
uv run ruff check . && uv run pyright
tests/integration/up.sh # throwaway ChirpStack in Docker + API key
set -a; . .integration/env; set +a
uv run pytest -m integration
tests/integration/down.sh
设计说明见 docs/design.md。
许可证
MIT © Oldřich Švéda
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。