rustmistmcp
ภาพรวม
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
HPE Juniper Mist MCP server: scoped, audited, two-person change control. Rust.
ใช้ทำอะไรได้
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
- การเชื่อมต่อ: รันบนเครื่อง
- ช่องทาง (transport): stdio
- หมวด: เครื่องมือนักพัฒนา
ติดตั้ง
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ผลตรวจผ่าน 2/2 · ทำงานบนเครื่องคุณ
ขั้นแรก: คุณใช้ AI ตัวไหน
เลือกแอปที่คุณใช้ ขั้นตอนจะขึ้นด้านล่าง
ต่อกับ Claude ได้ แต่ต้องเตรียมก่อน
ต้องลง Docker ในเครื่องก่อน (ทำครั้งเดียว) · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ
เปิดไฟล์ตั้งค่าของแอป Claude บนคอม
SettingsDeveloperEdit Config
วางค่าตั้งนี้แล้วบันทึกไฟล์
{ "mcpServers": { "rustmistmcp": { "command": "docker", "args": [ "run", "-i", "--rm", "ghcr.io/mechubsec/rustmistmcp:0.5.1", "--transport", "stdio", "--state-file", "/var/lib/rustmistmcp/changeset-state.json" ] } } }ปิดแอป Claude แล้วเปิดใหม่
ลองเลย
ใช้ rustmistmcp บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Claude บอกว่ากำลังใช้ rustmistmcp หรือมีชื่อเครื่องมือของ rustmistmcp ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ChatGPT ยังต่อ rustmistmcp ไม่ได้
rustmistmcp ต้องติดตั้งในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะตัวที่ทำงานบนเว็บ
คุณทำแบบนี้แทนได้
ก · ใช้แอปที่ต่อ rustmistmcp ได้
- ต้องลง Docker ในเครื่องก่อน (ทำครั้งเดียว) · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ
- ต้องลง Docker ในเครื่องก่อน (ทำครั้งเดียว)
- ต้องลง Docker ในเครื่องก่อน (ทำครั้งเดียว)
- ต้องลง Docker ในเครื่องก่อน (ทำครั้งเดียว)
ข · ตัวอื่นในหมวด เครื่องมือนักพัฒนา ที่ต่อกับ ChatGPT ได้
เลือกจากตัวที่ใช้มากในหมวดเดียวกัน เฉพาะตัวที่ต่อด้วยที่อยู่ได้โดยไม่ต้องใส่คีย์
- Sentry✓ ChatGPT
- Front-End Checklist✓ ChatGPT
- Compiler Explorer✓ ChatGPT
ต่อกับ Claude Code ได้ แต่ต้องเตรียมก่อน
ต้องลง Docker ในเครื่องก่อน (ทำครั้งเดียว)
เปิด Terminal
Mac: กด Command+Space พิมพ์ Terminal · Windows: เปิด PowerShell
วางคำสั่งนี้แล้วกด Enter
claude mcp add rustmistmcp -- docker run -i --rm ghcr.io/mechubsec/rustmistmcp:0.5.1 --transport stdio --state-file /var/lib/rustmistmcp/changeset-state.jsonพิมพ์ /mcp ใน Claude Code
ต้องเห็น rustmistmcp ในรายการและขึ้นว่าเชื่อมต่อแล้ว
ลองเลย
ใช้ rustmistmcp บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Claude Code บอกว่ากำลังใช้ rustmistmcp หรือมีชื่อเครื่องมือของ rustmistmcp ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ Cursor ได้ แต่ต้องเตรียมก่อน
ต้องลง Docker ในเครื่องก่อน (ทำครั้งเดียว)
เปิดแชตของ AI ใน Cursor โหมด Agent
ลองเลย
ใช้ rustmistmcp บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Cursor บอกว่ากำลังใช้ rustmistmcp หรือมีชื่อเครื่องมือของ rustmistmcp ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Cursor เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ VS Code ได้ แต่ต้องเตรียมก่อน
ต้องลง Docker ในเครื่องก่อน (ทำครั้งเดียว)
เปิดแชตของ AI ใน VS Code โหมด Agent
ลองเลย
ใช้ rustmistmcp บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า VS Code บอกว่ากำลังใช้ rustmistmcp หรือมีชื่อเครื่องมือของ rustmistmcp ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ VS Code เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
สำหรับคนเขียนโค้ด: คำสั่ง Terminal และค่าตั้ง JSON
ติดตั้งในเครื่อง
Claude Code
claude mcp add rustmistmcp -- docker run -i --rm ghcr.io/mechubsec/rustmistmcp:0.5.1 --transport stdio --state-file /var/lib/rustmistmcp/changeset-state.jsonClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"rustmistmcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mechubsec/rustmistmcp:0.5.1",
"--transport",
"stdio",
"--state-file",
"/var/lib/rustmistmcp/changeset-state.json"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"rustmistmcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mechubsec/rustmistmcp:0.5.1",
"--transport",
"stdio",
"--state-file",
"/var/lib/rustmistmcp/changeset-state.json"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"rustmistmcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mechubsec/rustmistmcp:0.5.1",
"--transport",
"stdio",
"--state-file",
"/var/lib/rustmistmcp/changeset-state.json"
]
}
}
}ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
สรุป
- การเชื่อมต่อ
- รันบนเครื่อง
- ช่องทาง (transport)
- stdio
- รุ่นล่าสุดi
- 0.5.1
- ส่งเข้า registryi
- 10 พ.ย. 2569
- แก้โค้ดล่าสุดi
- 10 พ.ย. 2569
- ผู้ทำ
- mechubsec
- แพ็กเกจ
oci: ghcr.io/mechubsec/rustmistmcp:0.5.1- เว็บผู้ทำ
- mechub.org
- สถานะใน registry
- ใช้งานอยู่
ใช้กับโปรแกรมไหนได้
ดูจากแบบการต่อของ server ตัวนี้ และเอกสารของผู้ทำโปรแกรมแต่ละตัว ตรวจเมื่อ 10 พ.ย. 2569
ติดตั้งบนเครื่องได้ใน
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
คู่มือที่เกี่ยวข้อง
ทำอะไรได้บ้าง
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
ผลตรวจเบื้องต้นi
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 11 พ.ย. 2569
- ✓ ผ่าน
ตัวตนผู้ทำตรงกับ repo
ชื่อใน registry ยืนยันด้วยบัญชี GitHub mechubsec ซึ่งเป็นเจ้าของ repo
- ✓ ผ่าน
ยังมีคนดูแล
มีการแก้โค้ดล่าสุด เมื่อวาน
- … ยังไม่ตรวจ
มีสัญญาอนุญาต (license)
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
- – ไม่เกี่ยว
endpoint ตอบ
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
- – ไม่เกี่ยว
ล็อกอินแบบ OAuth
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
- … ยังไม่ตรวจ
คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
พูดคุย
ถาม แชร์เคล็ดลับ หรือแจ้งว่าใช้ไม่ได้ เรียงตามที่คนกดว่ามีประโยชน์
ยังไม่มีใครโพสต์ ถามหรือแชร์เป็นคนแรกได้เลย
ข้อความในส่วนนี้เขียนโดยผู้ใช้ ไม่ใช่ทีม PopNx
รีวิวจากผู้ใช้
ยังไม่มีรีวิว
เทียบกับตัวอื่นในหมวด เครื่องมือนักพัฒนาi
- ดาวมากกว่า 69% ของอีก 5747 ตัวในหมวดนี้
- ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 95% ของอีก 5747 ตัวในหมวดนี้
- ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 5747 ตัวในหมวดนี้
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
คำถามที่พบบ่อย
rustmistmcp ปลอดภัยไหม?
จากการตรวจเบื้องต้นของเรา ผ่าน 2 จาก 2 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใช้กุญแจหรือรหัสอะไรบ้าง?
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
ตัวนี้รันบนเครื่องหรือบนคลาวด์?
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
ยังมีคนดูแลอยู่ไหม?
repo บน GitHub มีการแก้โค้ดล่าสุด เมื่อวาน และส่งรุ่นล่าสุด (0.5.1) เข้า registry เมื่อวาน
ใช้กับโปรแกรมไหนได้บ้าง?
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย
มีตัวไหนใช้แทนได้บ้าง?
ในหมวดเดียวกันมี REA, Netdata, Front-End Checklist
ตัวที่ใช้แทนได้
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
README จากผู้ทำ
เปิดอ่าน README
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
rustmistmcp
Async Rust Model Context Protocol server for the HPE Juniper Mist cloud
a mechub project — sovereign network-security automation
Unofficial / community project. This is an independent community project
and does not claim affiliation with or endorsement by Hewlett Packard
Enterprise or Juniper Networks. Product names and trademarks are used only to
identify the systems with which the software interoperates.
rustmistmcp exposes the Juniper Mist cloud — orgs, sites, APs, switches, gateways, WLANs, clients, SLE, and Marvis — to MCP clients as a bounded, auditable tool surface.
Where rustjunosmcp talks NETCONF to individual SRX devices and rustpanosmcp talks XML-API to individual PAN-OS firewalls, this server talks to a multi-tenant cloud control plane. One org-scoped call can reach every site and every access point in an estate, so scoping, bounded responses, and change control are not garnish here; they are the design.
The functional target is the Mist half of nowireless4u/hpe-networking-mcp — site health and SLE, device inventory and stats, WLAN/SSID management, client connectivity, events and alarms, audit logs, RRM and rogue detection, firmware, NAC/policy, guest access, webhooks, floor plans, and Marvis — reimplemented in Rust on the mecmcp foundation rather than as a Python spec-driven registry. That project registers on the order of a thousand generated tools; this one deliberately will not. A curated, scoped, individually-documented surface is the whole point of doing it again.
Relationship to mecmcp
mecmcp is the vendor-neutral Rust foundation shared by the mechub MCP server family. This repository is a consumer of that foundation, not a fork of it:
| Concern | Where it lives |
|---|---|
Token mint/digest/verify, tokens.json, scopes, grants, caller context | mecmcp-auth |
| Attribution, audit events, redaction, sinks | mecmcp-audit |
| Streamable-HTTP transport, host/Origin checks, rate + concurrency limits | mecmcp-transport |
| CLI skeleton, TLS bootstrap, signals, graceful shutdown | mecmcp-runtime |
| Plan → digest → approve → apply → verify change control | mecmcp-changeset |
| OpenAPI catalog path expansion (per-segment percent-encoding) | mecmcp-openapi |
| Mist REST client, API-token auth, response models, tool surface | this repo |
Everything that is *not* specific to the Mist API is upstream. If you find yourself writing generic auth or transport code here, it belongs in mecmcp. There is currently no temporary exception: the one the ledger at docs/UPSTREAM_COMPATIBILITY.md recorded — a Mist-typed token lifecycle adapter — was deleted when its removal condition was met. Any new exception must be recorded there with an objective removal condition.
The API
Mist publishes a versioned REST API under /api/v1, served from per-region cloud endpoints. The org's home region determines the host:
| Region | Endpoint |
|---|---|
| Global 01 | api.mist.com |
| EU 01 | api.eu.mist.com |
| GovCloud | api.gc1.mist.com |
Additional regional clouds exist; the authoritative list is Juniper's *API Endpoints and Global Regions* table, and the region must be operator-configured rather than guessed.
The Mist vendor API supports API tokens and external OAuth 2.0. API tokens are sent as Authorization: Token , may be minted per user or organization, and inherit the privileges of the account that created them. rustmistmcp v1 intentionally implements API-token authentication only; it does not accept OAuth credentials. HTTP Basic authentication with Juniper Mist login credentials is deprecated as of September 2026 and will not be implemented here.
Primary references:
The concrete endpoint map, pagination, and rate-limit semantics are being vetted directly against the live API reference before any client code lands — this README will not restate a surface it has not verified.
Status
Foundation built; read-only live-tenant acceptance passed. The workspace has an audited operation catalog, strict profile metadata, authorization models, and a catalog-bound MistClient contract that validates Mist operation inputs and binds opaque cursors to a configured origin. mecmcp#90 has closed, so HttpMistClient — the concrete HTTPS implementation over mecmcp-http — is built by MistHandler::from_config on the production path.
A lab deployment has reached a real Mist org. On 2026-08-10, through a loopback-bound endpoint and a grant-scoped bearer token, get_mist_self (getSelf), get_mist_org (getOrg), and list_mist_sites (listOrgSites) each returned tenant data with result: ok in 92–325 ms. That was issue #11's gate, and it closed.
What is *not* done, and must not be described as done:
- That run is not full packaging acceptance. It was loopback-only with no TLS, one org, one token, three read tools. The checklist in
docs/PACKAGING_ACCEPTANCE.md— TLS hostname and chain, anonymous and bad-bearer rejection, exact Host/Origin enforcement — is not complete. - **No
/api/v1/self*startup* identity probe.** Theget_mist_selftool works against a live tenant; nothing probes/selfduring startup, andLIVE_MIST_BLOCKERstill names that gap. - Mutations exist only for batch-1 WAN edge objects. Batch-1 covers create and update for networks, services, service policies, gateway templates, and device profiles, reachable only through the plan → digest → approve → apply lifecycle. Delete operations and
mist_configureddevice-profile assignment/unassignment remain out of reach. No live-tenant apply has been performed.
A handler constructed without a credential uses BlockedMistClient, which performs no I/O; LIVE_MIST_BLOCKER is the message it refuses with.
Outbound Mist timeouts and 429 retries
| Flag | Env | Default | Range |
|---|---|---|---|
--mist-connect-timeout-secs | MIST_CONNECT_TIMEOUT_SECS | 10 | 1-300 |
--mist-request-timeout-secs | MIST_REQUEST_TIMEOUT_SECS | 30 | 1-600 |
--mist-max-429-retries | MIST_MAX_429_RETRIES | 2 | 0-5 (0 disables retry) |
--mist-max-retry-wait-secs | MIST_MAX_RETRY_WAIT_SECS | 30 | 1-120 |
The retry wait honors Retry-After but never exceeds --mist-max-retry-wait-secs. Out-of-range values are rejected at startup. A 429 retry wait holds a Mist concurrency permit, so long waits reduce throughput.
Site discovery
Site-scoped tools refuse any site the handler does not already know (see "The API"). At startup, the server calls listOrgSites for every allowlisted org to populate that map before it begins serving. --site-refresh-interval-secs (default 300) controls a background task that repeats this walk on an interval, so a site added or removed on the Mist side is picked up without a restart; 0 disables the background task and discovers once at startup only.
This refresh is idle polling against the operator-configured Mist origin — listOrgSites requests every site-refresh-interval-secs, independent of tool traffic, over the same catalog-validated MistClient every other read uses. It bypasses the per-tool audit trail, since it is a read that updates internal server state rather than a client-initiated call. A request failure or hitting the tracked-site ceiling for one org during a refresh keeps that org's previously known sites rather than dropping them; it does not affect other orgs' sites.
Shared TokenSecret, cancellation, and changeset primitives are reused, not rebuilt. Mist header names, catalog policy, request/response schemas, terminal states, retry classification, and deployment remain in this repository.
Tool listing mode
--tool-mode full|compact (env MCP_TOOL_MODE, default full) controls what tools/list advertises. compact lists only the catalog dispatchers the caller may see (search_mist_operations, get_mist_operation_schema, invoke_mist_read, invoke_mist_privileged_read) to keep the client's tool context small. The list is still scope-filtered: stdio callers and wildcard-scope tokens see three, and invoke_mist_privileged_read appears only for a token that explicitly allows it. It is listing only: every tool stays callable, and token tool/org/site scopes still authorize each call.
stdio transport
--transport stdio runs the server as a child process of a local MCP client (Claude Desktop, Claude Code, and similar), speaking MCP over stdin/stdout with no listening socket. Use it for single-operator, same-machine setups; use streamable-http for anything shared or remote.
- No bearer-token layer.
--tokens-fileis not read on stdio. The process boundary is the trust boundary: whoever can launch the process is the one caller, recorded in audit and change sets as the principalstdio. Tool, org and site scopes from the token store do not apply; theallowed_orgslist inmist.jsonstill does. Because the planner and approver would both bestdio, self-approval is refused, so a stdio client can plan WAN edge changes but cannot apply them (seedocs/THREAT_MODEL.mdbefore combining stdio with--lab-mode). - Restricted tools are hidden, not blocked.
plan_mist_change,invoke_mist_privileged_read,get_mist_self,search_mist_audit_logsand the rest ofRESTRICTED_TOOLS(crates/rustmistmcp/src/server/mod.rs) are omitted fromtools/liston stdio but remain callable by name. - Never combine stdio, `--lab-mode`, and a production-reaching Mist token. Under
--lab-modea single stdio agent can plan and apply a WAN edge change against the real org (docs/THREAT_MODEL.md). - Native stdio audit is unredacted unless
--audit-redactand--audit-hmac-key-fileare given; the OCI image's entrypoint supplies both. - The Mist API token still comes from the credential file (or env-var name) configured in
mist.json, never from the client config. examples/mcp.json.examplehas two client entries: the native binary and the OCI image (arguments matchserver.json). Replace the placeholder paths.- For clients with a small tool budget, add
"--tool-mode", "compact"toargs(see "Tool listing mode").
Pre-release packaging and deployment boundary
The checked-in Docker, archive, systemd, and LXC assets are pre-release packaging only. A lab LXC built from them has served live read-only tenant traffic (issue #11), which is not the same as packaging acceptance: that run used no TLS and no off-loopback bind, so the TLS, Host/Origin, and bad-bearer rows of docs/PACKAGING_ACCEPTANCE.md remain unproven. The /api/v1/self startup probe is unimplemented, and mutations exist only for batch-1 WAN edge objects behind the change-set lifecycle; no live-tenant apply has been performed. No v1 release label may be claimed until that checklist is complete.
The OCI image is a multi-stage build with a digest-pinned Rust builder and a digest-pinned distroless Debian 13 runtime. It runs only `/usr/local/bin/