ChirpStack MCP server
Manage and live-debug LoRaWAN devices on a ChirpStack v4 network server over its gRPC API
0 stars30 downloads/wk
Reviews
Write oneNobody has reviewed ChirpStack yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
ChirpStack tools (81, 31 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
api_key_createwrite actionCreate an API key. The token is shown once, here; store it securely.
api_key_deletewrite actionRevoke an API key.
api_key_listList API keys: names, ids, and permission/tenant metadata; tokens are never retrievable.
application_createwrite actionCreate an application in a tenant.
application_deletewrite actionDelete an application and all of its devices.
application_getGet an application.
application_listList applications of a tenant.
application_list_device_tagsList the distinct device tag keys and values used inside an application.
application_updatewrite actionUpdate only the given fields of an application. Supplying `tags` replaces the whole tag map.
capture_listList capture sessions, including ones stopped by a terminal error (`stream_state` starts with `stopped:`).
capture_readRead captured items with seq > since_seq. Remember last_seq and pass it back next time. Check stream_state for reconnects. Each item carries `live`: false means ChirpStack replayed it from before the session started, true means it happened while the session was open.
capture_startStart a background capture of a device's events/frames or a gateway's frames. Returns a session_id; read incrementally with capture_read. Sessions idle for 30 minutes are dropped.
capture_stopStop a capture session and discard its buffer.
device_activateABP-activate a device (or reset an OTAA session). For LoRaWAN 1.0.x pass nwk_s_enc_key only; the other two network keys default to it.
device_createwrite actionCreate a device. Set OTAA keys afterwards with device_set_keys, or ABP session with device_activate.
device_deactivatewrite actionDrop the device session; an OTAA device must re-join before it can communicate.
device_deletewrite actionDelete a device and everything ChirpStack stores about it.
device_enqueueQueue a downlink. Give the payload as data_hex, data_base64, or object (encoded by the profile codec). Class A devices receive it after their next uplink.
device_flush_dev_noncesForget used DevNonces so a device whose join-requests are rejected as replays can join again.
device_getGet a device with its current activation (session) and, if include_keys, its OTAA root keys. include_keys also reveals the session keys in `activation`.
device_listList devices in an application (optionally filtered by a search string).
device_metricsLink quality (RSSI, SNR, packets per frequency/DR, errors) plus codec-defined device metrics. Defaults to the last 24 hours.
device_queue_flushDiscard every queued downlink for a device.
device_queue_getShow downlinks waiting for (or pending confirmation from) a device.
device_recent_eventsOne-shot look at the last few events (or frames) ChirpStack still holds for a device - typically the last 10.
device_set_keyswrite actionCreate or replace the OTAA root keys. LoRaWAN 1.0.x devices use nwk_key only (their AppKey goes in nwk_key).
device_updatewrite actionUpdate only the given fields of a device; omitted fields keep their current values. Supplying `tags` replaces the whole tag map. Supplying `variables` replaces the whole variable map.
fuota_add_devicesAdd devices to a deployment.
fuota_createwrite actionCreate a FUOTA deployment from FuotaDeployment fields (snake_case, enums by name) plus the firmware as payload_hex or payload_base64. Byte fields (payload, fragmentation_descriptor) must come through payload_hex/payload_base64 and fragmentation_descriptor_hex, not `deployment`.
fuota_deletewrite actionDelete a FUOTA deployment.
fuota_getGet a FUOTA deployment (payload is returned as hex).
fuota_listList FUOTA deployments of an application.
fuota_list_devicesList devices in a deployment with their per-device progress.
fuota_list_jobsList the scheduler jobs of a deployment with attempts, warnings and errors.
fuota_remove_deviceswrite actionRemove devices from a deployment.
fuota_startStart a FUOTA deployment (schedules the multicast setup, fragmentation and transfer jobs).
fuota_updatewrite actionMerge fields and/or replace the firmware payload of a deployment that has not started yet. Byte fields (payload, fragmentation_descriptor) must come through payload_hex/ payload_base64 and fragmentation_descriptor_hex, not `changes`. Map and repeated fields you supply in `changes` replace the whole field; omitted fields are kept.
gateway_createwrite actionRegister a gateway; location is set only when coordinates are given.
gateway_deletewrite actionDelete a gateway.
gateway_getGet a gateway with its last-seen time and location.
gateway_listList gateways (all tenants when tenant_id is empty and the key is a global admin key).
gateway_metricsRX/TX packet counts per frequency, DR and status, plus duty-cycle usage. Defaults to the last 24 hours.
gateway_updatewrite actionUpdate only the given fields of a gateway. Supplying `tags` replaces the whole tag map.
integration_deletewrite actionRemove an integration from an application.
integration_getGet one integration's configuration. Stored credentials (tokens, passwords, header values, etc.) are redacted unless include_secrets is true.
integration_listList which integrations an application has configured. `manageable` says whether integration_get/set/delete accept that `kind`.
integration_setwrite actionCreate or update an integration.
multicast_add_deviceAdd a device to a multicast group.
multicast_createwrite actionCreate a multicast group from MulticastGroup fields (snake_case; enums by name: region "EU868", group_type "CLASS_C").
multicast_deletewrite actionDelete a multicast group.
multicast_enqueueQueue a multicast downlink (raw bytes only; multicast has no codec).
multicast_getGet a multicast group. include_keys also reveals mc_nwk_s_key/mc_app_s_key.
multicast_listList multicast groups of an application.
multicast_queue_flushDiscard queued multicast downlinks.
multicast_queue_listShow queued multicast downlinks.
multicast_remove_devicewrite actionRemove a device from a multicast group.
multicast_updatewrite actionMerge the given MulticastGroup fields into an existing group; other fields are kept. Map and repeated fields you supply replace the whole field; omitted fields are kept. Session keys left as `<redacted>` (what multicast_get returns by default) keep the key already stored.
profile_createwrite actionCreate a device profile from a dict of DeviceProfile fields (snake_case; enums by name, e.g. region "EU868", mac_version "LORAWAN_1_0_3", reg_params_revision "A"). Required: tenant_id, name, region, mac_version, reg_params_revision.
profile_deletewrite actionDelete a device profile (fails while devices still use it).
profile_getGet a device profile including its payload codec script.
profile_listList device profiles of a tenant.
profile_list_adr_algorithmsList the ADR algorithms available on this server.
profile_list_vendorsList vendors from the imported device-profile catalogue.
profile_set_codecReplace only the payload codec of a profile. For runtime JS, script is required and must define decodeUplink(input) and may define encodeDownlink(input); use runtime NONE to turn the codec off. Iterate here while watching uplinks with capture_read.
profile_updatewrite actionMerge the given DeviceProfile fields into an existing profile; other fields are kept. Map and repeated fields you supply (e.g. tags, measurements) replace the whole field; omitted fields are kept.
relay_add_deviceAttach an end-device to a relay.
relay_gateway_getGet a relay gateway (4-byte relay id as hex).
relay_gateway_listList relay gateways of a tenant.
relay_listList devices acting as relays in an application.
relay_list_devicesList end-devices attached to a relay.
relay_remove_devicewrite actionDetach an end-device from a relay.
server_infoCheck the connection and the API key. Version and regions are only available to user sessions in ChirpStack, so they may be null/empty with an API key.
tenant_createwrite actionCreate a tenant (0 for a count means unlimited).
tenant_deletewrite actionDelete a tenant and everything under it.
tenant_getGet a tenant.
tenant_listList tenants visible to the API key.
tenant_updatewrite actionUpdate only the given fields of a tenant. Supplying `tags` replaces the whole tag map.
tenant_user_addGive an existing user (by e-mail) a role in a tenant.
tenant_user_listList users of a tenant with their roles.
tenant_user_removewrite actionRemove a user from a tenant (the user account itself is kept).
wait_for_eventBlock until the device emits a live event (optionally of the given types: up, join, ack, txack, log, status, location) or the timeout (max 60 s) passes. Only events newer than the moment of the call count (`live`); the events ChirpStack replays from its history never satisfy the wait, whatever their arrival timing. Use device_recent_events for those.
Public scan report
scanner v0.1.9 · 2026-09-20 · same rubric, same numbers if you re-run it
- Code scan24 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 21 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Install directly
claude mcp add chirpstack-mcp-server -- uvx chirpstack-mcp-server
ChirpStack: common questions
- Is ChirpStack MCP server safe?
- Mostly: it is graded B (83/100). Read the ChirpStack safety report
- How do I install ChirpStack?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does ChirpStack need an API key?
- Yes. The registry entry asks for
CHIRPSTACK_API_KEY. - Is ChirpStack maintained?
- The last commit was 21 days ago (2026-08-30). The latest release is v0.1.1.