chirpstack-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CHIRPSTACK_TLS | No | Use TLS instead of plain HTTP/2 | false |
| CHIRPSTACK_SERVER | Yes | host:port of the ChirpStack API (the web-UI port, usually 8080) | |
| CHIRPSTACK_API_KEY | Yes | API key from ChirpStack → API keys (tenant or global admin) | |
| CHIRPSTACK_TOOLSETS | No | Comma-separated toolsets, or 'all' | devices,debug,applications,profiles,gateways |
| CHIRPSTACK_HTTP_PORT | No | Port for streamable-http (bound to 127.0.0.1) | 8000 |
| CHIRPSTACK_TRANSPORT | No | Transport mode: stdio or streamable-http | stdio |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| device_listA | List devices in an application (optionally filtered by a search string). |
| device_getA | Get a device with its current activation (session) and, if include_keys, its OTAA root
keys. include_keys also reveals the session keys in |
| device_createA | Create a device. Set OTAA keys afterwards with device_set_keys, or ABP session with device_activate. |
| device_updateA | Update only the given fields of a device; omitted fields keep their current values.
Supplying |
| device_deleteA | Delete a device and everything ChirpStack stores about it. |
| device_set_keysA | Create or replace the OTAA root keys. LoRaWAN 1.0.x devices use nwk_key only (their AppKey goes in nwk_key). |
| device_activateA | ABP-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_deactivateA | Drop the device session; an OTAA device must re-join before it can communicate. |
| device_flush_dev_noncesA | Forget used DevNonces so a device whose join-requests are rejected as replays can join again. |
| device_enqueueA | Queue 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_queue_getB | Show downlinks waiting for (or pending confirmation from) a device. |
| device_queue_flushB | Discard every queued downlink for a device. |
| device_metricsB | Link quality (RSSI, SNR, packets per frequency/DR, errors) plus codec-defined device metrics. Defaults to the last 24 hours. |
| server_infoA | Check 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. |
| capture_startA | Start 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_readA | Read captured items with seq > since_seq. Remember last_seq and pass it back next
time. Check stream_state for reconnects. Each item carries |
| capture_stopB | Stop a capture session and discard its buffer. |
| capture_listA | List capture sessions, including ones stopped by a terminal error ( |
| wait_for_eventA | Block 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 ( |
| device_recent_eventsA | One-shot look at the last few events (or frames) ChirpStack still holds for a device - typically the last 10. |
| application_listA | List applications of a tenant. |
| application_getC | Get an application. |
| application_createB | Create an application in a tenant. |
| application_updateA | Update only the given fields of an application. Supplying |
| application_deleteA | Delete an application and all of its devices. |
| application_list_device_tagsA | List the distinct device tag keys and values used inside an application. |
| profile_listB | List device profiles of a tenant. |
| profile_getA | Get a device profile including its payload codec script. |
| profile_createA | Create 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_updateA | Merge 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. |
| profile_deleteA | Delete a device profile (fails while devices still use it). |
| profile_set_codecA | Replace 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_list_vendorsA | List vendors from the imported device-profile catalogue. |
| profile_list_adr_algorithmsA | List the ADR algorithms available on this server. |
| gateway_listA | List gateways (all tenants when tenant_id is empty and the key is a global admin key). |
| gateway_getC | Get a gateway with its last-seen time and location. |
| gateway_createA | Register a gateway; location is set only when coordinates are given. |
| gateway_updateA | Update only the given fields of a gateway. Supplying |
| gateway_deleteB | Delete a gateway. |
| gateway_metricsB | RX/TX packet counts per frequency, DR and status, plus duty-cycle usage. Defaults to the last 24 hours. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/oliveres/chirpstack-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server