Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Manage and live-debug LoRaWAN devices on a ChirpStack v4 network server over its gRPC API
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
CHIRPSTACK_SERVER, CHIRPSTACK_API_KEY, CHIRPSTACK_TOOLSETS, CHIRPSTACK_TLS비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"chirpstack": {
"command": "uvx",
"args": [
"chirpstack-mcp-server"
],
"env": {
"CHIRPSTACK_SERVER": "your-value",
"CHIRPSTACK_API_KEY": "your-value",
"CHIRPSTACK_TOOLSETS": "your-value",
"CHIRPSTACK_TLS": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add chirpstack --env CHIRPSTACK_SERVER=your-value --env CHIRPSTACK_API_KEY=your-value --env CHIRPSTACK_TOOLSETS=your-value --env CHIRPSTACK_TLS=your-value -- uvx chirpstack-mcp-server실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"chirpstack": {
"command": "uvx",
"args": [
"chirpstack-mcp-server"
],
"env": {
"CHIRPSTACK_SERVER": "your-value",
"CHIRPSTACK_API_KEY": "your-value",
"CHIRPSTACK_TOOLSETS": "your-value",
"CHIRPSTACK_TLS": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"chirpstack": {
"type": "stdio",
"command": "uvx",
"args": [
"chirpstack-mcp-server"
],
"env": {
"CHIRPSTACK_SERVER": "your-value",
"CHIRPSTACK_API_KEY": "your-value",
"CHIRPSTACK_TOOLSETS": "your-value",
"CHIRPSTACK_TLS": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
CHIRPSTACK_TOOLSETS envCHIRPSTACK_TLS env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 8일 점검
레지스트리 이름이 GitHub 계정 oliveres 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: CHIRPSTACK_SERVER, CHIRPSTACK_API_KEY
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.1)은 2개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Tethered Trust
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Fit, compatibility and recall checks for AI agents before they buy: verdicts, evidence, receipts.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
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.
*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.*
uvx chirpstack-mcp-server # run directly (needs uv: https://docs.astral.sh/uv/)
pip install chirpstack-mcp-server
| Variable | Required | Default | Meaning |
|---|---|---|---|
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 | devices, debug, applications, profiles, gateways | comma-separated toolsets, or all |
CHIRPSTACK_TLS | no | false | use TLS instead of plain HTTP/2 |
CHIRPSTACK_TRANSPORT | no | stdio | stdio or streamable-http |
CHIRPSTACK_HTTP_PORT | no | 8000 | port for streamable-http (bound to 127.0.0.1) |
claude mcp add chirpstack -e CHIRPSTACK_SERVER=192.168.1.10:8080 -e CHIRPSTACK_API_KEY=eyJ... -- uvx chirpstack-mcp-server
{
"mcpServers": { "chirpstack": { "command": "uvx", "args": ["chirpstack-mcp-server"], "env": { "CHIRPSTACK_SERVER": "192.168.1.10:8080", "CHIRPSTACK_API_KEY": "eyJ..." } } } }
Tools are grouped so an agent only sees what it needs. Names are _ .
| Toolset | Default | Tools |
|---|---|---|
devices | yes | list, get, create, update, delete, set_keys, activate, deactivate, flush_dev_nonces, enqueue, queue_get, queue_flush, metrics |
debug | yes | server_info, capture_start, capture_read, capture_stop, capture_list, wait_for_event, device_recent_events |
applications | yes | list, get, create, update, delete, list_device_tags |
profiles | yes | list, get, create, update, delete, profile_set_codec, list_vendors, list_adr_algorithms |
gateways | yes | list, get, create, update, delete, metrics |
multicast | no | group CRUD, add/remove device, enqueue, queue_list, queue_flush |
fuota | no | deployment CRUD, start, add/remove/list devices, list_jobs |
integrations | no | integration_list/get/set/delete — one generic set for all ten ChirpStack integration kinds; integration_get redacts stored credentials unless include_secrets=true |
tenants | no | tenant CRUD, tenant users, API keys |
relay | no | relay 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.
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:
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.device_enqueue(dev_eui, f_port, data_hex=...) queues the downlink.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.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.
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. 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.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.Host/Origin headers (DNS-rebinding protection), so a web page in the operator's browser cannot open an MCP session against the loopback listener.destructiveHint) so MCP clients can ask before running them.tenants toolset lets the agent mint API keys; api_key_create returns the new token once, in its result.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
Design notes live in docs/design.md.
MIT © Oldřich Švéda