mcpField
A
Action1

Action1

ローカル
github.comセキュリティ32 週間前に更新

Action1 について

Action1は、Action1でエンドポイントを管理するチーム向けの読み取り専用MCPサーバーです。デバイス一覧、未適用パッチ、ポリシーを確認でき、MCP Apps対応ホストではインタラクティブなデバイスカードも表示できます。

主な機能

  1. 01ドメイン別のツール探索
  2. 02組織とエンドポイントの一覧
  3. 03エンドポイント詳細の表示
  4. 04未適用のOS・アプリ更新の確認
  5. 05ポリシーと修復ルールの一覧
  6. 06インタラクティブなデバイス概要カード

活用シーン

  1. 01組織内の管理対象デバイスを確認
  2. 02パッチ未適用のエンドポイントを特定
  3. 03自動化ポリシーを調査
  4. 04MCP Apps対応ホストで端末状態を表示

MCP 対応

MCPツールを通じて、Action1の組織、エンドポイント、更新、ポリシーの情報をMCPクライアントに公開します。エンドポイント詳細ツールは、MCP Apps対応ホストで読み取り専用のデバイスカードも表示できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"wyre-technology-action1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ACTION1_CLIENT_ID",
"-e",
"ACTION1_CLIENT_SECRET",
"-e",
"ACTION1_TENANT",
"-e",
"ACTION1_BASE_URL",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-technology/action1-mcp:v1.1.5"
],
"env": {
"ACTION1_CLIENT_ID": "<ACTION1_CLIENT_ID>",
"ACTION1_CLIENT_SECRET": "<ACTION1_CLIENT_SECRET>",
"ACTION1_TENANT": "<ACTION1_TENANT>",
"ACTION1_BASE_URL": "<ACTION1_BASE_URL>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンドdocker run -i --rm -e ACTION1_CLIENT_ID -e ACTION1_CLIENT_SECRET -e ACTION1_TENANT -e ACTION1_BASE_URL -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/action1-mcp:v1.1.5
設定が必要な環境変数
ACTION1_CLIENT_IDAction1 OAuth client ID
ACTION1_CLIENT_SECRETシークレットAction1 OAuth client secret
ACTION1_TENANTAction1 tenant identifier (subdomain). Provide this or ACTION1_BASE_URL.
ACTION1_BASE_URLAction1 base URL (e.g. https://your-instance.action1.com). Provide this or ACTION1_TENANT.
MCP_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/wyre-technology/action1-mcp:v1.1.5

ツール

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

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

詳細

Action1 MCP サーバー

MCP Compatible License

Action1 用の MCP サーバーです。Model Context Protocol を通じて、エンドポイントのインベントリ、パッチの可視化、ポリシーの自動化を行います。

v1 は読み取り専用です。デプロイ/自動化の機能は、影響範囲を抑えるため、意図的に後続リリースに分離しています(不適切なポリシーの適用により、エンドポイント群が使用不能になるおそれがあります)。

ツール

ツール説明
action1_navigateドメイン別(organizations / endpoints / policies / updates)に利用可能なツールを確認します
action1_list_organizations設定済みの認証情報でアクセスできる Action1 テナントを一覧表示します
action1_list_endpoints組織内の管理対象デバイスを一覧表示します
action1_get_endpointID を指定して単一のエンドポイントを取得します
action1_list_missing_updatesエンドポイント全体で不足している OS/アプリケーションのパッチを一覧表示します — Action1 の主な価値提案です
action1_list_policies自動化/ポリシー/修復ルールを一覧表示します

API の機能は PSAction1(Action1 の MIT ライセンスの PowerShell モジュール)に対応しています。v1 の機能が実用性を認められた後、書き込みツール(デプロイ、再クエリ、パッケージのアップロード)を、別途レビューしたうえで v2 に追加します。

インタラクティブなデバイスカード(MCP Apps)

action1_get_endpoint は MCP Apps ホスト(Claude Desktop/web)でインタラクティブなデバイス概要カードとして表示されます。ステータス、OS、ユーザー、IP、エージェントのバージョン、再起動の必要性、不足している更新プログラムの数を一目で確認できます。他のホストでは、従来どおりプレーンな JSON が返されます。このカードは読み取り専用(v1 のツール機能と同様)で、デフォルトでは中立的なデザインです。window.__BRAND__ の注入または MCP_BRAND_* 環境変数(MCP_BRAND_NAME、MCP_BRAND_LOGO_URL、MCP_BRAND_PRIMARY_COLOR、MCP_BRAND_ACCENT_COLOR、MCP_BRAND_BG、MCP_BRAND_TEXT)でブランド設定ができ、再ビルドは不要です。

使い方

Claude Desktop(MCPB)

最新リリースから MCPB バンドルをインストールします。

必要な認証情報(Action1 → Settings → API Credentials で作成します。作成後は再取得できないため、すぐにコピーしてください):

  • API Key(Client ID)
  • Secret
  • Region(デフォルトは NorthAmerica。NorthAmerica-2、Europe、Australia も指定できます)
  • デフォルトの組織 ID(任意。単一テナントでの利用向け)
Stdio(直接)
ACTION1_API_KEY=... \
ACTION1_SECRET=... \
ACTION1_REGION=NorthAmerica \
ACTION1_DEFAULT_ORG_ID=org-... \
npx -y github:WYRE-AI/action1-mcp
HTTP

CONDUIT_S2S_SECRET が必要です。空、または既知のプレースホルダー(changeme、replace-with-a-real-secret など)の場合、HTTP サーバーはエラーをログに記録して、ゼロ以外の終了コードで終了します。シークレットが出力されることはありません。openssl rand -hex 32 で生成してください。

MCP_HTTP_HOST が未設定の場合、デフォルトは 127.0.0.1 です。0.0.0.0 を設定できるのは、CONDUIT_S2S_SECRET が設定されている場合のみです。コンテナイメージはこの設定を行い、AUTH_MODE=gateway を設定します。ポートは MCP_HTTP_PORT(または PORT)で指定し、デフォルトは 8080 です。

MCP_ALLOW_INSECURE_DEV=1 を設定すると、CONDUIT_S2S_SECRET なしで HTTP を起動し、警告をログに記録します。この場合、X-Gateway-S2S の検証はスキップされ、バインド先は 127.0.0.1 のみです。0.0.0.0 を含む、ループバック以外の MCP_HTTP_HOST が指定されている場合は起動しません。プレースホルダーのシークレットも引き続き拒否されます。ローカル開発専用です。

/health は認証なしで利用でき、認証情報を読み取りません。Stdio トランスポートでは CONDUIT_S2S_SECRET を使用しません。

X-Gateway-S2S

シークレットが設定されている場合、/health を除くすべての HTTP リクエストに X-Gateway-S2S を含める必要があります。値は t=<unix seconds>,v1=<hex> です。ここで hex は、CONDUIT_S2S_SECRET を鍵として、リテラル文字列 t=<unix seconds> の HMAC-SHA256 を計算した値です(小文字の 16 進数で 64 文字)。タイムスタンプはサーバーの時計との誤差が 300 秒以内である必要があります。ヘッダーがない、または無効な場合、ベンダーの認証情報を読み取る前に HTTP 401 を返します。

TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}')
curl -sS http://127.0.0.1:8080/ \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \
  -H "X-Action1-API-Key: $ACTION1_API_KEY" \
  -H "X-Action1-Secret: $ACTION1_SECRET" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
ゲートウェイモード(AUTH_MODE=gateway)

Docker イメージと Compose ファイルは、デフォルトでゲートウェイモードになります。すべてのリクエストに次のヘッダーを含める必要があります。

  • X-Action1-API-Key
  • X-Action1-Secret
  • X-Action1-Region(任意)
  • X-Action1-Default-Org-Id(任意)

API キーまたはシークレットを含まないリクエストには 401 が返され、プロセス環境の ACTION1_API_KEY / ACTION1_SECRET にはフォールバックしません。これらのヘッダーのみが、そのリクエストの認証情報の取得元です。

docker run \
  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
  -p 127.0.0.1:8080:8080 \
  ghcr.io/wyre-ai/action1-mcp:latest

CONDUIT_S2S_SECRET が設定されていない場合、Compose は起動を拒否します。また、127.0.0.1:8080:8080 を公開し、静的な Action1 認証情報をコンテナに渡しません。

CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up
シングルテナント HTTP(AUTH_MODE=env)

リクエストには引き続き、有効な X-Gateway-S2S ヘッダーが必要です。リクエストにベンダーの認証情報ヘッダーが含まれていない場合、ACTION1_API_KEY と ACTION1_SECRET から取得されます。

docker run \
  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
  -e AUTH_MODE=env \
  -e ACTION1_API_KEY="$ACTION1_API_KEY" \
  -e ACTION1_SECRET="$ACTION1_SECRET" \
  -e ACTION1_REGION=NorthAmerica \
  -p 127.0.0.1:8080:8080 \
  ghcr.io/wyre-ai/action1-mcp:latest

シークレットなしのローカル HTTP は開発専用です。127.0.0.1 にバインドし、警告をログに記録します。

MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start

アーキテクチャ

src/
├── index.ts                  # stdio + HTTP transports, tool dispatch, S2S startup
├── s2s-verify.ts             # X-Gateway-S2S HMAC-SHA256 check
├── card.builder.ts           # MCP Apps device-card normalization + brand injection
├── resources.ts              # resources/list + resources/read (ui:// device card)
├── generated/
│   └── device-card-html.ts   # committed vite single-file bundle (npm run build:ui)
├── sdk/
│   └── action1-client.ts     # embedded REST + OAuth client (factor-out candidate
│                             # if surface crosses ~20 tools / 2+ domains)
├── utils/
│   ├── client.ts             # credential resolution (env vs gateway headers)
│   └── types.ts              # DomainHandler interface
├── domains/                  # one file per resource type
│   ├── organizations.ts
│   ├── endpoints.ts
│   ├── policies.ts
│   └── updates.ts
└── __tests__/                # domain tests + MCP Apps contract tests
ui/                           # device-card source (index.html + device-card.ts)

AsyncLocalStorage によるリクエストごとの認証情報の分離 — HTTP モードでは、同時実行されるリクエスト間で process.env を介して認証情報が共有されることはありません。

開発

npm install
npm run build
npm test
npm run dev      # tsc --watch
npm run lint     # eslint
npm run typecheck

ライセンス

Apache-2.0。詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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