mcpField
A
Action1

Action1

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

Action1 について

Action1 は、Action1 のエンドポイント一覧、パッチ状況、ポリシー情報を参照する MCP サーバーです。v1 は読み取り専用で、MCP Apps 対応ホストでは端末概要をインタラクティブなカードで表示できます。

主な機能

  1. 01アクセス可能な組織の一覧
  2. 02組織内の管理対象端末を検索
  3. 03単一端末の詳細を取得
  4. 04未適用の OS・アプリパッチを一覧
  5. 05自動化・修復ポリシーを確認
  6. 06MCP Apps の読み取り専用端末カード

活用シーン

  1. 01組織内の管理対象端末を棚卸し
  2. 02未適用パッチのある端末を確認
  3. 03端末の状態や再起動要否を確認
  4. 04設定済みの自動化ポリシーを調査

MCP 対応

Action1 の組織、端末、更新、ポリシーの参照機能を MCP クライアントに公開します。v1 は読み取り専用で、デプロイや自動化の書き込み操作には対応しません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"wyre-ai-action1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ACTION1_API_KEY",
"-e",
"ACTION1_SECRET",
"-e",
"ACTION1_REGION",
"-e",
"ACTION1_DEFAULT_ORG_ID",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/action1-mcp:v1.1.9"
],
"env": {
"ACTION1_API_KEY": "<ACTION1_API_KEY>",
"ACTION1_SECRET": "<ACTION1_SECRET>",
"ACTION1_REGION": "<ACTION1_REGION>",
"ACTION1_DEFAULT_ORG_ID": "<ACTION1_DEFAULT_ORG_ID>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンドdocker run -i --rm -e ACTION1_API_KEY -e ACTION1_SECRET -e ACTION1_REGION -e ACTION1_DEFAULT_ORG_ID -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/action1-mcp:v1.1.9
設定が必要な環境変数
ACTION1_API_KEYシークレットAction1 API key — the client_id of an API key created under Settings → API & Integrations.
ACTION1_SECRETシークレットAction1 API secret — the client_secret paired with ACTION1_API_KEY.
ACTION1_REGIONAction1 hosting region, which selects the API host: NorthAmerica (app.action1.com), NorthAmerica-2 (app.na-2.action1.com), Europe (app.eu.action1.com), or Australia (app.au.action1.com).
ACTION1_DEFAULT_ORG_IDOrganization id used when a tool call omits organization_id. Leave unset to require it explicitly on every call.
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-ai/action1-mcp:v1.1.9

ツール

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

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

詳細

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 つのサーバーを複数のクライアントで再利用できます。