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

Bounded Tools MCP

제작자: bounded-systems버전 0.1.0i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.bounded-systems/bounded-tools-mcp

설치

개요

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

Read-only MCP server over bounded.tools's Sigstore-verified static API (stdio).

PopNx MCP의 세 기둥

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

할 수 있는 일

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

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

설치

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

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: BOUNDED_TOOLS_MCP_SIGNATURE_MODE

필요한 것

  • npmNode.js 설치(npx 명령어용)

어떤 앱을 쓰세요?

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

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

{
  "mcpServers": {
    "bounded-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@bounded-systems/bounded-tools-mcp"
      ],
      "env": {
        "BOUNDED_TOOLS_MCP_SIGNATURE_MODE": "your-value"
      }
    }
  }
}

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

claude mcp add bounded-tools --env BOUNDED_TOOLS_MCP_SIGNATURE_MODE=your-value -- npx -y @bounded-systems/bounded-tools-mcp

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

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

{
  "mcpServers": {
    "bounded-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@bounded-systems/bounded-tools-mcp"
      ],
      "env": {
        "BOUNDED_TOOLS_MCP_SIGNATURE_MODE": "your-value"
      }
    }
  }
}

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

VS Code에서 열기

또는 설정을 직접 복사하기

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

{
  "servers": {
    "bounded-tools": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@bounded-systems/bounded-tools-mcp"
      ],
      "env": {
        "BOUNDED_TOOLS_MCP_SIGNATURE_MODE": "your-value"
      }
    }
  }
}

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

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

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

직접 입력할 값

  • BOUNDED_TOOLS_MCP_SIGNATURE_MODE env
    Manifest Sigstore signature check: off | warn | require.

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

할 수 있는 일

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

기본 점검i

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

  • ✓ 통과

    제작자와 저장소 일치

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

  • … 아직 점검 안 함

    계속 관리되고 있음

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

  • … 아직 점검 안 함

    라이선스 있음

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

  • – 해당 없음

    엔드포인트 응답

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

  • – 해당 없음

    OAuth로 로그인

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

  • … 아직 점검 안 함

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

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

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

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

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

자주 묻는 질문

Bounded Tools MCP, 안전한가요?

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

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

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

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

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

아직 관리되고 있나요?

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

어떤 앱에서 쓸 수 있나요?

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

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

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Reelsaw

대안

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

카드 보는 법:★ 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어제 업데이트
설치

Reelsaw

제작자: osbytes

Drive a self-hosted Reelsaw: turn long videos into vertical clips, edit, re-render and export them.

내 컴퓨터에서 실행오늘 업데이트
설치

제작자의 README

README 열기

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

@bounded-systems/bounded-tools-mcp

A local, read-only [MCP](https://modelcontextprotocol.io) server (and a matching CLI) over bounded.tools' signed static API.

It exposes the parts of the site that are served as verifiable, content-addressed JSON — the Web-Build Conformance report and the SPDX SBOM — to any MCP client (Claude Desktop, Claude Code, etc.), and verifies every response byte-for-byte against the site's Sigstore-signed `sha256` manifest before handing it back. If the bytes a client would receive don't match the signed manifest, it refuses to return them.

It runs locally over stdio — the client spawns it as a subprocess. There is no hosted server and no network listener, which preserves the site's static / no-attack-surface posture.

A thin implementation of a generic core

This package is thin. All of the reusable machinery — the verifying fetch client, the sha256 manifest + Sigstore checks, and the VerbSpec → MCP (tools + resources) / VerbSpec → CLI projection — lives in @bounded-systems/static-mcp. bounded-tools-mcp supplies only:

  • the verbs (src/verbs.ts) — get_conformance, get_sbom, each authored once as a @bounded-systems/verbspec VerbSpec;
  • the resource catalog (src/catalog.ts) — the tools://… resources;
  • the config values (src/config.ts) — the origin and expected signer identity; and
  • the entry (src/index.ts) — which picks a surface and hands the spec to the core.
src/verbs.ts ─┐

src/catalog.ts ├─▶ buildToolsSpec(config) ─▶ @bounded-systems/static-mcp src/config.ts ─┘ serveVerifiedStaticMcp(spec, config) (MCP, stdio) runStaticCli(spec, config, argv) (CLI)

Two surfaces, one definition. verbspec projects each verb to both an

MCP tool and a CLI subcommand. The exact same verb set backs the MCP tools and

the CLI commands — no second definition, no drift.

What's exposed (and what isn't)

bounded.tools is a static site whose verifiable surface is intentionally small. Only artifacts the site serves as signed, content-addressed JSON are exposed here — each is fetched and verified byte-for-byte against the signed manifest:

Served asArtifactExposed
signed JSONapi/v1/conformance.json✅ get_conformance · tools://conformance
signed JSONsbom.spdx.json✅ get_sbom · tools://sbom
signed JSONsite.webmanifest✅ tools://webmanifest (resource only)
signed HTML + Markdownthe blog (blog/*.html, blog/*.md)❌ not JSON — see below

Honesty over surface area. The blog *is* covered by the signed manifest,

but it is served as HTML + Markdown, not as a JSON feed or per-post JSON

documents. The verified-static core fetches-and-JSON-parses each artifact, so

exposing the blog as a "tool" would mean fabricating a JSON shape the site does

not actually serve. It is therefore left out rather than faked. If bounded.tools

later publishes a signed posts.json (and per-post JSON), list_posts /

get_post verbs drop straight in, exactly as in

site-mcp.

Install / run

Requires Node ≥ 18.17. The verbspec dependency is published to JSR, so installs resolve it through JSR's npm bridge — the included .npmrc sets @jsr:registry=https://npm.jsr.io. (Consuming from a fresh environment, add that one line to your npm config.)

# MCP server over stdio (what an MCP client launches):

npx -y @bounded-systems/bounded-tools-mcp

CLI — the SAME verbs, printing the verified JSON:

npx -y @bounded-systems/bounded-tools-mcp get_conformance npx -y @bounded-systems/bounded-tools-mcp get_sbom

The MCP server logs a readiness line to stderr (stdout is the MCP channel):

bounded-tools-mcp ready (stdio) → https://bounded.tools; signature mode=off

MCP client configuration

{

"mcpServers": { "bounded-tools": { "command": "npx", "args": ["-y", "@bounded-systems/bounded-tools-mcp"], "env": { "BOUNDED_TOOLS_MCP_SIGNATURE_MODE": "warn" } } } }

Resources

Resource URIEndpointContents
tools://conformanceapi/v1/conformance.jsonWeb-Build Conformance Standard report (HTML / WCAG 2.2 / ARIA)
tools://sbomsbom.spdx.jsonSPDX software bill of materials
tools://webmanifestsite.webmanifestW3C web app manifest (PWA site metadata)

Tools / CLI commands (read-only)

The same two verbs, on both surfaces:

Tool / commandArgsReturns
get_conformance—The Web-Build Conformance report
get_sbom—The SPDX software bill of materials

Resource reads and tool results carry a _meta.verification block (the manifest-relative path, source URL, the verified sha256, and the manifest signature status). The CLI prints the verified JSON; a verification failure exits non-zero with nothing on stdout.

Verification / trust model

The site publishes a single signed manifest, https://bounded.tools/site.sha256 (sha256sum format), and a Sigstore bundle over it, site.sha256.sigstore.json. The core enforces:

  1. Per-file hash check (always on). Fetch the manifest once per process; for every resource, fetch it, SHA-256 the received bytes, and require that digest to equal the manifest entry. A tampered file, a stale CDN edge, or a MITM → mismatch → VerificationError instead of a response. A path absent from the manifest is likewise refused.
  2. Manifest signature check (optional). BOUNDED_TOOLS_MCP_SIGNATURE_MODE=warn|require verifies the Sigstore bundle against the deploy workflow identity (…/bounded-systems/site/.github/workflows/deploy.yml@refs/heads/main, OIDC issuer https://token.actions.githubusercontent.com). This is the same keyless identity published in https://bounded.tools/provenance.json.

Configuration

VariableDefaultMeaning
BOUNDED_TOOLS_MCP_BASE_URLhttps://bounded.toolsOrigin serving the site + API + manifest
BOUNDED_TOOLS_MCP_SIGNATURE_MODEoffoff \warn \require
BOUNDED_TOOLS_MCP_SIGNER_IDENTITYdeploy workflow SANExpected Sigstore certificate identity
BOUNDED_TOOLS_MCP_SIGNER_ISSUERGitHub Actions OIDCExpected Sigstore OIDC issuer
BOUNDED_TOOLS_MCP_FETCH_TIMEOUT_MS15000Per-request fetch timeout

Development

npm install         # resolves @bounded-systems/static-mcp (npm) + verbspec (JSR bridge)

npm run build # tsc → dist/ npm test # node --test via tsx (server + CLI; no network) npm run typecheck node scripts/headless-check.mjs # live end-to-end against bounded.tools

Publishing

One tag publishes the same version to three registries, mirrored. Pushing a v* tag runs publish.yml, which fans out to:

| # | Registry | Identifier | Auth | | - | -------- | ---------- | ---- | | 1 | npm | @bounded-systems/bounded-tools-mcp | trusted publishing (OIDC) + provenance | | 2 | JSR (mirror) | @bounded-systems/bounded-tools-mcp | tokenless OIDC (npx jsr publish) | | 3 | MCP Registry | io.github.bounded-systems/bounded-tools-mcp | GitHub-OIDC namespace auth (mcp-publisher) |

There are no long-lived secrets — every registry authenticates with the job's short-lived GitHub Actions OIDC token (id-token: write). npm needs npm ≥ 11.5 (the workflow upgrades npm to guarantee this). The mcp-registry job is decoupled from the `npm` job (needs: verify, NOT needs: npm): the registry proves package ownership by reading the mcpName field off the already-published npm package, so it can run/retry independently.

[!IMPORTANT]

Versions must stay in sync. The release version lives in four places

that must all match: package.json, deno.json, server.json, and the

v git tag. The workflow's verify job hard-fails the whole release

on any mismatch, so npm and JSR can never drift apart. The MCP Registry also

requires package.json to carry

"mcpName": "io.github.bounded-systems/bounded-tools-mcp" (it reads that field

off the published npm package to prove ownership).

One-time setup (maintainer) — do these BEFORE the first tag

(a) npm — Trusted Publisher (on npmjs.com)

  1. Sign in as an owner of the @bounded-systems scope.
  2. Open the package page for `@bounded-systems/bounded-tools-mcp` → Settings → Trusted Publisher. For a brand-new package you may need to publish 0.1.0 once manually (or create the package), then switch to trusted publishing.
  3. Choose GitHub Actions and enter:
  • Organization / user: bounded-systems
  • Repository: bounded-tools-mcp
  • Workflow filename: publish.yml
  • Environment: *(leave blank)*
  1. Save. No token is generated or stored anywhere.

(b) JSR — create + link the package (on jsr.io)

  1. Sign in to jsr.io with GitHub and create the package `@bounded-systems/bounded-tools-mcp` under the @bounded-systems scope.
  2. Open the package's Settings tab → under GitHub Repository enter bounded-systems/bounded-tools-mcp and click Link. Linking the repo enables tokenless OIDC publishing from this workflow.

(c) MCP Registry — nothing to pre-authorize

The io.github.bounded-systems/* namespace is auto-authorized via GitHub OIDC: because this repo lives under github.com/bounded-systems, mcp-publisher login github-oidc proves ownership from the Actions run itself.

Cut a release (the single command)
# 1. Bump the version in ALL of: package.json, deno.json, server.json. Commit.

2. Tag with the SAME version and push — this is the only command:

git tag v0.1.0 && git push origin v0.1.0

Local dry-runs (verify without publishing)
npm pack --dry-run                                   # npm tarball contents

npx --yes jsr publish --dry-run --allow-slow-types # JSR (or: deno publish --dry-run --allow-slow-types) mcp-publisher validate ./server.json # MCP Registry schema check

bounded-tools-mcp depends on @bounded-systems/static-mcp; that core is

published independently (its own v* tag → JSR + npm) before cutting this tag.

License

MIT — see LICENSE.

PopNx에게 묻기