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
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม 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": "ใส่ค่าของคุณ",
"CHIRPSTACK_API_KEY": "ใส่ค่าของคุณ",
"CHIRPSTACK_TOOLSETS": "ใส่ค่าของคุณ",
"CHIRPSTACK_TLS": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add chirpstack --env CHIRPSTACK_SERVER='ใส่ค่าของคุณ' --env CHIRPSTACK_API_KEY='ใส่ค่าของคุณ' --env CHIRPSTACK_TOOLSETS='ใส่ค่าของคุณ' --env CHIRPSTACK_TLS='ใส่ค่าของคุณ' -- uvx chirpstack-mcp-serverเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"chirpstack": {
"command": "uvx",
"args": [
"chirpstack-mcp-server"
],
"env": {
"CHIRPSTACK_SERVER": "ใส่ค่าของคุณ",
"CHIRPSTACK_API_KEY": "ใส่ค่าของคุณ",
"CHIRPSTACK_TOOLSETS": "ใส่ค่าของคุณ",
"CHIRPSTACK_TLS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"chirpstack": {
"type": "stdio",
"command": "uvx",
"args": [
"chirpstack-mcp-server"
],
"env": {
"CHIRPSTACK_SERVER": "ใส่ค่าของคุณ",
"CHIRPSTACK_API_KEY": "ใส่ค่าของคุณ",
"CHIRPSTACK_TOOLSETS": "ใส่ค่าของคุณ",
"CHIRPSTACK_TLS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
CHIRPSTACK_TOOLSETS envCHIRPSTACK_TLS envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub oliveres ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: CHIRPSTACK_SERVER, CHIRPSTACK_API_KEY
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.1) เข้า registry 2 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, FOGA node
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
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.
A Finch OG Agent cell as an MCP server: read the world, dry-run and take ERC-8414 tenders by policy.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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