magicsword-mcp について
magicsword-mcp は、MagicSword のエンドポイント、アラート、ポリシー、プライベートインテリジェンスを会話形式で管理するローカル MCP サーバーです。stdio 経由で Magic Portal の顧客 API を呼び出し、Enterprise プランを必要とします。
主な機能
- 01エンドポイント一覧とデバイス情報の確認
- 02アラートと調査イベントの検索
- 03アラートのトリアージとポリシールール管理
- 04ポリシーやエンドポイント操作のプレビューと確定
- 05プライベートインテリジェンスフィードと項目の管理
- 06登録トークンとインストール手順の作成
活用シーン
- 01ホストや MITRE テクニックでアラートを検索
- 02調査イベントからポリシールールを作成
- 03エンドポイントへのポリシー適用やアップグレードを事前確認
- 04レポートの指標をプライベートフィードに追加
MCP 対応
このプロジェクトはローカル MCP サーバーとして、stdio 経由で Magic Portal 顧客 API のエンドポイント、アラート、ポリシー、インテリジェンス操作を MCP クライアントに公開します。MagicSword Enterprise API キーと対応する権限が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
magicsword-mcp
MagicSword 向けの Model Context Protocol サーバーです。Claude Desktop、 Cursor、または MCP 対応クライアントを利用しているユーザーが、MagicSword を会話形式で管理できます。エンドポイントの一覧表示、 アラートの問い合わせ、検出結果のトリアージ、登録トークンの発行、ポリシー変更のプレビューや適用が可能です。
このサーバーは、Magic Portal が公開する /api/public/v1/* カスタマー API を
薄くラップした、明確な方針を持つラッパーです。ユーザーのマシン上で動作し、
msk_… API キーを保持して、stdio 経由で MCP 通信を行います。
プランの制限。 カスタマー API は Enterprise 専用です。パイロットプランのキーを使用すると、サーバーは「この MagicSword 組織が MCP を使用するには Enterprise プランが必要です」という明確なメッセージを返します。組織をアップグレードするまで、ほかの機能は動作しません。
クイックスタート
Claude Desktop インストーラー
macOS または Windows の Claude Desktop では、 GitHub Releases から magicsword-mcp.mcpb をダウンロードしてください。 インストーラーはバージョン 0.1.4 以降に含まれています。このリリースが まだ利用できない場合は、以下のターミナルでのセットアップを使用してください。
- Magic Portal → Settings → API Keys で Enterprise API キーを生成します。 まず、エンドポイント、アラート、ポリシーの読み取りスコープを設定してください。
- Claude Desktop で Settings → Extensions → Advanced settings →
Install Extension… を開き、ダウンロードした
.mcpbファイルを選択します。 - 拡張機能を確認し、セキュアな設定フィールドに API キーを入力します。Claude はこの機密フィールドをオペレーティングシステムの セキュアストレージに保存します。インストーラーは MagicSword キーを別のファイルとして保存しません。
- 新しい会話を開始し、MagicSword に
whoamiの後にlist_endpointsを呼び出すよう依頼します。組織とスコープを確認してください。
インストーラーにはサーバーと本番環境用の依存関係が含まれており、Claude
Desktop に同梱されている Node ランタイム(22+)を使用します。npm のインストールや JSON の編集は不要です。SHA256 チェックサムはインストーラーの隣に公開されています。個別にダウンロードした拡張機能を更新するには、新しい .mcpb ファイルをインストールする必要があります。ディレクトリの自動更新には、審査済みのディレクトリ掲載が必要です。
ターミナルでのセットアップ
Node.js 22+、インストール済みの MCP クライアント、および Magic Portal → Settings → API Keys で取得した MagicSword Enterprise API キーが必要です。
推奨:1 つのコマンドでクライアントをインストールして接続します。 セットアップではキーを安全に入力でき、Claude Desktop、Codex、Claude Code、 または Cursor を選択できます。
npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure
クライアントが決まっている場合は、対応するワンライナーを実行してください。
| クライアント | インストールと設定 |
|---|---|
| Claude Desktop | npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client claude-desktop |
| Cursor | npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client cursor |
| Claude Code | npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client claude-code |
| OpenAI Codex | npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client codex |
クライアント独自の登録コマンドを使いたい場合は、キーをローカルに保存した後、グローバルにサーバーをインストールしなくても、次のコマンドを使用できます。
codex mcp add magicsword --env MAGICSWORD_BASE_URL=https://www.magicsword.io -- npx -y @magicsword-io/magicsword-mcp
claude mcp add --scope user --transport stdio magicsword --env MAGICSWORD_BASE_URL=https://www.magicsword.io -- npx -y @magicsword-io/magicsword-mcp
これらのコマンドは、自動登録で Windows 上のクライアント CLI を起動できない場合の代替手段としても使えます。デスクトップでの起動には、クライアントから Node/npx を利用できる必要があります。推奨セットアップでは絶対パスを使用します。
インストールボタン:Cursor と VS Code
まず、API キーをローカルに保存します(マシンごとに 1 回):
npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client manual
次に、クライアントのボタンをクリックし、表示されるインストールの確認を承認します:
これらのボタンは、本番環境を参照するローカルの npx サーバーを登録します。API キーは含まれていません。サーバーは ~/.magicsword/mcp.json を読み取ります。クライアントの PATH に npx が必要です。デスクトップアプリが Node または npx を見つけられない場合は、絶対パスで起動するため、上記の推奨セットアップを使用するか、configure --client manual で表示された絶対パスの command と args をその設定にコピーしてください。
JSON を手動で設定する場合
上記の手順でキーを保存した後、他のサーバー設定を維持したまま、このエントリを Claude Desktop の
claude_desktop_config.json または Cursor の ~/.cursor/mcp.json に追加します:
{
"mcpServers": {
"magicsword": {
"command": "npx",
"args": [
"-y",
"@magicsword-io/magicsword-mcp"
],
"env": {
"MAGICSWORD_BASE_URL": "https://www.magicsword.io"
}
}
}
}
VS Code / Insiders の場合は、MCP: Open User Configuration を実行し、この設定を追加します(VS Code では mcpServers ではなく servers を使用します):
{
"servers": {
"magicsword": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@magicsword-io/magicsword-mcp"
],
"env": {
"MAGICSWORD_BASE_URL": "https://www.magicsword.io"
}
}
}
}
クライアントを再起動するか、新しいセッションを開始してから、whoami と
list_endpoints を呼び出すよう指示してください。認証と読み取りアクセスを確認するには、両方が成功する必要があります。
公式 MCP Registry の識別子は
io.github.magicsword-io/magicsword-mcp です。クライアントごとの詳細は以下をご覧ください。
設定
magicsword-mcp configure
セットアップでは、非表示入力で API キーを入力し(Magic Portal →
Settings → API Keys で発行してください)、接続するクライアントとして Claude Desktop、Codex、
Claude Code、Cursor、または手動設定のいずれかを選択します。API キーは
~/.magicsword/mcp.json のみに保存されます(モード 600)。Portal のデフォルトは
https://www.magicsword.io で、保存済みのプレビュー用オリジンは置き換えられます。カスタム
オリジンには、明示的な --base-url オプションが必要です。
セットアップでは、選択したクライアントを標準のユーザーレベルの場所に登録し、
他のサーバーや設定を保持し、既存のクライアント設定のプライベートなバックアップを作成します。JSON クライアントと Codex では、既存の
magicsword エントリーを更新します。Claude Code ではその名前が使用可能である必要があります。再試行する前に、Claude Code 独自の MCP
コマンドを使って古い登録を削除してください。Codex と Claude Code への登録には、それぞれの CLI がインストールされている必要があります。
クライアントを直接選択する場合、または保存済みのキーをプロンプトなしで再利用する場合:
magicsword-mcp configure --client codex
magicsword-mcp configure --non-interactive --client claude-desktop
magicsword-mcp configure --client cursor --client-config /path/to/mcp.json
起動エントリーでは Node とインストール済みサーバーの絶対パスを使用するため、デスクトップアプリはターミナルの PATH を引き継がずに起動できます。Node のインストール先を移動した場合や、異なる Node バージョンの配下にパッケージをインストールした場合は、セットアップを再実行してください。
手動セットアップでは、他のローカル stdio MCP クライアント向けに、認証情報を含まない起動エントリーが表示されます。--client を指定しない非対話型セットアップでは、MagicSword ファイルのみが書き込まれます。
選択したクライアントを再起動するか、新しいセッションを開始して magicsword とその
22 個のツールを読み込みます。アクセスを確認するには、whoami を呼び出してから
list_endpoints を呼び出すよう指示してください。検出だけでは API キーのスコープは確認できません。Claude Desktop のログは
macOS では ~/Library/Logs/Claude/mcp*.log にあります。ブラウザーのみで利用するクライアントにはリモートの
MCP トランスポートが必要です。このパッケージが提供するのはローカル stdio サーバーです。
~/.magicsword/mcp.json ではなく、クライアントごとに個別の設定を行う場合は、その MCP ホストの
環境変数に MAGICWORD_API_KEY と、必要に応じて MAGICSWORD_BASE_URL を設定します。共有する設定スニペットやスクリーンショットに API キーを含めないでください。
ツール
| ツール | 機能 |
|---|---|
whoami | 組織、キー ID、スコープを返します。トラブルシューティングの際は必ず最初に呼び出してください。 |
list_endpoints | オプションでプラットフォーム、ステータス、ホスト名の glob による絞り込みを指定して、エンドポイントを一覧表示します。 |
show_endpoint | OS、ポリシー、コンプライアンス、アップグレード、ハートビート、AMSI の詳細とともに、1 つのエンドポイントを取得します。 |
list_agent_releases | 利用可能なエージェントのバージョンと、プラットフォームごとの最新リリースを一覧表示します。 |
find_alerts | 重大度、確認状態、開始時刻、ホスト名、MITRE の手法でアラートを検索します。 |
list_events | 名前、ファイル名、パス、ハッシュ、発行元、コンピューター、パッケージファミリーで Investigate イベントを検索し、種類、ステータス、ポリシー、エンドポイント、時間で絞り込みます。 |
triage_alert | トリガーとなったイベント、メタデータ、ファイルのコンテキストを含めてアラートを直接取得します。必要に応じて確認済みにするか、却下できます。 |
list_policies | 現在のバージョンとモードを含めてポリシーを一覧表示します。 |
show_policy | ID を指定してポリシーを 1 つ表示します。 |
manage_policy_rules | ID または名前でポリシーのルールを一覧表示するか、明示的なルールまたはイベント由来のルールを追加します。Windows WDAC では、明示的なフラットハッシュルールを使用しないでください。 |
apply_policy_to_endpoints | エンドポイントを特定してポリシーの割り当てをプレビューします。承認後に confirm=true を指定すると適用されます。 |
flip_to_enforcing | サーバーが発行する 1 回限りの確認トークンを使用して、プレビューと確認の 2 段階で強制モードに切り替えます。安全性が極めて重要な操作です。 |
list_intel_sources | プラットフォームとページネーションによる絞り込みを指定して、有効なグローバルおよび組織所有のインテリジェンスソースと ID を検出します。 |
list_customer_intel_feeds | プライベートインテリジェンスフィードまたはフィード項目を一覧表示します。 |
manage_customer_intel_feed | フィードを作成または更新します。削除するには、プレビューの後に confirm=true を指定する必要があります。 |
manage_customer_intel_item | フィード項目を編集します。削除するには、プレビューの後に confirm=true を指定する必要があります。 |
upsert_customer_intel_items | レポートから抽出したインジケーターをプライベートフィードに追加します。 |
manage_policy_intel_sources | ポリシーに関連付けられたインテリジェンスフィードを一覧表示、追加、または解除します。 |
upgrade_endpoints | 選択したエンドポイントのアップグレードをプレビューします。承認後に confirm=true を指定するとキューに登録されます。 |
request_endpoint_checkin | エンドポイントのチェックインコマンドをキューに登録します。 |
mint_enrollment_token | 1 回限りのエージェント登録トークンを発行します。 |
agent_install_instructions | macOS、Linux、Windows 用のインストールコマンドを返します。API 呼び出しは行いません。 |
| 書き込みツールには、Magic Portal で対応する Customer API スコープが必要です。たとえば、 | |
alerts:write、policies:write、endpoints:write、intel:write などです。 | |
イベントのレビューには alerts:read が必要です。選択したイベントをポリシールールに変換するには、 | |
policies:write が必要です。 |
ツールは標準の MCP 安全性アノテーションを公開します。読み取り専用の検出ツールには 読み取り専用かつ冪等のマークが付けられ、適用、削除、ポリシー割り当て、 ルール変更、エージェントのアップグレードには破壊的操作のマークが付けられるため、MCP クライアントは 適切な確認 UX を適用できます。
ポリシールールの追加と一覧表示
manage_policy_rules では、追加時に入力ソースを1 つ指定します。明示的な
ルールには rules、テレメトリから導出したルールには event_ids を使用します。それぞれ
1~100 件を指定できます。名前を解決するには policy_id を使用するか、
任意の platform とともに policy_name を使用します。ポリシーは事前に存在している必要があり、
名前が曖昧な場合は ID またはプラットフォームを指定する必要があります。
たとえば、issue #5 のファイル名を Windows のブロックリストポリシーでブロックするには、次のようにします。
{
"action": "add",
"policy_name": "Workstations",
"platform": "windows",
"rules": [
{ "type": "filename", "value": "rustdesk.exe", "status": "blocked" },
{ "type": "filename", "value": "mshta.exe", "status": "blocked" },
{ "type": "filename", "value": "wscript.exe", "status": "blocked" }
]
}
明示的なルールでは type と value を使用し、任意で status を指定できます(既定値は
blocked です)。不明なルールフィールドは拒否されます。rule_type / file_name は
代わりに使用できません。ファイル名とパスの値は、空でない文字列またはサポート対象の値オブジェクトである必要があります。パブリッシャーの値には publisherName(または publisher)と有効な tbsHash(または tbs_hash / certificate_thumbprint)が必要です。任意のルールメタデータには、name、mode、バージョン範囲、署名者/ファイル属性の参照、
package_version、target_platforms が含まれます。Portal は、解決されたポリシーのプラットフォームでルールを適用できるかどうかを検証します。Windows WDAC のフラットハッシュは引き続きサポート対象外です。テレメトリから導出したルールまたはプライベートインテリジェンスフィードを使用してください。
テレメトリには event_ids を使用し、トップレベルの status(既定値は allowed)と、任意の type オーバーライドを指定します。トップレベルの status と type は、明示的な rules と併用できません。代わりに各ルールにこれらのフィールドを設定してください。
追加では既存のルールとインテリジェンスソースへのリンクが保持されます。一致する顧客ルールのステータスが異なる場合は更新されます。すでに要求されたステータスであるルールは、変更なしの重複として報告されます。フィード所有のルールではその出所情報が保持されます。フィードルールとのサポート対象外の競合は API エラーを返します。このツールは Portal の実際の added_count、updated_count、duplicate_count を報告し、構造化出力にバージョン情報も保持します。変更のない重複バッチでは「変更は不要です」と報告されます。説明のない変更件数ゼロや不正な応答はエラーです。リクエストによってバージョンが作成された可能性があるため、再試行する前に現在のルール/バージョンを確認してください。書き込みが自動的に再試行されることはありません。
イベントから導出したバッチでは、件数の合計が要求した一意のイベント数を下回る場合もエラーになります。一部のイベントからルールが作成されなかった可能性があります。
正常に行われた変更とバージョンの詳細は、構造化出力に引き続き含まれます。
現在のバージョンに保存されているルールを確認するには、次のようにします。
{ "action": "list", "policy_id": "<policy UUID>", "limit": 500, "offset": 0 }
一覧表示には ID と policies:read が必要です。現在のバージョンの保存済み顧客ルールと、
実体化済みのフィードルールが返されます。戻り値には total、limit、offset が含まれます。
既定のページサイズは 100、最大は 500 です。total 件すべてを読み取るまで
offset を増やしてください。空のページは、他のバージョンや、このバージョンに実体化されていないインジケーターについては示しません。
会話の例
User: Show me unack'd critical alerts from the last 24h.
Claude: [calls find_alerts severity=critical acknowledged=false since=...]
→ 3 critical alerts on 2 endpoints. Want me to triage the top one?
User: Yes.
Claude: [calls triage_alert]
→ Evidence chain: cmd.exe spawned by winword.exe with -enc base64.
MITRE T1059.001. Acknowledge with comment "office macro chain — under investigation"?
User: Yes, and extract the IOCs from this report into our SOC feed.
Claude: [calls upsert_customer_intel_items]
→ Upserted 47 indicators into feed 8d6...
User: Show me audited or blocked events from the last day.
Claude: [calls list_events hours=24 status=audited,blocked]
→ 31 events. Here are the file paths, publishers, and hashes.
User: Allow the first 5 on the Workstations policy.
Claude: [calls manage_policy_rules action=add policy_name=Workstations event_ids=[...] status=allowed]
→ Created a new policy version with 5 allowed rules.
イベントを調査し、インテリジェンスを適用する
「先週のimage.pngの監査済みファイル名イベントを表示して」と尋ねます。エージェントは、type=filename、status=audited、file_name=image.png、hours=168を指定してlist_eventsを呼び出します。file_nameは、大文字と小文字を区別する完全一致で、句読点も文字どおりに照合されます。より広範な検索には、qを使います。これは、Portal Investigateと同じ7つのフィールド(名前、ファイル名、パス、ハッシュ、パブリッシャー、コンピューター、パッケージファミリー)を検索します。大文字と小文字を区別しないリテラル部分文字列検索で、Unicode、引用符、カンマ、括弧、Windowsのバックスラッシュを含む、最大120文字を指定できます。%、_、*はリテラル文字として扱われます。ワイルドカードやフィールドクエリー構文には対応していません。制御文字は拒否されます。クエリーが空の場合、テキストフィルターは適用されません。フィルターは組み合わせて適用されるため、type=filenameを指定すると、ファイル名を含むすべてのイベントタイプではなく、ファイル名イベントが選択されます。イベントタイプをまたいで検索するには、typeを省略します。
たとえば、「パブリッシャーがContoso, Inc. (R&D)のイベントを検索して」と尋ねる場合は、list_events q="Contoso, Inc. (R&D)"を使います。結果で見つかったファイルをブロックするには、返されたIDとルールのコンテキストを確認し、適切なルールタイプを選んで、manage_policy_rules action=add policy_id=... event_ids=["<selected-event-id>"] status=blocked type=filenameを呼び出します。検索によってポリシーが変更されたり、一致した項目がすべて自動的にブロックされたりすることはありません。パブリッシャーを検索しても、そのパブリッシャーがブロックされるとは限りません。ブロック対象は、選択したルールタイプによって決まります。適切な場合は、Portalプラットフォームによる検証を条件として、イベントIDから他の対応ルールを生成することもできます。
デフォルトの期間は24時間で、ステータスはaudited,blockedです。明示的な開始日時を指定するにはsinceを使います。期間の判定には、最終観測時刻が使用されます。最終観測時刻がない場合は作成時刻が使われます。結果には、ファイルパス、パブリッシャー、ハッシュ、コンピューター、発生回数、ルールのコンテキスト、ページネーション情報が含まれます。追加ページを取得するには、limitとoffsetを使います。これは正規化されたイベントデータであり、生のイベントログではありません。
「WindowsポリシーにLOiDriversのインテリジェンスを適用して」という場合のワークフローは次のとおりです。
list_policies platform=windowsでポリシー名とIDを確認します。list_intel_sources platform=windowsで、利用可能なソース名とIDを取得します。 デフォルトでは有効なソースが対象です。無効なソースを確認するには、is_enabled=falseを使います。追加ページを確認するには、limit(最大100)とoffsetを使います。manage_policy_intel_sources action=list policy_id=...で現在の適用状況を確認します。- 対象のポリシーとソースを特定したら、
manage_policy_intel_sources action=attach policy_id=... source_ids=[...]を使います。 結果には、新たに適用されたソースと、すでに適用されていたソースが別々に表示されます。 - ポリシーの適用状況を再度確認して、結果を検証します。
ソースの検索にはintel:readが必要です。ポリシーの検索と適用状況の確認にはpolicies:readが必要です。ソースの適用にはpolicies:writeが必要です。ソースが表示されても、プレミアム利用権があるとは限りません。適用時にAPIによって確認されます。ソースを適用するとポリシーバージョンが作成され、エンドポイントがそのバージョンを受信した時点で有効になります。
設定元の優先順位
MAGICSWORD_API_KEY/MAGICSWORD_BASE_URL環境変数(MCPホストによって設定されます)。~/.magicsword/mcp.json(または$MAGICSWORD_CONFIG)。- デフォルトのベースURL
https://www.magicsword.io。
任意のトランスポート設定として、MAGICSWORD_REQUEST_TIMEOUT_MS(デフォルトは
30秒)、MAGICSWORD_RESPONSE_MAX_BYTES(デフォルトは4 MiB)、および
MAGICSWORD_GET_RETRIES(デフォルトは2、最大3)があります。再試行されるのは、冪等なGETリクエストのみです。書き込み操作が自動的に再試行されることはありません。
安全に関する注意事項
flip_to_enforcingは2段階で行います。 最初の呼び出しでサーバーのプレビューと1回限りの確認トークンが返されます。コミットするには、プレビューを人間に提示し、トークンを返す必要があります。トークンは有効期間が短く、1回のみ使用できます。これは MFA でも、サーバーが検証する人間による承認でもありません。同じ API キーで両方の呼び出しを実行できます。コミットする前に、MCP ホストが人間の承認を得る必要があります。 コミットの応答では、要求したポリシーの変更が成功したことを確認し、新しいバージョンを特定できる必要があります。そうでない場合は、再試行する前にshow_policyを使って結果を確認してください。 成功した場合、サーバーのポリシーバージョンの変更が確認されます。エンドポイントへの適用はチェックインを通じて有効になります。この応答では、エンドポイントへの配信は確認されません。- インテル添付では、有効なソースを使って1バッチあたり最大60件まで処理します。 キャプチャリクエストは、Portal UI と API キー作成者のレート予算を共有します。429 応答には再試行に関する指示が含まれます。次のバッチを送信する前に待機してください。 添付の概要には、新たに添付された件数と、すでに添付されていた件数がそれぞれ報告されます。件数が無効または不完全な場合は、再試行する前に添付を一覧表示してください。
- フリートの変更と削除は明示的に行います。 エンドポイントのアップグレード、ポリシーの割り当て、プライベートインテルの削除では、承認済みの後続呼び出しに
confirm=trueが含まれない限り、何も変更しないプレビューが返されます。 - Windows WDAC ポリシーを編集する際、明示的なフラットファイルハッシュは使用しないでください。 監査イベントの承認には、イベントから Portal が対応するパス/発行者/ファイル名のルールを導出できるよう、
manage_policy_rulesをevent_idsとともに使用してください。または、プライベートフィード内のハッシュ、AuthentiHash、ページハッシュ、TBS インテリジェンスにはupsert_customer_intel_itemsを使用してください。 - シークレットはユーザーのマシン内に保管してください。 MCP サーバーはローカルの stdio プロセスです。API キーは
~/.magicsword/mcp.json(モード 600)または MCP ホストが渡す環境変数から読み込まれます。設定されたMAGICSWORD_BASE_URLへのリクエスト以外に、マシンの外部へ送信されるものはありません。 - リモート Portal URL には HTTPS を使用してください。 HTTP が許可されるのは、localhost での開発時のみです。設定する URL に認証情報、パス、クエリ文字列、フラグメントを含めることはできません。
開発
npm install
npm run build
npm test
npm run test:package
npm run release:verify
node dist/index.js --version
テストでは、--help、--version、本番環境をデフォルトとする移行、非公開クライアントの登録、保持とロールバック、設定の検証、シークレットの秘匿、最新およびレガシー MCP の起動、対象を絞った変更の確認、再試行とタイムアウトのセマンティクス、レスポンスサイズの上限、不正なレスポンス、書き込み時に再試行しない動作、最新およびレガシーの stdio を介した 22 個すべてのツールの HTTP コントラクトと確認フロー、明示的なファイル名のラウンドトリップ、不正なルール形状、入力の曖昧さ、実際の変更件数、npm pack の内容を検証します。test:package は本番用 tarball をインストールし、インストール済みの CLI と MCP ツールの検出を確認します。release:verify はすべてのリリースメタデータを確認します。npm と MCP Registry のリリースについては、docs/RELEASING.md を参照してください。
オプトイン形式のライブポリシーテストも、npm run build の実行後に利用できます。
MAGICSWORD_LIVE_TEST=1 MAGICSWORD_TEST_POLICY_ID="<disposable-policy-uuid>" node scripts/live-policy-rules.mjs
保存済みの非公開認証情報または MAGICSWORD_API_KEY を使用してください。キーをコマンドや共有ログに含めないでください。このテストではポリシーバージョンを書き込みます。そのため、MCP issue 5 disposable verification というプレフィックスを名前に含む、割り当てられていない使い捨ての Windows 監査ポリシーが必要です。このポリシーには、1,000 件を超えるベースラインルールと、少なくとも 1 つのアタッチ済みインテリジェンスソースを設定し、既存の rustdesk.exe、mshta.exe、または wscript.exe の顧客ルールがない状態にしてください。
適切なテレメトリが存在する場合、このテストでは追記動作、ページネーション、インテリジェンスソースの保持、追加の繰り返し、ステータスの更新、不正な入力、イベントから導出されるファイル名を検証します。また、stdio を介して検出ツールと読み取りツールも実行します。表示されるのはアサーション名と件数だけです。確認後、使い捨てポリシーとそのバージョンを削除してください。このテストではテスト用データは作成も削除もしません。レガシーのライブトランスポートを実行するには、MAGICSWORD_TEST_PROTOCOL=legacy を設定してください。
同じ使い捨てポリシーとオプトイン環境で node scripts/live-demo-tools.mjs を実行すると、割り当て、アップグレード、適用のプレビュー、3 つすべてのプラットフォームのインストーラー手順、および無効化された一時フィードの作成/更新/アップサート/一覧表示/項目削除/アタッチ/デタッチ/フィード削除の各フローを確認できます。フィードは finally で削除されますが、ポリシーのテスト用データは手動でクリーンアップする必要があります。これらのチェックで、エンドポイントの割り当て、アップグレード、または適用が確定されることはありません。実際のエンドポイントコマンド、登録トークン、アラートの確認/却下は、ローカル HTTP フィクスチャで検証します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。