Action1 RMM (unofficial) について
Claude などの MCP ホストを Action1 RMM REST API に接続する非公式 MCP サーバーです。デバイス群の照会、監査、スクリプトや更新のワークフローをまとめ、状態変更にはガード機能を設けています。
主な機能
- 01エンドポイント、グループ、脆弱性、ソフトウェアの照会
- 02PowerShell と Bash スクリプトの実行
- 03監査ログ検索と CVE 対応計画
- 04生成ツールと選定済みワークフローツール
- 05ドライランと明示的な確認による変更保護
- 06stdio と Streamable HTTP に対応
活用シーン
- 01エンドポイントの状態と未適用更新の確認
- 02Windows または macOS の端末でスクリプトを実行
- 03脆弱性対応を計画し監査記録を調査
- 04ドライランのプレビューでデバイス群の変更を準備
MCP 対応
Action1 REST API の操作を MCP ツールとリソースとして公開し、複数段階の作業向けプロンプトも提供します。stdio とステートレスな Streamable HTTP に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
167掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| admin | boolean | いいえ | true の場合、API キーに管理者権限がある組織に限定します。 |
| limit | integer | いいえ | 返す項目の最大数。 |
| response_format | enum | いいえ | 出力形式。デフォルトは markdown です。markdown | json |
詳細
action1-mcp-server
Action1 RMM REST API 向けの非公式な Model Context Protocol (MCP) サーバーです。Claude(またはその他の MCP ホスト)から Action1 の管理対象環境を照会し、 Windows で PowerShell、macOS で Bash を実行し、アップデートを配信し、エンドポイントを再起動し、 監査証跡を検索し、CVE 対応計画を作成できます。また、切り替えを有効にしない限り、 状態変更を行わないようガードします。
非公式プロジェクトです。 このサーバーは Action1 Corporation と提携、承認、後援、 またはサポートされていません。「Action1」は Action1 Corporation の 商標です。詳しくは
NOTICEをご覧ください。
ステータス
固定された Action1 OpenAPI スナップショットのすべての操作を、ツール経由で利用できます
(対象範囲を参照)。このサーバーは stdio と Streamable HTTP に対応し、
Claude Desktop 向けの MCPB バンドルと npm パッケージ action1-mcp-server として提供されます。
リリースと変更内容については、CHANGELOG.md をご覧ください。
検証状況
エージェントに管理対象環境の変更を許可する前に、こちらをお読みください。
- 自動テスト(
npm test)は、モックした Action1 の応答を使って実行します。 単体テスト、SDK クライアント経由の MCP プロトコル往復テスト、 破壊的操作ガードの真理値表、機密情報のマスキング、サイズ制限を検証します。 状態を変更する生成済みツールはすべて、ガードされることを確認するために MCP 経由で実行します。 これらのテストは、Node 22、24、26 で CI 上で実行されます。 - 実際の Action1 テナントでのライブ実行は
TESTING.mdに記録されています。バージョン 0.1~0.3 の開発中に実施されましたが、 日付は記録されていません。読み取りツール(組織、エンドポイント、ページネーション、 テンプレート、未適用アップデート)、Windows と macOS での読み取り専用スクリプト実行 (action1_execute_and_wait、action1_run_script)、およびガードによる拒否パスを対象としています。 - 読み取り専用のライブ形式チェック(2026-10-26):バージョン 0.6.0 について、
実際のテナントへの GET リクエストで、返されたレコード形式を同梱された仕様と比較しました。
エンドポイント、脆弱性、インストール済みソフトウェア、自動化インスタンスとスケジュール、
未適用アップデート、エンドポイントグループ、および両方のリストエンベロープは仕様と一致します。
監査イベントはまだ未検証です(キーに
view_auditがありませんでした)。 詳細はTESTING.mdをご覧ください。 このチェックを除き、0.6.0 の変更は自動テストのみで検証されています。 0.6.0 のツールを使ったライブスモークテストは保留中です。 - 実際のテナントでは絶対に実行しないでください:
action1_reboot_endpoint、action1_deploy_update、action1_deploy_package、action1_uninstall_program、action1_run_data_collection、エンドポイントのグループからの削除、target_type: "EndpointGroup"を指定したaction1_run_script、 状態を変更するすべての生成済みツール、およびすべてのアカウント操作 (ユーザー、ロール、組織、エンタープライズ)。リクエスト本文は Action1 OpenAPI 仕様に従い、 テストで検証されていますが、Action1 が受け入れることは誰も確認していません。 まずテスト用エンドポイントで試し、実行前にドライランのプレビューを確認してください。
メンテナンス状況
- 余暇時間に、単独のメンテナー(@mguttmann)が ベストエフォートでメンテナンスしています。作者は本番環境で使用しています。 サポート契約はなく、応答時間も保証されません。
- セキュリティ修正を機能追加より優先します。脆弱性は非公開で報告してください (セキュリティを参照)。
- 依存関係のアップデートは Dependabot によって行われます。ランタイム依存関係に 既知の高または重大なアドバイザリがある場合、CI は失敗します。週次ジョブで、 Action1 が固定されたスナップショットと異なる API 仕様を提供している場合に報告します。
- 修正が提供されるのは、最新のマイナーリリースのみです。
- Issue とプルリクエストを歓迎します。
docs/CONTRIBUTING.mdと 行動規範をご覧ください。
このプロジェクトの理由
Action1 にはすっきりとした REST API がありますが、いくつかの癖により、LLM がそのまま呼び出すと誤った結果がひそかに生じます。
- macOS の Bash アクションには、10 個のフィールドを持つ
run_scriptペイロードが必要です。フィールドが 1 つでも欠けていると、API はnot applicable to Mac platformを返します。 - Windows の PowerShell アクションには、空でない
success_exit_codesが必要です。 last_seenは ISO-8601 ではなくYYYY-MM-DD_HH-MM-SS(UTC)形式のため、Date.parseはNaNを返します。サーバーが解析して、読みやすい形式で表示します。- リスト項目の
selfURL には/generalセグメントが含まれていますが、これは実際の REST リソースではありません。 - スクリプトの出力には
Starting/Waiting/Completedのライフサイクルマーカーが混在するため、フィルタリングが必要です。 OSは大文字、platformは小文字で、どちらにもプラットフォーム文字列が入ることがあります。検出器の 1 つがこれらを正規化します。
厳選されたツールには、これらすべてが組み込まれています。サーバーが対応していない項目は、docs/api-coverage-gaps.md に記載されています。
インストール
Claude Desktop:MCPB バンドル(推奨)
- プロジェクトの GitHub Releases から
action1-mcp-<version>.mcpbをダウンロードします。リリースワークフローにより、すべてのバージョンタグに添付されます。 - ダブルクリックするか、Claude Desktop にドラッグするか、Settings > Extensions > Install from file を選択します。
- ウィザードに入力します。リージョンの API ベース URL、組織 ID、クライアント ID、クライアントシークレット、破壊的な操作を許可するかどうかを指定します(最初はオフにしておきます)。
Claude Desktop は、組み込みの Node.js を使ってバンドルを実行します。詳細とトラブルシューティングについては、docs/INSTALLATION.md を参照してください。
MCP Registry
リリースワークフローでは、安定版リリースごとに公式 MCP Registry に io.github.mguttmann/action1-mcp として登録します。バンドル(リリースアセットのダウンロード URL と SHA-256)と、0.6.2 以降は npm パッケージ action1-mcp-server が、同じ環境変数とともに登録されます。レジストリを参照する MCP ホストやディレクトリからインストールできます。この名前のものだけが本プロジェクトです。他の名前空間にある Action1 サーバーは別のコードです。
glama.json には、Glama の掲載ページのメンテナーが記載されています。
ソースから(任意の MCP ホスト)
Node.js 22.12 以降が必要です(package.json の engines を参照)。CI では Node 22、24、26 をテストしています。
git clone https://github.com/mguttmann/action1-mcp.git
cd action1-mcp
npm ci
cp .env.example .env # fill in your Action1 credentials
npm run build # compiles to dist/ (tsc only)
Claude Code に接続します。
claude mcp add action1 -- node --env-file=$(pwd)/.env $(pwd)/dist/index.js
npm run inspector を実行すると、ビルド済みサーバーに対して MCP Inspector が起動します(Node 22.19 以降が必要です)。その他のホスト(JSON 設定を使う Claude Desktop、Claude.ai、Cursor、Continue.dev、Cody)については、docs/INSTALLATION.md を参照してください。
npm(npx、任意の stdio MCP ホスト)
このサーバーは npm で action1-mcp-server(コマンド action1-mcp)として公開されています。この完全一致する名前のものだけが本プロジェクトです。npx が取得して実行するため、クローンやビルドは不要です。Node.js 22.12 以降をインストールする必要があります。
Claude Code に接続します(値は Claude Code 独自の設定に保存されます。シェルに入力し、チャットには決して入力しないでください)。
claude mcp add action1 \
-e ACTION1_BASE_URL=https://app.eu.action1.com/api/3.0 \
-e ACTION1_ORG_ID=<your-org-uuid> \
-e ACTION1_CLIENT_ID=<client-id> \
-e ACTION1_CLIENT_SECRET=<client-secret> \
-- npx -y action1-mcp-server
その他の stdio ホストでは、同じコマンドを JSON 設定に指定します。
{
"mcpServers": {
"action1": {
"command": "npx",
"args": ["-y", "action1-mcp-server"],
"env": {
"ACTION1_BASE_URL": "https://app.eu.action1.com/api/3.0",
"ACTION1_ORG_ID": "<your-org-uuid>",
"ACTION1_CLIENT_ID": "<client-id>",
"ACTION1_CLIENT_SECRET": "<client-secret>"
}
}
}
}
これらの値を含む設定ファイルには認証情報が保存されます。自分のユーザーだけが読み取れるようにし、バージョン管理の対象から除外してください。
action1-mcp-server@<version> を指定すると、バージョンを固定できます。Claude Desktop では、クライアント ID とシークレットが Claude Desktop のセキュアストレージに保存されるため、引き続き MCPB バンドルを推奨します。その他のホストやオプションについては、docs/INSTALLATION.md を参照してください。
対象範囲
- 生成ツール: ピン留めされた Action1 OpenAPI スナップショット(日付は
src/codegen/spec/SOURCE.mdを参照)のすべての操作が、キュレーション済みツールでカバーされている場合を除き、action1_list_endpoint_groupsのような動詞で始まるツールになります。例外として、POST /oauth2/tokenは内部で使用され、公開されません。また、パッケージアップロード操作の2つはバイナリボディが必要なため、説明エラーを返します。完全なマッピングはdocs/_coverage_table.mdに生成されます。詳しくはdocs/api-coverage.mdを参照してください。 - 一般的なワークフロー向けのキュレーション済みツール。CVE 修正計画、監査ログ検索、ソフトウェアインベントリ、定期スケジュール、レポートエクスポート、グループリゾルバーなどの高水準ラッパーが含まれます。
- コンテキストを事前取得するホスト向けのリソース(
action1://me、action1://orgs、action1://templates、action1://reports、action1://endpoints/{orgId}、action1://groups/{orgId}、action1://vulnerabilities/{orgId})。 - 複数ステップのジョブ向けのスラッシュプロンプト(
/patch-windows-fleet、/audit-vulnerabilities、/triage-offline-endpoints、/run-script-fleetwide、/software-inventory-sweep、/check-my-permissions)。
tests/unit/specSha.test.ts は、生成ツールをピン留めされたスナップショットに関連付けます。Action1 側の変更は検出しません。npm run spec:check と毎週の CI ジョブで、スナップショットと Action1 が提供する仕様を比較します。
主な特長
- 保護された状態変更。 状態を変更するツールには
ACTION1_ALLOW_DESTRUCTIVE=trueが必要です。デフォルトではドライランのプレビューが行われ、実行にはconfirm: "YES"が必要です。アカウント操作には、別のスイッチも必要です。破壊的操作ガードを参照してください。 - スコープ設定。
ACTION1_ALLOWED_ORG_IDSでツールが対象にできる組織を制限できます。ACTION1_TOOLSETS=readを指定すると、読み取り専用ツールのみ登録されます。 - エージェント向け出力。 すべての読み取り専用ツールは
response_format(デフォルトはmarkdown、またはjson)を受け付けます。すべてのツールは4つの MCP アノテーションを設定し、outputSchemaを宣言します。ページ分割された結果には、最終ページでcount、has_more、next_cursor、totalが含まれます。結果は、切り詰めを示す注記を表示したうえで、ホストの1 MB制限内に収まります。 - 厳格な入力。 不明な引数やスペルミスのある引数は無視されず、検証エラーとして拒否されます。
- 認証。 先行リフレッシュ、重複排除された同時トークン要求、リフレッシュトークンへのフォールバックに対応した OAuth2 クライアントクレデンシャルを使用します。
- トランスポートの安全性。 読み取り(GET/HEAD)は、ネットワークエラー、HTTP 5xx、429 の場合に再試行されます(
Retry-Afterに従います)。変更操作は1回だけ送信され、429の場合、またはリクエスト送信前に接続が失敗した場合にのみ再試行されるため、再試行によって操作が二重に実行されることはありません。すべての Action1 呼び出しにはACTION1_REQUEST_TIMEOUT_MSによる時間制限が設定されています。 - 2種類のトランスポート。 デフォルトの stdio とステートレスな Streamable HTTP に対応し、いずれも2025年版に加えて MCP 2026-07-28 を提供します(ADR 0001)。HTTP ではベアラートークンが必要です。DNS リバインディング対策として
HostとOriginを検証し、ボディを1 MBに制限し、クライアント IP ごとにレート制限を行います。 - ログ。 クレデンシャルを秘匿化した構造化 JSON 行を stderr に出力します。呼び出しごとに1行の
tool_callと、保護された操作の監査ログを記録します。stdout は MCP 専用です。
アーキテクチャ
+----------------------------------------------------------------------+
| Curated tools and workflow wrappers |
| - script execution (Windows, macOS, OS-aware routing) |
| - execute_and_wait (start + poll + filtered output) |
| - get_endpoint (canonical path + list fallback) |
| - CVE remediation plan, audit log search, software inventory, ... |
+----------------------------------------------------------------------+
| Generated tools |
| - one tool per remaining spec operation, verb-first snake_case |
| - shared runtime: pagination, destructive guard, error mapping |
| - Action1 OpenAPI 3.1 snapshot, SHA-pinned (spec/openapi.sha256) |
+----------------------------------------------------------------------+
| Shared infrastructure |
| - Action1Client (auth, retry, timeouts, path safety, error mapping) |
| - TokenProvider (refresh_token fallback, proactive refresh) |
| - destructive guard, org allowlist, toolset filter |
| - structured stderr logger with redaction |
| - Markdown table renderer, response size budgets |
+----------------------------------------------------------------------+
生成ツールがキュレーション済みツールと同じ名前になる場合、コードジェネレーター(src/codegen/generate.ts)は生成ツールを除外します。また、SKIP_OPERATION_IDS(src/codegen/curated-overrides.ts)に記載された操作もスキップされます。設計上の判断は docs/adr/ に記録されています。
設定
設定はすべて環境変数で行います。
.env.exampleを.envにコピーして値を入力してください。値が空の場合は「デフォルトを使用」します。node dist/index.js --helpでも同じ環境変数を確認できます。
| 変数 | デフォルト | 説明 |
|---|---|---|
ACTION1_BASE_URL | 必須 | ご利用のリージョンのAPIベースURLです。下記を参照してください。 |
ACTION1_CLIENT_ID | 必須 | Action1 > Settings > API Credentialsで取得したOAuth2クライアントIDです。 |
ACTION1_CLIENT_SECRET | 必須 | OAuth2クライアントシークレットです。認証情報の作成時に一度だけ表示されます。 |
ACTION1_ORG_ID | 未設定 | デフォルトの組織UUIDです。ツールではorg_idで上書きできます。設定を推奨します。 |
ACTION1_ALLOWED_ORG_IDS | すべて | ツールがアクセスできる組織UUIDをカンマ区切りで指定します。それ以外へのアクセスは拒否されます。HTTPおよび共有環境での設定を推奨します。 |
ACTION1_ALLOW_ENTERPRISE_OPS | false | ACTION1_ALLOWED_ORG_IDSを設定した場合に、許可された組織のいずれかに紐づかない変更操作(エンタープライズ設定、スクリプトライブラリ、ロール、ユーザー、エンタープライズスコープ)も許可します。 |
ACTION1_ALLOW_DESTRUCTIVE | false | true/1/yesを指定すると、状態を変更するツールの実行を許可します。 |
ACTION1_ALLOW_ACCOUNT_OPS | false | アカウント操作も許可します。対象はユーザー、ロール、/me、エンタープライズアカウント、組織、サブスクリプションへの変更、およびGET以外のすべてのaction1_raw_requestです。 |
ACTION1_DESTRUCTIVE_AUTO_CONFIRM | false | 単一オペレーターの隔離された環境専用です。呼び出しごとのconfirm: "YES"を省略します。dry_runは引き続きデフォルトでtrueです。 |
ACTION1_TOOLSETS | all | all、read(読み取り専用ツール)、curated(生成されたツールなし)のいずれかを指定します。カンマ区切りで指定した値は共通部分が適用されます。 |
ACTION1_REDACT_PII | false | ツールの出力(User Nameなどのレポート列やCSVエクスポート列を含む)、リソースの読み取り結果、上流のエラーボディ内のユーザー名、IPアドレス、MACアドレス、その他のアドレス、シリアル番号、メールアドレス、Active Directoryのフィールド、個人名をマスクします。ルールと制限についてはSECURITY.mdを参照してください。 |
ACTION1_DEFAULT_TIMEOUT_MINUTES | 10 | デフォルトのスクリプトタイムアウトです。0~10080を指定します。 |
ACTION1_DEFAULT_RETRY_MINUTES | 1440 | オフラインのエンドポイントに対してAction1がアクションを再試行する時間です。0~10080を指定します。 |
ACTION1_LAST_SEEN_STALE_MINUTES | 10 | last_seenからの経過時間がこの分数を超えると、エンドポイントをオフラインとみなします。1~1440を指定します。アクション実行前のオフラインチェック、action1_get_endpointのconnectivity.online、およびaction1_endpoints_summaryの最新/古い件数に適用されます。 |
ACTION1_REQUEST_TIMEOUT_MS | 60000 | 再試行を含む1回のAction1 API呼び出しに割り当てる時間です。1000~600000を指定します。 |
ACTION1_TOKEN_TIMEOUT_MS | 15000 | 1回のOAuthトークン取得試行のタイムアウトです。1000~600000を指定します。 |
ACTION1_LOG_LEVEL | info | debug、info、notice、warn、error、critical、alert、emergencyのいずれかを指定します(大文字と小文字は区別されません)。 |
PORT | 3000 | HTTPモードで使用する待ち受けポートです。 |
HOST | 127.0.0.1 | HTTPモードで使用するバインドアドレスです。 |
MCP_HTTP_TOKEN | --httpの場合は必須 | クライアントが送信するベアラートークンです。16文字以上を指定してください(openssl rand -hex 32)。 |
MCP_HTTP_ALLOW_NO_AUTH | false | トークンなしのHTTPモードを許可します。ループバックへのバインドに限り、ローカル開発用です。 |
MCP_HTTP_ALLOWED_HOSTS | ループバックおよびバインドアドレス | 許可する追加のHost名です。たとえば、リバースプロキシの背後で使用する公開名を指定します。0.0.0.0/::の場合は必須です。 |
MCP_HTTP_ALLOWED_ORIGINS | ループバックオリジン | 許可するブラウザーのOrigin値です。 |
TRUST_PROXY | false | Expressのtrust proxy設定です。false、true、loopback、ホップ数、またはCIDRリストを指定します。ローカルのリバースプロキシの背後で使用する場合はloopbackを設定し、レート制限で実際のクライアントIPを認識できるようにしてください。 |
Action1のリージョン(ACTION1_BASE_URL):
| リージョン | ベースURL |
|---|---|
| ヨーロッパ | https://app.eu.action1.com/api/3.0 |
| 北米 | https://app.action1.com/api/3.0 |
| 北米2 | https://app.na-2.action1.com/api/3.0 |
| イギリス | https://app.uk.action1.com/api/3.0 |
| オーストラリア | https://app.au.action1.com/api/3.0 |
MCP ホストへの接続
| ホスト | トランスポート | ドキュメント |
|---|---|---|
| Claude Code (CLI) | stdio | インストール:Claude Code |
| Claude Desktop (macOS / Windows) | MCPB bundle または stdio | インストール:Claude Desktop |
| Claude.ai (web) | Streamable HTTP | インストール:Claude.ai |
| Cursor | stdio | インストール:Cursor |
| Continue.dev / Cody | stdio | インストール:一般 |
ツール
docs/USAGE.md はツールのリファレンスです。
docs/EXAMPLES.md にはエンドツーエンドのレシピがあります。厳選された
レイヤーを簡潔に紹介します。
検出(読み取り専用)
action1_list_organizations、action1_list_endpoints、
action1_endpoints_summary(サーバー側のカウンター。フリートの規模に関係なく出力は小さくなります)、
action1_get_endpoint(正規のパスとリストへのフォールバック、
および派生した platform と connectivity.online)、
action1_search_endpoints(ホスト名、ユーザー、OS、
ステータスを部分一致で絞り込み)、action1_list_action_templates、action1_get_action_template、
action1_list_missing_updates、action1_list_vulnerabilities、
action1_list_recent_automations、action1_automations_summary。
実行(破壊的、ガード付き)
action1_run_powershell(Windows。success_exit_codes を設定)、
action1_run_bash_macos(macOS。10 個の run_script フィールドを設定)、
action1_run_script(OS に応じて振り分け)、action1_reboot_endpoint、
action1_deploy_update、action1_deploy_package、
action1_uninstall_program、action1_run_data_collection。すべて
target_type: "Endpoint"(デフォルト)または "EndpointGroup" を受け付けます。
action1_run_script では、グループから OS を 1 つに特定できないため、
さらに os("windows" または "macos")が必要です。
ポーリングと結果(読み取り専用)
action1_get_automation_status、action1_get_automation_results、
action1_get_automation_output(ライフサイクルマーカーをフィルタリング)、
action1_wait_for_automation。
ワークフロー(破壊的、ガード付き)
action1_execute_and_wait:アクションを開始し、終了するまでポーリングして、
フィルタリング済みの出力を返します。mode: "script" では OS に応じて振り分け、
mode: "template" では名前付きテンプレートを実行します。
高水準ラッパー
action1_endpoint_groups_resolve(あいまいなグループ名を UUID に解決)、
action1_software_inventory_for_endpoint、action1_recurring_schedules、
action1_audit_log_search、action1_report_export、
action1_cve_remediation_plan。
生成
残りのすべての Action1 API 操作は、動詞を先頭にした snake_case のツールです。
入力パラメーター名は snake_case に正規化されます。
docs/api-coverage.md を参照してください。
破壊的操作のガード
destructiveHint: true のツールは、以下の条件をすべて
満たした場合にのみ実行されます。
ACTION1_ALLOW_DESTRUCTIVE=true server env, restart required
ACTION1_ALLOW_ACCOUNT_OPS=true server env, only for account operations
confirm: "YES" per call, exact (waived by auto-confirm)
dry_run: false per call, the default is true (preview)
// Preview only (default)
{ "tool": "action1_run_powershell",
"arguments": { "endpoint_id": "<uuid>", "script_text": "Get-Date" } }
// -> { "dry_run": true, "would_send": { method, path, body } }
// Execute (server env: ACTION1_ALLOW_DESTRUCTIVE=true)
{ "tool": "action1_run_powershell",
"arguments": { "endpoint_id": "<uuid>", "script_text": "Get-Date",
"dry_run": false, "confirm": "YES" } }
confirm と dry_run は、モデル自身が設定する引数です。これらは
誤操作を防ぎますが、Action1 データ(ホスト名、スクリプトの出力、
監査テキスト)に隠された指示に従うモデルは防げません。それに対して有効なのは、
モデルが変更できない制御、つまり環境スイッチ、
ACTION1_ALLOWED_ORG_IDS、ACTION1_TOOLSETS=read、API
認証情報のロール、および MCP ホストのツールごとの承認です。ホストで破壊的ツールを
「常に許可」に設定しないでください。脅威モデルについては
docs/SECURITY.md を参照してください。
例
その他の例は docs/EXAMPLES.md を参照してください。
# 1. Fleet health check
> "How many endpoints are online and how many need a reboot?"
agent -> action1_endpoints_summary
# 2. Read-only PowerShell on one Windows host
> "What's the OS build of <hostname>? Run Get-ComputerInfo OsBuildNumber."
agent -> action1_search_endpoints { query: "<hostname>", fields: ["hostname"] }
agent -> action1_run_powershell { endpoint_id: <uuid>,
script_text: "Get-ComputerInfo OsBuildNumber",
dry_run: false, confirm: "YES" }
agent -> action1_wait_for_automation { instance_id: <id>, endpoint_id: <uuid> }
# 3. CVE remediation plan
> "What's needed to remediate CVE-2024-XXXX?"
agent -> action1_cve_remediation_plan { cve_id: "CVE-2024-XXXX" }
agent -> action1_deploy_update { ... } (after operator confirmation)
レート制限
Action1 はレート制限を公開していません。開発中、EU インスタンスで毎秒約 10 件のリクエストを送っても HTTP 429 は発生しませんでしたが、これは観測結果であり、保証ではありません。Action1 が 429 を返した場合:
- 429 はリクエストが処理されなかったことを意味するため、クライアントは読み取りと変更のどちらでも
Retry-Afterを尊重します(上限は 60 秒です)。 - 大量の操作では、エンドポイントごとに 1 回呼び出すよりも
target_type: "EndpointGroup"を優先してください。Action1 がサーバー側で処理を分散します。
サーバーには送信側のスロットリング機能がなく、一覧レスポンスもキャッシュしません。
再試行ポリシーは src/client/action1Client.ts にあります。
必要な Action1 権限
ツールが実行できる操作は、API 認証情報のロールで許可されている範囲に限られます。
docs/permissions.md には、ピン留めされた仕様内の権限タグから生成された、各操作に必要な権限が記載されています。
使用するツールに必要な権限のみを付与してください。エージェントが破壊的な操作を試みる前に、action1://me を読み取るか、/check-my-permissions プロンプトを実行して、設定済みの認証情報で何ができるかを確認してください。
ドキュメント
| ファイル | 内容 |
|---|---|
docs/INSTALLATION.md | サポート対象のすべての MCP ホストの手順に沿ったセットアップ。 |
docs/USAGE.md | 厳選レイヤーとラッパーレイヤーのツールリファレンス、リソース、プロンプト、出力形式、キャンセル、ログ。 |
docs/EXAMPLES.md | 最初から最後までのレシピ(パッチ適用、トリアージ、CVE 対応)。 |
docs/DEPLOYMENT.md | stdio、リバースプロキシ経由の HTTP、systemd、MCPB、本番環境チェックリスト。 |
docs/SECURITY.md | 脅威モデル、破壊的操作のガード、LLM へのデータフロー、脆弱性の報告。 |
docs/permissions.md | 操作およびツールごとの Action1 権限(自動生成)。 |
docs/TROUBLESHOOTING.md | よくある失敗とその解決方法。 |
docs/FAQ.md | 各トピックに関する質問。 |
docs/CONTRIBUTING.md | 開発環境のセットアップ、コード生成ワークフロー、テスト、プルリクエスト。 |
docs/api-coverage.md | 仕様の操作とツールの対応関係。完全な表は docs/_coverage_table.md にあります。 |
docs/api-coverage-gaps.md | サーバーが対応していない機能、または注意点付きでのみ対応している機能。 |
docs/GOTCHAS.md | Action1 API の特有の挙動と、厳選ツールが使用する未公開のエンドポイント。 |
docs/adr/ | アーキテクチャ決定記録。 |
docs/403-investigation.md | /general が実際のパスではない理由。 |
evals/ | LLM 駆動のハーネス向け評価用の質問。 |
TESTING.md | テストレイヤーとライブ実行の記録。 |
CHANGELOG.md | リリースノート。 |
開発
npm run dev # tsx watch (stdio)
npm run typecheck # source
npm run typecheck:tests # tests (tsconfig.test.json)
npm run lint
npm test # all test categories
npm run test:unit
npm run test:integration # MCP protocol round trips
npm run test:security # destructive-guard truth table, redaction
npm run test:performance # size limits and rendering at scale
npm run test:coverage # tests with the coverage thresholds from vitest.config.ts
npm run test:e2e # builds the MCPB bundle, starts the built servers over stdio
npm run check # lint, both typechecks, format check, tests (what CI gates on)
npm run codegen # regenerate src/tools/generated/index.ts from the spec
npm run spec:check # compare the pinned spec with the one Action1 serves
npm run inspector # MCP Inspector against the built stdio server
macOS ペイロードビルダーのテストは、リバースエンジニアリングで特定したフィールド一式を保護するため、意図的に厳格にしています。ペイロードを変更した場合は、テストも更新してください。
ロードマップ
対応候補(docs/api-coverage-gaps.md も参照):
- リリースワークフローからプロベナンス付きの npm リリースを行う(トラステッドパブリッシャーは設定済み。初回のワークフローによる公開は保留中です)。
- 検証状況に記載された破壊的なツールを、テスト用エンドポイントでライブ検証する。
- HTTP トランスポートを Cloudflare Workers にデプロイする。
セキュリティ
docs/SECURITY.md を参照してください。脆弱性は公開 issue ではなく、
https://github.com/mguttmann/action1-mcp/security/advisories/new から非公開のセキュリティアドバイザリとして報告してください。
ライセンス
MIT © 2026 mguttmann。ただし、例外が 1 つあります。src/codegen/spec/openapi.json にある同梱の Action1 API 仕様は Action1 Corporation に帰属し、MIT License の対象ではありません。詳細は NOTICE を参照してください。
謝辞
- https://modelcontextprotocol.io の MCP コミュニティ。
- ツールの設計と評価形式に影響を与えた、Anthropic の
mcp-builderガイド。 - このプロジェクトの範囲を決める際にコードを読んだ、ほかのオープンソースの Action1 統合。特に、
dimer47/action1-cli、pts211/action1-mcp-serverおよびghively/Action1MCP。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。