프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

rustsdcmcp

제작자: mechubsec버전 0.6.0i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.mechubsec/rustsdcmcp

설치

개요

제작자가 쓴 설명(영어 원문)

Juniper Security Director Cloud MCP server: scoped, audited change control. Rust.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 기타

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 레지스트리에 입력해야 할 키가 나와 있지 않아요.

필요한 것

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "rustsdcmcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/mechubsec/rustsdcmcp:0.6.0",
        "--transport",
        "stdio",
        "--state-file",
        "/var/lib/sdcmcp/changeset-state.json"
      ]
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add rustsdcmcp -- docker run -i --rm ghcr.io/mechubsec/rustsdcmcp:0.6.0 --transport stdio --state-file /var/lib/sdcmcp/changeset-state.json

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "rustsdcmcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/mechubsec/rustsdcmcp:0.6.0",
        "--transport",
        "stdio",
        "--state-file",
        "/var/lib/sdcmcp/changeset-state.json"
      ]
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "rustsdcmcp": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/mechubsec/rustsdcmcp:0.6.0",
        "--transport",
        "stdio",
        "--state-file",
        "/var/lib/sdcmcp/changeset-state.json"
      ]
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 mechubsec 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

기타 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 32455개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 32455개 중 81%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 32455개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

rustsdcmcp, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.6.0)은 7일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Docker도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, SSTracker free youth training

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Spec Driven Development

제작자: formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

내 컴퓨터에서 실행★ 440MIT14개월 전 업데이트
설치

Remote Desktop Commander

제작자: desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

클라우드에서 실행★ 211어제 업데이트
설치

SSTracker free youth training

제작자: sstracker.app

Free youth sports drills, practice plans and age-group answers for parents and coaches.

클라우드에서 실행오늘 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

rustsdcmcp

Async Rust Model Context Protocol server for HPE Juniper Security Director 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.


rustsdcmcp exposes HPE Juniper Security Director Cloud (SDC) to MCP clients as a bounded, auditable tool surface. SDC is the HPE Juniper SASE portal for an SRX estate, so this server talks to that management plane rather than to any single firewall. Where rustjunosmcp talks NETCONF to individual SRX devices, rustsdcmcp talks HTTPS REST to the portal that governs them.

That distinction has a large blast radius: one SDC action can affect many managed SRX devices. Strict approval, credential-safe attribution, and bounded I/O therefore protect the management plane rather than merely decorate it.

Current status

rustsdcmcp exposes 80 MCP tools (v0.6.0 and main; v0.3.1 shipped 78; v0.2.0 shipped 74): 60 bounded read tools and 20 change-control tools. The surface covers the part of the SDC API that manages SRX devices and their policy; the rest of the product's API is deliberately out of scope.

Every mutation is reachable only through prepare → independent approval → apply. A wildcard token scope deliberately grants no write tool, so each must be named explicitly when a token is minted.

Live validation against SDC has gone well beyond read-only. On 2026-08-07 a full prepare → approve → apply policy deploy ran against the lab tenant and reached a managed vSRX, which is how the co-management behaviour in #23 was discovered: within hierarchies SDC owns, objects not reachable from a policy SDC imported are deleted on deploy. Interfaces, routing, system, and the management instance were untouched. The full boundary and the observed diff are in docs/operations.md. JobStatus and DeviceStatusEntry are validated against live preview and deploy responses.

On 2026-08-12 the certificate and licence readers, BulkSyncDevices, and the template endpoints were exercised live. Device sync imports into SDC rather than pushing to the device, but reconciles inventory only and does not clear device_config_state: OUT_OF_BAND_CHANGED.

Read-path security properties were last verified live on 2026-08-07 against commit ea81805d2b4b97df9bdd3f70423e047524896a3d with mecmcp v0.5.0. The transport and scope preflight were replaced afterwards in e28d0cc and 369f9bb, so that result no longer speaks for current main; no lab SDC tenant was available to repeat it live. On 2026-10-06, against commit 2036523 with mecmcp v0.26.0, the automated integration suite was re-run instead — cargo test --workspace, 258 passed, 0 failed — which covers: requests with a missing bearer are refused (crates/rustsdcmcp/tests/http_boundary.rs::router_requires_bearer), out-of-scope tenants are refused (crates/rustsdcmcp/tests/http_boundary.rs::out_of_scope_tenant_is_refused), exact tool and tenant scope enforcement with read/write tool disjointness (crates/rustsdcmcp/src/server.rs scope unit tests, crates/rustsdcmcp/tests/tool_contract.rs), and secret-key redaction of responses (crates/rustsdcmcp-core/src/redact.rs unit tests). The remaining properties from the 2026-08-07 live audit have not been re-verified on current main; this run is not a substitute for the live-tenant exercise and does not re-establish one.

Observed response shapes and the remaining endpoint questions are tracked in docs/sdc-api/README.md.

Download

The current release, v0.6.0, attaches a checksummed, cosign-signed LXC install tarball (rustsdcmcp_0.6.0_amd64.tar.gz) as a release asset. Download and verify it, or build from approved source below.

A linux/amd64 container image is published for that tag to ghcr.io/mechubsec/rustsdcmcp:0.6.0 and is publicly pullable with no authentication.

Build from approved source

rust-toolchain.toml pins the build toolchain at 1.99.0; the declared MSRV in Cargo.toml is 1.89. Operators must bind their checkout to the commit they intend to ship before building, testing, or packaging — the release tag is the usual choice:

approved_commit=$(git rev-parse v0.6.0^{commit})

git checkout --detach "$approved_commit" test "$(git rev-parse HEAD)" = "$approved_commit" cargo build --release --locked cargo test --workspace --locked scripts/build-package.sh cp examples/sdc.example.json /secure/operator/path/sdc.json

In that configuration, credential_env names the external process variable; the credential itself never belongs in JSON. For a local commit-addressed package, verify the newly built archive and its embedded BUILD-INFO from the approved commit directory—never glob across dist/ because the checksum records only the archive basename:

artifact_dir="dist/$approved_commit"

mapfile -t archives < <(find "$artifact_dir" -maxdepth 1 -type f -name 'rustsdcmcp_*_amd64.tar.gz' -print) test "${#archives[@]}" -eq 1 archive="${archives[0]}" (cd "$artifact_dir" && sha256sum -c "$(basename "$archive").sha256") package_root=$(tar -tzf "$archive" | sed -n '1s#/.*##p') test -n "$package_root" tar -xOf "$archive" "$package_root/BUILD-INFO" | grep -Fx "git_commit=$approved_commit"

Local stdio client

--transport stdio (the default) runs the server as a child process of the MCP client, with no listening socket and no bearer token. examples/mcp.json.example is a .mcp.json entry for that. Copy examples/sdc.example.json to the --device-mapping path, fill in the tenant, and chmod 0600 it: the server refuses a config file more permissive than 0640. --state-file overrides the config's /var/lib/rustsdcmcp/changeset-state.json, which a desktop user cannot normally write.

The credential reaches the server through the variable that credential_env names (SDC_API_TOKEN in the example). ${SDC_API_TOKEN} is expanded from the client's environment, so the token stays out of the JSON file. A client that does not expand ${...} needs the variable exported in the environment it is launched from.

A stdio caller is unauthenticated, so every write tool (prepare, approve, apply) refuses it: stdio is a read-only surface. Change-controlled writes need the streamable-HTTP transport with a scoped bearer token.

Tool listing mode

--tool-mode full|compact (env MCP_TOOL_MODE, default full) controls what tools/list advertises. compact lists only list_sdc_resources, get_sdc_resource, get_sdc_tenant_scope and the change-set tools (get_sdc_change_set, get_sdc_change_set_details, approve_sdc_change_set, apply_sdc_change_set) to keep the client's tool context small. It is listing only: it composes with token scopes and never widens them, every tool stays callable, and the token's tool and tenant scopes still authorize each call.

Docker quick start

For running the published container image, see HOW-TO-SETUP-DOCKER.md.

Debian 13 LXC quick start

For building an LXC from scratch, see HOW-TO-SETUP-LXC.md.

Prerequisites:

  • Debian 13 AMD64; an unprivileged LXC is recommended.
  • 1 vCPU, 512 MiB RAM, 512 MiB swap, and 4 GiB disk for the minimum profile.
  • Working DNS and time synchronization, plus outbound HTTPS to api.sdcloud.juniperclouds.net.
  • Root or equivalent operator access inside the LXC.

Download the signed v0.6.0 release tarball (or build one from approved source — see Build from approved source above) and install the verified package:

set -euo pipefail

mapfile -t archives < <(find . -maxdepth 1 -type f -name 'rustsdcmcp_0.6.0_amd64.tar.gz' -print) test "${#archives[@]}" -eq 1 archive="${archives[0]}" sha256sum -c "$archive.sha256" package_root=$(tar -tzf "$archive" | sed -n '1s#/.*##p') test -n "$package_root" tar -xzf "$archive" sudo "$package_root/packaging/lxc/install.sh"

Create the configuration and credential file without exposing a credential:

sudo install -o root -g rustsdcmcp -m 0640 \

/etc/rustsdcmcp/sdc.json.example /etc/rustsdcmcp/sdc.json sudoedit /etc/rustsdcmcp/sdc.json sudo install -o root -g root -m 0600 /dev/null \ /etc/rustsdcmcp/credentials.env sudoedit /etc/rustsdcmcp/credentials.env

sdc.json must retain the HTTPS SDC endpoint, use the desired local tenant alias, and set expected_tenant_id to the operator-obtained SDC tenant ID. The credentials file contains one shell-compatible assignment using the name from credential_env, for example SDC_API_TOKEN=...; never put a real value in the README or JSON.

Create the initial exact 14-tool read-only grant. The redirect destination must already be mode 0600; the output is a one-time bearer token.

sudo /usr/local/bin/rustsdcmcp token add \

--tokens-file /etc/rustsdcmcp/tokens.json \ --device-mapping /etc/rustsdcmcp/sdc.json \ --name sdc-read \ --devices production \ --tools get_sdc_tenant_scope,list_sdc_devices,get_sdc_device,list_sdc_firewall_policies,get_sdc_firewall_policy,list_sdc_nat_policies,get_sdc_nat_policy,list_sdc_resources,get_sdc_resource,get_sdc_preview_status,get_sdc_deploy_status,get_sdc_preview_device_result,get_sdc_deploy_device_result,get_sdc_change_set \ --actor-type human > /secure/local/path/rustsdcmcp-sdc-read-token

Start the service and access it through an authenticated SSH tunnel:

sudo systemctl enable --now rustsdcmcp.service

sudo systemctl --no-pager --full status rustsdcmcp.service sudo ss -ltnp 'sport = :30032' ssh -N -L 30032:127.0.0.1:30032 root@your-deployment-host

The expected listener is only 127.0.0.1:30032. While the tunnel is active, the local MCP client uses http://127.0.0.1:30032/mcp. Each installation supplies its own SSH host; the server is never exposed directly.

Security commitments

  • External credentials use restrictive file modes and never belong in JSON.
  • Startup verifies the configured identity against expected_tenant_id.
  • Bearer tokens carry exact tool and tenant scopes.
  • Request, response, and page sizes are bounded.
  • Audit attribution is credential-safe and target values receive HMAC redaction.
  • Mutations require two-principal prepare → approve → apply change control.
  • There is no direct deploy tool and no unauthenticated write path.
  • A wildcard token scope grants no write tool. --tools '*' yields the read surface only; every write tool must be named explicitly when minting a token.

Detailed deployment, recovery, audit-retention, and write-workflow guidance is in docs/operations.md.

--lab-mode

--lab-mode waives the second principal, for a single-operator lab where two-person control is theatre rather than a control. It is off by default and should stay off anywhere the estate matters.

What it does and does not change:

  • The waiver is applied automatically when the change set is created. There is no waive tool, and the flow stays prepare → apply, identical to production.
  • Planning, the plan digest, drift detection, and apply-time revalidation all still run. Lab mode removes the *second reviewer*, not the change record.
  • No approver is ever fabricated. A waived change set records `ap

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기