mcpField
B
bounded-tools-mcp

bounded-tools-mcp

ローカル
bounded.toolsセキュリティ07 週間前に更新

bounded-tools-mcp について

bounded-tools-mcpは、bounded.tools向けのローカルな読み取り専用MCPサーバーとCLIです。選定したJSONファイルだけを公開し、返却前にSHA-256マニフェストと照合します。Sigstore署名の検証も任意で行えます。

主な機能

  1. 01読み取り専用のMCPツールとCLI
  2. 02バイト単位のSHA-256検証
  3. 03任意のSigstoreマニフェスト検証
  4. 04適合性レポートとSPDX SBOM
  5. 05検証済みサイト情報のリソース

活用シーン

  1. 01Web-Build適合性レポートの取得
  2. 02サイトのSPDXソフトウェア部品表の確認
  3. 03利用前のbounded.tools JSONの検証

MCP 対応

ローカルでstdio動作し、`get_conformance`と`get_sbom`のツールに加え、適合性レポート、SBOM、web manifestのリソースを公開します。返却前にサイトのSHA-256署名済みマニフェストと照合します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"bounded-systems-bounded-tools": {
"command": "npx",
"args": [
"-y",
"@bounded-systems/bounded-tools-mcp"
],
"env": {
"BOUNDED_TOOLS_MCP_SIGNATURE_MODE": "<BOUNDED_TOOLS_MCP_SIGNATURE_MODE>"
}
}
}
}
起動コマンドnpx -y @bounded-systems/bounded-tools-mcp
設定が必要な環境変数
BOUNDED_TOOLS_MCP_SIGNATURE_MODEManifest Sigstore signature check: off | warn | require.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@bounded-systems/bounded-tools-mcp0.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

@bounded-systems/bounded-tools-mcp

bounded.tools の署名付き静的 APIを利用する、ローカルの読み取り専用 MCP サーバー(および対応する CLI)です。

サイトが検証可能でコンテンツアドレス指定された JSONとして提供する部分 — Web-Build Conformance レポートと SPDX SBOM — を、あらゆる MCP クライアント(Claude Desktop、Claude Code など)に公開し、返却する前にすべてのレスポンスをサイトの Sigstore 署名付き sha256 マニフェストとバイト単位で照合して検証します。クライアントが受け取るバイト列が署名付きマニフェストと一致しない場合は、返却を拒否します。

stdio 経由でローカル実行され、クライアントがサブプロセスとして起動します。ホスト型サーバーもネットワークリスナーも存在しないため、サイトの静的/攻撃対象領域のない方針が維持されます。

汎用コアの薄い実装

このパッケージは薄い実装です。再利用可能な仕組み — 検証を行うフェッチクライアント、sha256 マニフェストと Sigstore のチェック、VerbSpec → MCP (tools + resources)/VerbSpec → CLI の射影 — はすべて @bounded-systems/static-mcp にあります。bounded-tools-mcp が提供するのは、次のものだけです。

  • 動詞(src/verbs.ts)— get_conformance、 get_sbom。それぞれ @bounded-systems/verbspec の VerbSpec として一度だけ定義します。
  • リソースカタログ(src/catalog.ts)— tools://… リソース。
  • 設定値(src/config.ts)— オリジンと期待する署名者の識別情報。
  • エントリーポイント(src/index.ts)— サーフェスを選択し、仕様をコアに渡します。
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)

2 つのサーフェス、1 つの定義。 verbspec は各動詞をMCP ツールと CLI サブコマンドの両方に射影します。MCP ツールと CLI コマンドは、まったく同じ動詞セットに基づいており、二重定義も不整合もありません。

公開するもの(および公開しないもの)

bounded.tools は、検証可能なサーフェスを意図的に小さくした静的サイトです。ここで公開するのは、サイトが署名付きでコンテンツアドレス指定された JSONとして提供する成果物だけです。各成果物は取得され、署名付きマニフェストとバイト単位で照合して検証されます。

提供形式成果物公開
署名付き JSONapi/v1/conformance.json✅ get_conformance · tools://conformance
署名付き JSONsbom.spdx.json✅ get_sbom · tools://sbom
署名付き JSONsite.webmanifest✅ tools://webmanifest(リソースのみ)
署名付き HTML + Markdownブログ(blog/*.html、blog/*.md)❌ JSON ではありません — 詳細は以下をご覧ください

公開範囲より誠実さを優先。 ブログも署名付きマニフェストの対象ですが、提供形式は HTML + Markdown であり、JSON フィードでも記事ごとの JSON ドキュメントでもありません。検証済み静的コアは各成果物を取得して JSON として解析するため、ブログを「ツール」として公開すると、サイトが実際には提供していない JSON の形式をでっち上げることになります。そのため、偽装して公開するのではなく、対象から除外しています。bounded.tools が将来、署名付きの posts.json(および記事ごとの JSON)を公開すれば、site-mcp とまったく同じように、list_posts/get_post の動詞をそのまま追加できます。

インストール/実行

Node ≥ 18.17 が必要です。verbspec の依存関係は JSR に公開されているため、インストール時には JSR の npm ブリッジ経由で解決されます。同梱の .npmrc で @jsr:registry=https://npm.jsr.io を設定しています。(新しい環境で利用する場合は、この 1 行を npm の設定に追加してください。)

# 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

MCP サーバーは準備完了を示す行を stderr に出力します(stdout は MCP チャネルです)。

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

MCP クライアントの設定

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

リソース

リソース URIエンドポイント内容
tools://conformanceapi/v1/conformance.jsonWeb-Build Conformance Standard レポート(HTML / WCAG 2.2 / ARIA)
tools://sbomsbom.spdx.jsonSPDX ソフトウェア部品表
tools://webmanifestsite.webmanifestW3C ウェブアプリマニフェスト(PWA サイトのメタデータ)

ツール/CLI コマンド(読み取り専用)

どちらのインターフェースでも、同じ 2 つの動詞を使用します。

ツール/コマンド引数戻り値
get_conformance—Web-Build Conformance レポート
get_sbom—SPDX ソフトウェア部品表

リソースの読み取りとツールの結果には、_meta.verification ブロック(マニフェスト相対パス、ソース URL、検証済みの sha256、マニフェスト署名のステータス)が含まれます。CLI は検証済みの JSON を出力します。検証に失敗すると、標準出力には何も出力せず、ゼロ以外の終了コードで終了します。

検証/信頼モデル

サイトは、単一の署名済みマニフェスト https://bounded.tools/site.sha256(sha256sum 形式)と、それに対する Sigstore バンドル site.sha256.sigstore.json を公開します。コアは以下を適用します。

  1. ファイルごとのハッシュチェック(常時有効)。 プロセスごとにマニフェストを 1 回取得します。各リソースについて取得したバイト列の SHA-256 を計算し、そのダイジェストがマニフェストのエントリと一致することを確認します。ファイルの改ざん、古い CDN エッジ、または MITM によって不一致が発生した場合は、応答の代わりに VerificationError が返されます。マニフェストにないパスも同様に拒否されます。
  2. マニフェスト署名チェック(任意)。 BOUNDED_TOOLS_MCP_SIGNATURE_MODE=warn|require は、デプロイワークフローの ID( …/bounded-systems/site/.github/workflows/deploy.yml@refs/heads/main、OIDC 発行者 https://token.actions.githubusercontent.com)を使って Sigstore バンドルを検証します。これは https://bounded.tools/provenance.json で公開されているものと同じキーレス ID です。

設定

変数デフォルト意味
BOUNDED_TOOLS_MCP_BASE_URLhttps://bounded.toolsサイト + API + マニフェストを提供するオリジン
BOUNDED_TOOLS_MCP_SIGNATURE_MODEoffoff | warn | require
BOUNDED_TOOLS_MCP_SIGNER_IDENTITYdeploy workflow SAN期待される Sigstore 証明書 ID
BOUNDED_TOOLS_MCP_SIGNER_ISSUERGitHub Actions OIDC期待される Sigstore OIDC 発行者
BOUNDED_TOOLS_MCP_FETCH_TIMEOUT_MS15000リクエストごとの取得タイムアウト

開発

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

公開

1 つのタグで、同じバージョンを 3 つのレジストリにミラー公開します。
v* タグをプッシュすると、publish.yml が実行され、次のレジストリに処理を振り分けます。

#レジストリ識別子認証
1npm@bounded-systems/bounded-tools-mcp信頼された公開(OIDC)+ 来歴情報
2JSR(ミラー)@bounded-systems/bounded-tools-mcpトークン不要の OIDC(npx jsr publish)
3MCP Registryio.github.bounded-systems/bounded-tools-mcpGitHub-OIDC による名前空間認証(mcp-publisher)

長期間有効なシークレットはありません。各レジストリは、ジョブの有効期間が短い GitHub Actions OIDC トークン(id-token: write)で認証します。npm では npm ≥ 11.5 が必要です(これを保証するため、ワークフローで npm をアップグレードします)。mcp-registry ジョブは npm ジョブから切り離されています(needs: verify であり、needs: npm ではありません)。レジストリは、公開済みの npm パッケージから mcpName フィールドを読み取ってパッケージの所有権を確認するため、独立して実行・再試行できます。

重要

バージョンを一致させる必要があります。 リリースバージョンは、すべて一致させる必要がある 4 か所に記載されています。package.json、deno.json、server.json、および v<version> git タグです。ワークフローの verify ジョブは、不一致があるとリリース全体を失敗させるため、npm と JSR のバージョンが食い違うことはありません。MCP Registry では、package.json に "mcpName": "io.github.bounded-systems/bounded-tools-mcp" を記載することも必要です(公開済みの npm パッケージからこのフィールドを読み取り、所有権を確認します)。

初回タグ作成前に行う一度限りの設定(メンテナー)

(a) npm — 信頼された公開元(npmjs.com)

  1. @bounded-systems スコープの所有者としてサインインします。
  2. @bounded-systems/bounded-tools-mcp のパッケージページを開き、Settings → Trusted Publisher を選択します。新規パッケージの場合は、手動で一度 0.1.0 を公開する(またはパッケージを作成する)必要がある場合があります。その後、信頼された公開に切り替えます。
  3. GitHub Actions を選択し、次の情報を入力します。
    • Organization / user: bounded-systems
    • Repository: bounded-tools-mcp
    • Workflow filename: publish.yml
    • Environment: (空欄のままにします)
  4. 保存します。トークンは生成も保存もされません。

(b) JSR — パッケージの作成とリンク(jsr.io)

  1. GitHub で jsr.io にサインインし、@bounded-systems スコープの下に @bounded-systems/bounded-tools-mcp パッケージを作成します。
  2. パッケージの Settings タブを開き、GitHub Repository の下に bounded-systems/bounded-tools-mcp を入力して Link をクリックします。リポジトリをリンクすると、このワークフローからの トークン不要の OIDC 公開が有効になります。

(c) MCP Registry — 事前認証は不要

io.github.bounded-systems/* 名前空間は GitHub OIDC によって自動認証されます。このリポジトリは github.com/bounded-systems の下にあるため、mcp-publisher login github-oidc は Actions の実行自体から所有権を証明します。

リリースを作成する(単一のコマンド)
# 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
ローカルでのドライラン(公開せずに検証)
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 は @bounded-systems/static-mcp に依存しています。このコアパッケージは独立して公開されるため、このタグを作成する前に、その v* タグから JSR と npm に公開してください。

ライセンス

MIT — LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。