Preflight

Scans an MCP server for security gaps before your agent connects. Free tier, no signup.

使うべきか

品質と安全性

A
説明の品質
95%
スキーマの完全性
88%
命名の品質
85%
ポイズニングのリスク
80%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'check_output' description contains placeholder textcheck_output 内
  • INFOTool description contains placeholder or incomplete textcheck_output 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~836トークン数(ツール定義)
~946 B一般的なレスポンスサイズ
注意への影響は中程度(128k コンテキストの 0.65%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "preflight": {
      "url": "https://preflight.allthepossibles.com/mcp"
    }
  }
}

リモートエンドポイント

https://preflight.allthepossibles.com/mcpstreamable-http

できること

ツール一覧

ツール(4)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢scan_mcp_server(url, serverName, tools)

Check an MCP server for real risk signals before trusting it: unauthenticated transport, capability overreach (filesystem/shell/credential access with no scoping), and known-bad signatures. Pass a live server URL, or a manifest of tool definitions if the server isn't reachable over HTTP. Semantic prompt-injection detection runs too if a Pro API key is sent as an Authorization: Bearer header, see /docs.

入力スキーマ

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Live MCP server endpoint (Streamable HTTP transport)"
    },
    "serverName": {
      "type": "string"
    },
    "tools": {
      "type": "array",
      "description": "Tool definitions to scan directly, if not probing a live URL",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "inputSchema": {
            "type": "object"
          }
        },
        "required": [
          "name"
        ]
      }
    }
  }
}
🟢scan_content(url, content)

Check a document or web page for hidden instructions before an agent reads, summarizes, or acts on it: invisible Unicode, obfuscated payloads, and (on Pro) a semantic pass for prompt-injection phrasing aimed at the model instead of the human reader. Pass either a URL to fetch, or raw text you already have.

入力スキーマ

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "A page to fetch and scan"
    },
    "content": {
      "type": "string",
      "description": "Raw text to scan directly, if not fetching a URL"
    }
  }
}
🟢scan_extension(marketplaceId, skillContent, scriptContents)

Check a VS Code extension or a Claude Skill before installing or trusting it. For a VS Code extension (which runs with full Node.js access and no permission model to scope): publisher domain-verification status weighed against install count, and known-bad-signature checks on its description. For a Claude Skill: hidden-instruction and obfuscated-payload detection on the SKILL.md body (the same engine scan_content uses), unscoped or credential-referencing tool grants in its allowed-tools/disallowed-tools frontmatter, inline shell execution baked into the file itself, and pattern matching on any bundled script files for credential-exfiltration signatures. Semantic prompt-injection detection on a skill's body runs too on Pro.

入力スキーマ

{
  "type": "object",
  "properties": {
    "marketplaceId": {
      "type": "string",
      "description": "VS Code Marketplace id, e.g. \"nrwl.angular-console\""
    },
    "skillContent": {
      "type": "string",
      "description": "A Claude Skill's SKILL.md content, pasted directly"
    },
    "scriptContents": {
      "type": "object",
      "description": "Optional: bundled script file contents to check alongside a skill, filename -> content"
    }
  }
}
🟢check_output(output, expectedFields)

Check a structured output you're about to return or act on for degenerate-answer patterns a schema check can't see: invalid JSON, a placeholder value ('TBD', 'N/A', 'unknown') where a real answer should be, an array of byte-identical items (a common symptom of a loop that never advanced), or an expected field that's missing or empty. Schema validity and answer quality are different guarantees, call this before trusting your own output, not just after validating it parses.

入力スキーマ

{
  "type": "object",
  "properties": {
    "output": {
      "description": "The output to check, a JSON string, or an already-parsed value"
    },
    "expectedFields": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional: top-level field names expected to be present and non-empty"
    }
  },
  "required": [
    "output"
  ]
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 4 件