ScalePad について
ScalePadは、Core、Lifecycle Manager、ControlMap、Backup Radar、Quoterを扱うMCPサーバーです。複数のScalePad製品領域のデータやワークフローを利用するクライアント向けで、全ツールを最初から一覧表示し、ナビゲーションは探索に使います。
主な機能
- 01Coreのプラットフォームデータと資産へのアクセス
- 02Lifecycle Managerの計画とワークスペース管理
- 03ControlMapのコンプライアンスデータ操作
- 04バックアップ状態とデバイス一覧の確認
- 05Quoterの見積もり、カタログ、連絡先へのアクセス
活用シーン
- 01顧客、資産、サービス契約、チケットの確認
- 02取り組み、目標、会議、アクションアイテムの追跡
- 03顧客のリスク、統制、証拠の整理
- 04バックアップデバイスの確認や見積もり管理
MCP 対応
stdioまたはHTTPを介して、5つの製品領域のツールをMCPクライアントに公開します。全ツールは一覧に表示され、ナビゲーションは領域ツールの説明に使われます。HTTPゲートウェイモードではScalePad認証情報をリクエストごとに読み取ります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e SCALEPAD_API_KEY -e SCALEPAD_REGION -e QUOTER_CLIENT_ID -e QUOTER_CLIENT_SECRET -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/scalepad-mcp:v1.0.7SCALEPAD_API_KEYシークレットScalePad platform API key (generated in the ScalePad app by an Administrator)SCALEPAD_REGIONData-residency region for ControlMap/Backup Radar: 'us' (default), 'eu', 'ca', or 'au'QUOTER_CLIENT_IDOptional Quoter OAuth Client ID — only for the standalone api.quoter.com pathQUOTER_CLIENT_SECRETシークレットOptional Quoter OAuth Client Secret, paired with QUOTER_CLIENT_IDMCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.AUTH_MODEシークレットCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.LOG_LEVELLog verbosity: debug, info, warn, errorローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/wyre-ai/scalepad-mcp:v1.0.7stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
scalepad-mcp
ScalePad プラットフォーム(Core、Lifecycle Manager、ControlMap、Backup Radar、Quoter)向けの MCP サーバーです。MCP SDK v2(2026-07-28 仕様)をネイティブに使用し、同じエンドポイントでレガシーな2025年版の initialize ハンドシェイクを行うクライアントと、最新のエンベロープクライアントの両方に対応します。
アーキテクチャ
フラットなツール構成です。すべてのツールを tools/list で最初から公開し、あらゆるクライアントとの互換性を確保しています。ナビゲーションツールは検出を補助するものであり、利用の前提条件ではありません。
| ツール | 目的 |
|---|---|
scalepad_navigate | 製品ドメイン(core、lifecycle-manager、controlmap、backup-radar、quoter)のツールを説明します。ヘルプ/検出用であり、事前に呼び出す必要はありません |
scalepad_status | 認証情報の状態と利用可能なドメインを表示します |
製品ドメイン
| ドメイン | ツールのプレフィックス | 対応範囲 |
|---|---|---|
core | scalepad_core_ | 統合プラットフォームデータ(読み取り専用、米国のみ):クライアント、連絡先、メンバー、サイト、商談、ハードウェア/SaaS資産、製品カタログ、サービス契約、チケット、連携 |
lifecycle-manager | scalepad_lm_ | エンゲージメント/ロードマップのワークフロー:イニシアチブ、目標、ミーティング、アクションアイテム、アセスメント、成果物、予算、契約、ワークスペース |
controlmap | scalepad_cm_ | クライアントごとのコンプライアンス:リスク、コントロール、エビデンス、ポリシー、フレームワーク、アセスメント、アクションアイテム(リージョン:us、eu、ca、au) |
backup-radar | scalepad_br_ | 読み取り専用のバックアップの健全性情報とバックアップデバイスのインベントリ(リージョン:us、eu) |
quoter | scalepad_quoter_ | 見積もり、カタログ、連絡先、サプライヤー、スタンドアロンOAuthヘルパー(既定ではScalePadがホストするQuoter APIを使用) |
すべてのツールはいつでも呼び出せます。scalepad_navigate はドメインのツールを要約するだけです。
認証情報
ScalePadアプリで管理者が生成するScalePad APIキー1つで、すべての製品を利用できます。有効なサブスクリプションがない製品のエンドポイントは 402 を返します。
.env.example をコピーし、以下の変数を設定してください。このファイルでは CONDUIT_S2S_SECRET を空欄のままにしてください。
環境変数(AUTH_MODE=env、stdio/ローカルの既定値)
| 変数 | 必須 | 備考 |
|---|---|---|
SCALEPAD_API_KEY | stdioおよびAUTH_MODE=envで必須 | x-api-key として api.scalepad.com に転送されます |
SCALEPAD_REGION | いいえ | us(既定)、eu、ca、または au。ControlMap(us/eu/ca/au)とBackup Radar(us/eu)のリージョン別ベースURLを選択します。CoreとLifecycle Managerは米国のみです |
QUOTER_CLIENT_ID | いいえ | スタンドアロンの api.quoter.com OAuth経路専用(Quoter Account > API Keys、Account Ownerのみ) |
QUOTER_CLIENT_SECRET | いいえ | QUOTER_CLIENT_ID と組み合わせて使用します |
MCP_TRANSPORT | いいえ | stdio(既定)または http |
AUTH_MODE | いいえ | gateway(DockerイメージおよびComposeの既定)または env。Gatewayモードでは各 /mcp リクエストに X-ScalePad-Api-Key が必要で、SCALEPAD_* へのフォールバックは行いません。env モードでは、S2S認証の成功後にのみこれらの変数を使用します |
CONDUIT_S2S_SECRET | HTTPでは必須 | サービス間のシークレットです。空欄の場合、または既知のプレースホルダー(changeme、your-s2s-secret など、コピーしたサンプル値)の場合、HTTPサーバーはエラーをログに記録してゼロ以外の終了コードで終了します。設定しないとComposeは起動しません。実際の値は絶対にコミットしないでください。この値がログに記録されることはありません |
MCP_ALLOW_INSECURE_DEV | いいえ | CONDUIT_S2S_SECRET を設定せずにHTTPを起動する場合に限り、ローカル開発用として 1 を指定します。プロセスは警告をログに記録し、X-Gateway-S2S の検証を行いません。MCP_HTTP_HOST が 0.0.0.0 などの広いアドレスに設定されていても、リスナーは 127.0.0.1 に強制されます。既知のプレースホルダーシークレットは引き続き拒否されます |
MCP_HTTP_HOST | いいえ | MCP_TRANSPORT=http かつ CONDUIT_S2S_SECRET が設定されている場合のバインドアドレスです。未設定の場合、サーバーは 127.0.0.1 にバインドします。コンテナイメージでは 0.0.0.0 が設定されます |
MCP_HTTP_PORT | いいえ | HTTPポートです。既定値は 8080 です |
/health と /healthz は認証を必要とせず、認証情報も読み取りません。stdioトランスポートでは CONDUIT_S2S_SECRET を使用しません。
ゲートウェイヘッダー(AUTH_MODE=gateway、ホステッドデプロイ)
| ヘッダー | 必須 |
|---|---|
X-Gateway-S2S | CONDUIT_S2S_SECRET が設定されている場合は必須 |
X-ScalePad-Api-Key | はい |
X-ScalePad-Region | いいえ |
X-Quoter-Client-Id | いいえ |
X-Quoter-Client-Secret | いいえ |
ゲートウェイモードでは、これらのヘッダーからリクエストごとに認証情報が設定されます。X-ScalePad-Api-Key を含まない /mcp リクエストは、MCP の処理が行われる前に 401 の JSON-RPC エラーで拒否され、環境変数の認証情報にフォールバックすることはありません。/health は認証されないままです。
X-Gateway-S2S の署名
MCP_TRANSPORT=http で CONDUIT_S2S_SECRET が設定されている場合、すべての /mcp リクエストに X-Gateway-S2S を含める必要があります。ヘッダーがない場合、または無効な場合は、ベンダーの認証情報を読み取る前に 401 を返します。
ヘッダーの値は t=<unix seconds>,v1=<hex> です。v1 は、CONDUIT_S2S_SECRET をキーとして、ASCII 文字列 t=<unix seconds> に対して計算された HMAC-SHA256(小文字の 16 進数 64 文字)です。サーバーの時計とのずれが 300 秒を超えるタイムスタンプは拒否されます。
import { createHmac } from "node:crypto";
const t = Math.floor(Date.now() / 1000);
const v1 = createHmac("sha256", process.env.CONDUIT_S2S_SECRET).update(`t=${t}`).digest("hex");
const xGatewayS2s = `t=${t},v1=${v1}`;
トランスポート
- stdio(デフォルト):
node dist/index.js— Claude Desktop / CLI 向けです。CONDUIT_S2S_SECRETは使用しません。 - HTTP:
MCP_TRANSPORT=http node dist/index.js—/mcp(デュアル時代対応、legacy: 'stateless')に加えて、/healthと/healthzを提供します。CONDUIT_S2S_SECRETに実際のシークレットが設定されるまで起動しません。MCP_HTTP_PORTのデフォルトは8080です。シークレットが設定されている場合、MCP_HTTP_HOSTが使用され、未設定の場合のデフォルトは127.0.0.1です。シークレットが設定されていない場合、起動する方法はMCP_ALLOW_INSECURE_DEV=1のみで、リスナーは127.0.0.1のみで待ち受けます。
開発
export NODE_AUTH_TOKEN=$(gh auth token) # GitHub Packages read access
npm ci
npm run build # tsup (transpile-only; domains stay lazily importable)
npm test # vitest (HTTP layer: health, 401 gate, dual-era tools/list, fail-closed S2S)
npm run smoke # dual-era smoke against dist/index.js (loopback, insecure-dev bypass)
npm run typecheck
ドメインハンドラーは src/domains/<slug>.ts にあり、それぞれが export const handler: DomainHandler(src/utils/types.ts を参照)をエクスポートします。これらは src/domains/index.ts を介して遅延読み込みされます。
シークレットなしでローカル HTTP を使用する場合:
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
Docker
イメージはコンテナ内で 0.0.0.0(MCP_HTTP_HOST)をリッスンし、デフォルトで AUTH_MODE=gateway を使用します。このバインドが安全なのは、実際の CONDUIT_S2S_SECRET がないと起動を拒否するためです。ポートをループバックに公開し、S2S シークレットを渡してください。ゲートウェイモードでは、ScalePad の認証情報は各リクエストのヘッダーで渡され、環境変数からは読み込まれません。
docker build --build-arg NODE_AUTH_TOKEN=$(gh auth token) -t scalepad-mcp .
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-p 127.0.0.1:8080:8080 \
scalepad-mcp
CONDUIT_S2S_SECRET が設定されていない場合、Compose は起動を拒否します。ゲートウェイサービスは SCALEPAD_API_KEY、QUOTER_CLIENT_ID、QUOTER_CLIENT_SECRET を設定せず、env_file も使用しないため、プロジェクトの .env からコンテナに静的なベンダー認証情報が注入されることはありません。Compose は引き続き、そのファイルから CONDUIT_S2S_SECRET を補間します。ポートは 127.0.0.1:8080:8080 として公開されます:
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up
シングルテナント HTTP(AUTH_MODE=env)でも S2S シークレットが必要です。その後、SCALEPAD_API_KEY が使用されます:
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e AUTH_MODE=env \
-e SCALEPAD_API_KEY=your-value \
-e SCALEPAD_REGION=us \
-p 127.0.0.1:8080:8080 \
scalepad-mcp
シークレットなしのローカル HTTP の使用は開発専用です。127.0.0.1 のみでバインドし(0.0.0.0 を含む、ループバック以外の MCP_HTTP_HOST は上書きされます)、警告をログに出力します:
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
イメージは、WYRE MCP ゲートウェイの背後でのホステッドデプロイ向けに、デフォルトで AUTH_MODE=gateway を使用します。
ライセンス
Apache-2.0 — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。