ChirpStack

io.github.oliveres由 GitHub 帳號 oliveres 發布v0.1.1更新於 Oct 24, 2026

Manage and live-debug LoRaWAN devices on a ChirpStack v4 network server over its gRPC API

概覽

AI 產生的概覽

此 MCP 伺服器讓助理透過 gRPC API 在 ChirpStack v4 網路伺服器上管理並即時偵錯 LoRaWAN 裝置。

可以做什麼
列出、建立、更新、刪除、啟用與停用裝置,將下行排入佇列或清空,並檢視指標與金鑰。管理應用程式、裝置設定檔(含設定 payload 編解碼器)、閘道器及其指標。在背景工作階段擷取裝置即時事件與訊框,讀取新增內容,等待下一個事件,並檢視裝置近期事件。可選管理多播群組、FUOTA 部署、整合、租戶與 API 金鑰,以及中繼裝置與中繼閘道器。
適用情境
適用於在 ChirpStack v4 上開發或維運 LoRaWAN 部署時,希望助理在撰寫程式期間檢查裝置、反覆調整 payload 編解碼器、排入下行並觀察上行與事件。
執行需求
以 Python 套件形式透過 uvx 或 pip 在本機執行,需要 uv 或 Python。需要 CHIRPSTACK_SERVER(API 的 host:port,通常為 8080)與 CHIRPSTACK_API_KEY(租戶或全域管理員金鑰)。選用 CHIRPSTACK_TLS、CHIRPSTACK_TOOLSETS、CHIRPSTACK_TRANSPORT 與 CHIRPSTACK_HTTP_PORT。需要能連線至 ChirpStack 伺服器的網路。
安裝前請注意
API 金鑰具備租戶或全域管理員權限,預設經明文 h2c 以明文 bearer token 傳送;在可信區域網路之外應使用 TLS 或 VPN。工具會建立、更新與刪除裝置、設定檔、閘道器與佇列,破壞性工具僅被標註而不會被阻擋。啟用 tenants 工具集後助理可建立 API 金鑰。streamable-http 傳輸本身無驗證,必須僅綁定回環位址。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ChirpStack,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

chirpstack-mcp-server

An MCP server for ChirpStack v4. It lets an AI agent (Claude Code, Claude Desktop, or any MCP client) manage a LoRaWAN network and — the part that matters while you are building a device application — debug devices live: queue a downlink, watch the uplinks and events as they arrive, iterate a payload codec, and inspect link quality, all from the coding session.

The server talks to ChirpStack's native gRPC API with a single API key. It carries no device- or vendor-specific logic.

[Claude Code fixes a payload decoder and verifies it on the next live uplink]

Real, unedited Claude Code session (2.5× speed, only the ChirpStack MCP tools): the agent reads the device profile's codec, spots the disconnected-probe sentinel in a raw uplink, deploys a fix with profile_set_codec, then waits for the device's next uplink with wait_for_event and confirms the decoded object.

Install

bash
uvx chirpstack-mcp-server        # run directly (needs uv: https://docs.astral.sh/uv/)# orpip install chirpstack-mcp-server

Configure

VariableRequiredDefaultMeaning
CHIRPSTACK_SERVERyes—host:port of the ChirpStack API (the web-UI port, usually 8080)
CHIRPSTACK_API_KEYyes—API key from ChirpStack → API keys (tenant or global admin)
CHIRPSTACK_TOOLSETSnodevices, debug, applications, profiles, gatewayscomma-separated toolsets, or all
CHIRPSTACK_TLSnofalseuse TLS instead of plain HTTP/2
CHIRPSTACK_TRANSPORTnostdiostdio or streamable-http
CHIRPSTACK_HTTP_PORTno8000port for streamable-http (bound to 127.0.0.1)

Claude Code

bash
claude mcp add chirpstack -e CHIRPSTACK_SERVER=192.168.1.10:8080 -e CHIRPSTACK_API_KEY=eyJ... -- uvx chirpstack-mcp-server

Claude Desktop / generic MCP config

json
{  "mcpServers": {    "chirpstack": {      "command": "uvx",      "args": ["chirpstack-mcp-server"],      "env": {        "CHIRPSTACK_SERVER": "192.168.1.10:8080",        "CHIRPSTACK_API_KEY": "eyJ..."      }    }  }}

Toolsets

Tools are grouped so an agent only sees what it needs. Names are <toolset>_<verb>.

ToolsetDefaultTools
devicesyeslist, get, create, update, delete, set_keys, activate, deactivate, flush_dev_nonces, enqueue, queue_get, queue_flush, metrics
debugyesserver_info, capture_start, capture_read, capture_stop, capture_list, wait_for_event, device_recent_events
applicationsyeslist, get, create, update, delete, list_device_tags
profilesyeslist, get, create, update, delete, profile_set_codec, list_vendors, list_adr_algorithms
gatewaysyeslist, get, create, update, delete, metrics
multicastnogroup CRUD, add/remove device, enqueue, queue_list, queue_flush
fuotanodeployment CRUD, start, add/remove/list devices, list_jobs
integrationsnointegration_list/get/set/delete — one generic set for all ten ChirpStack integration kinds; integration_get redacts stored credentials unless include_secrets=true
tenantsnotenant CRUD, tenant users, API keys
relaynorelay devices and relay gateways

Enable more with CHIRPSTACK_TOOLSETS=devices,debug,profiles,multicast or CHIRPSTACK_TOOLSETS=all. server_info is the first call an agent should make to check the connection and the API key; its chirpstack_version/regions fields may come back null/empty since ChirpStack only serves those to a logged-in user session, never to an API key.

Live debugging

ChirpStack keeps the last ~10 events per device and streams new ones. The debug toolset turns that into something an agent can use between tool calls:

  1. capture_start(target, kind) opens a background stream (events or frames for a device, gateway_frames for a gateway) into a 500-item ring buffer and returns a session_id.
  2. device_enqueue(dev_eui, f_port, data_hex=...) queues the downlink.
  3. capture_read(session_id, since_seq) returns everything that arrived since the last read — decoded uplinks (f_port, f_cnt, data_hex, codec object, per-gateway rssi/snr), ack/txack for the downlink, log entries when something went wrong.
  4. capture_stop(session_id) when done. Idle sessions expire after 30 minutes.

For quick looks: wait_for_event(dev_eui, timeout_s) blocks up to 60 s for the next live event — it only returns events newer than the moment it was called, never the history ChirpStack replays; device_recent_events(dev_eui) returns that history without keeping a session.

Class A devices only receive a downlink after their next uplink; Class C devices get it right away.

Security notes

  • The API key is read from the environment and never appears in tool output. device_get hides root keys unless asked with include_keys=true.
  • device_get/multicast_get hide session keys unless include_keys=true.
  • integration_get redacts stored credentials unless include_secrets=true.
  • <redacted> is reserved: integration_set/multicast_update keep the stored value wherever it appears (so an edited _get result can be handed straight back), and integration_set/multicast_create refuse it when there is nothing to keep.
  • Plain HTTP/2 (h2c) is the default because ChirpStack's API port is plain by default. Plain h2c sends the API key as a cleartext bearer token on the wire; use it only on a trusted LAN, and set CHIRPSTACK_TLS=true (behind a TLS-terminating proxy that speaks gRPC) or a VPN elsewhere.
  • streamable-http has no authentication of its own and binds to 127.0.0.1. Do not expose it on a public interface.
  • The HTTP transport validates Host/Origin headers (DNS-rebinding protection), so a web page in the operator's browser cannot open an MCP session against the loopback listener.
  • Destructive tools are annotated (destructiveHint) so MCP clients can ask before running them.
  • Enabling the tenants toolset lets the agent mint API keys; api_key_create returns the new token once, in its result.

Development

bash
uv syncuv run pytest                     # unit testsuv run ruff check . && uv run pyrighttests/integration/up.sh           # throwaway ChirpStack in Docker + API keyset -a; . .integration/env; set +auv run pytest -m integrationtests/integration/down.sh

Design notes live in docs/design.md.

License

MIT © Oldřich Švéda

來源:README.md,提交 b0e3d5f

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分