Skip to main content
Glama
MSPbotsAIFramework

mspbots-fleet-mcp

Official

mspbots-fleet-mcp

MSPbots Fleet Platform API 用の MCP サーバー — fleetdm 上に構築されたマルチテナントコンソールで、ホストインベントリ、オンデマンドスクリプト、保存済みの osquery クエリを MCP クライアントに公開します。

姉妹サービスである mspbots-agent-mcp と同じ設計に従います: ステートレス、認証情報を保存しない、Model Context Protocol (Streamable HTTP/SSE トランスポート) を介したリクエストごとのヘッダー認証。

どのような場合に使用しますか

この MCP は、サードパーティ統合ではなく、MSPbots の内部製品 (デバイスフリート管理) をラップします。典型的な使用例:

  • 「このテナントにはどのホストがあり、どのホストがオフラインですか?」→ mspbotsfleet_list_hosts

  • 「このノートパソコンを Production にタグ付けして」→ mspbotsfleet_set_host_labels

  • 「このマシンは古いようだ、更新を強制して」(非同期) → mspbotsfleet_refetch_host

  • 「そのサーバーでログ収集スクリプトを実行して」→ mspbotsfleet_run_script

  • 「今すぐ全 Windows ホストのディスク使用量を知りたい」→ mspbotsfleet_create_query で保存クエリを作成し、次に mspbotsfleet_run_query を実行

  • 「新しいノートパソコンのバッチが登録されたので、宣言したものをクレームしよう」→ mspbotsfleet_claim_hosts

  • 「このデバイスをオフボーディングするので、自テナントのものとして追跡を停止する (ただし Fleet には残す)」→ mspbotsfleet_release_host

Related MCP server: OpsLevel MCP

ツール

すべてのツールの認証情報はリクエストヘッダー (X-MSP-Token / X-MSP-Tenant-Id / X-MSP-Host) から取得されます。ツールのパラメータにトークンを渡す必要はありません。

ホスト

ホストは API では作成できません。マシンに fleetd がインストールされて登録されると自動的に表示され、その後、このテナントが宣言済みの識別子 (ホスト名/シリアル番号/UUID) に基づいて所有権をクレームします。mspbotsfleet_claim_hosts を参照してください。

Tool

説明

パラメータ

mspbotsfleet_list_hosts

現在のテナントのホストを一覧表示 (あいまい検索+ステータスフィルタ+ページネーション)

search、status(online/offline/new/missing)、page(既定値0)、per_page(既定値25、上限200)

mspbotsfleet_get_host

ホストの詳細+手動ラベルを取得

host_id(必須)

mspbotsfleet_list_host_scripts

このホストで実行可能なスクリプトを一覧表示

host_id(必須)

mspbotsfleet_set_host_labels

ホストの手動ラベルを全置換

host_id(必須)、labels(必須、全置換)

mspbotsfleet_refetch_host

次回チェックイン時にもプロパティを最新化するよう要求 (非同期)

host_id(必須)

mspbotsfleet_delete_host

Fleet からホストを削除し所有を破棄 (fleetd をアンインストールしていないと再登録されます)

host_id(必須)

mspbotsfleet_claim_hosts

識別子を宣言してマッチする無主ホストを管理する (冪等。一致しなかった分は再試行)

identifiers(任意、ホスト名/シリアル番号/UUID のリスト、最大500件。省略/空配列=以前宣言したもののみ再試行)

mspbotsfleet_release_host

このテナントのホスト所有を放棄する (ホスト自体は削除しない) (冪等)

host_id(必須)

ホスト一覧はフル取得後にメモリ内でフィルタ・ソート・ページングされます。Fleet 側のデータは15秒キャッシュされ、所有情報はキャッシュせずにリアルタイムで DB を照会します。 claim_hosts は {claimed, waiting, rejected} を返します。waiting は宣言済みだがまだ Fleet のホストが表われない状態、rejected は識別子が別テナントに宣言済みであることを示します。

スクリプト

Tool

説明

パラメータ

mspbotsfleet_list_scripts

テナントのスクリプトを一覧表示

page、per_page

mspbotsfleet_get_script

スクリプトの詳細 (本文を含む) を取得

script_id(必須)

mspbotsfleet_create_script

スクリプトを作成 (ファイル名は .sh/.ps1 で終わる必要があります)。非冪等 — 際しては、呼び出すたびに複数スクリプトが作られます

name(必須)、contents(必須、≤500KB)

mspbotsfleet_update_script

スクリプト本文を置換 (ファイル名は変更不可)

script_id(必須)、contents(必須)

mspbotsfleet_delete_script

スクリプトを削除 (全ホストに反映)

script_id(必須)

mspbotsfleet_run_script

ホスト上でスクリプトを実行

script_id(必須)、host_id(必須)、sync(既定false。true で最大60秒待機し結果を取得)

mspbotsfleet_get_script_result

実行結果を取得 (exit_code が null なら未報告)

execution_id(必須)

create_script/update_script は {id, name} のみ返します。タイムスタンプなどの他のフィールドは mspbotsfleet_get_script/mspbotsfleet_list_scripts で取得してください。

保存済みクエリ

Tool

説明

パラメータ

mspbotsfleet_list_queries

テナントのクエリを一覧表示

page、per_page

mspbotsfleet_get_query

クエリの詳細 (SQL 含む) を取得

query_id(必須)

mspbotsfleet_create_query

保存クエリを作成 (単一の SELECT / WITH…SELECT のみ許可)。非冪等 — 繰り返し呼び出すと複数のクエリが作られます

name(必須)、sql(必須)、description、platform(darwin/windows/linux)

mspbotsfleet_update_query

クエリを更新 (部分更新、変更するフィールドのみ渡す)

query_id(必須)、name、sql、description、platform

mspbotsfleet_delete_query

クエリとその集計データを削除

query_id(必須)

mspbotsfleet_run_query

ホストにクエリを実行し結果を待機 (≤45秒)

query_id(必須)、host_ids(任意、≤50台、省略時はテナントの先頭50台)

SQL 検証規則: 単一の SELECT または WITH … SELECT のみ許可され、末尾のセミコロンは自動的に除去されます。本文に ; があれば直接拒否されます。これらの検証はバックエンドで行われ、本サービスでは重複検証しません。

クイックスタート

Docker (推奨)

docker compose up --build

サーバーは http://localhost:8080 で起動します。

ローカル (uv)

uv sync
python -m mspbots_fleet_mcp

ヘルスチェック

curl http://localhost:8080/health
# {"status": "ok"}

ヘルスチェック エンドポイントには認証情報は不要です。

認証パラメータの説明 (Authentication)

/mcp へのすべてのリクエストには、次の HTTP ヘッダーを含める必要があります (MCP 呼び出し側から提供 — mspbots-agent-mcp / ticketqa-mcp と同様):

ヘッダー

型

必須

フィールドの説明

例

X-MSP-Token

string

是

Fleet Platform が発行したアクセス資格情報 (JWT ベアラートークン)。本サービスはそのまま下流リクエストの Authorization: Bearer <token> として転送します。

X-MSP-Token: <jwt-bearer-token>

X-MSP-Tenant-Id

string

是

テナント識別子。下流 API へは X_Tenant_ID ヘッダーに名称を変えて転送されます (テナントは JWT にも含まれています)。

X-MSP-Tenant-Id: <tenant-id>

X-MSP-Host

string

是

Fleet API が配置されているホスト。

X-MSP-Host: https://agent.mspbots.ai

この3つのヘッダーのいずれかが欠けていると 401 Unauthorized を返します。

下流の Fleet API 自体は認証失敗 (トークンの欠落/署名エラー/権限不足) に対して常に 403 を返します。401 ではありません — 401 はこのサービスのレイヤー (ゲートウェイヘッダーの欠落) でのみ返ります。

環境変数

Variable

Default

説明

MCP_HTTP_PORT

8080

待ち受けポート

MCP_HTTP_HOST

0.0.0.0

待ち受けホスト

MCP エンドポイント

POST http://localhost:8080/mcp

MCP クライアントは次のように接続します:

  • トランスポート: http (Streamable HTTP / SSE)

  • ヘッダー: X-MSP-Token、X-MSP-Tenant-Id、X-MSP-Host (すべて必須)

テスト例 (Test Example)

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-MSP-Token: <token>" \
  -H "X-MSP-Tenant-Id: <tenant-id>" \
  -H "X-MSP-Host: https://agent.mspbots.ai" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": { "name": "mspbotsfleet_list_hosts", "arguments": { "status": "online", "per_page": 10 } }
  }'

⚠️ このリポジトリは公開リポジトリです。実際の token / tenant id などの機密情報をコミットするファイルの内容に書き込まないでください。上記の <token> / <tenant-id> は単なるプレースホルダーです。

Related MCP Connectors

Related MCP Servers