mcpField
M
MCP Security Scans

MCP Security Scans

ローカル
github.com/mcp-research開発ツール226 週間前に更新

MCP Security Scans について

MCP Security Scansは、MCPサーバー設定を含むリポジトリを監査するチーム向けのPython自動化プロジェクトです。対象リポジトリをGitHub組織にフォークし、対応するGitHub Advanced Security機能を有効にしてレポートを作成します。

主な機能

  1. 01MCPサーバー設定の読み込み
  2. 02対象組織へのリポジトリのフォーク
  3. 03対応するGHAS機能の有効化
  4. 04Dependabot設定の確認
  5. 05フォークの分析とレポート作成
  6. 06GitHub APIエラーとレート制限への対応

活用シーン

  1. 01MCPサーバーのフォークにセキュリティスキャンを適用
  2. 02Dependabot設定のあるリポジトリを追跡
  3. 03処理したフォークの定期レポート作成

MCP 対応

これはリポジトリスキャンの自動化プロジェクトであり、MCPサーバーではありません。MCPサーバー設定を含むリポジトリを処理します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

MCP セキュリティスキャン

このプロジェクトには、mcp-agents-ai/mcp-agents-hub に登録されているリポジトリをフォークし、フォーク先で GitHub Advanced Security(GHAS)機能を有効にするプロセスを自動化する Python スクリプトが含まれています。

機能

  • 複数のリポジトリソースから MCP サーバーの設定を読み込めます。
  • 現在は mcp-agents-ai/mcp-agents-hub リポジトリに対応しています。
  • GitHub App を使用して GitHub に認証します。
  • 特定したソースリポジトリを、指定した対象組織(デフォルト:mcp-research)にフォークします。
  • フォークを作成する前に、既存のフォークがあるか確認します。
  • フォークで次の GHAS 機能を有効にします。
    • 依存関係スキャン(脆弱性アラートを使用)
    • セキュリティ修正の自動化
    • シークレットスキャン
    • デフォルト設定によるコードスキャン(リポジトリの言語が対応している場合)
  • 各フォークに .github/dependabot.yml ファイルが存在するか確認します。
  • 処理したリポジトリの総数と、Dependabot の設定があるリポジトリとないリポジトリの件数を報告します。
  • GitHub API エラーを処理し、レート制限の情報を表示します。

セットアップ

  1. このリポジトリをクローンします:

    git clone <your-repo-url>
    cd mcp-security-scans
    
  2. Python 仮想環境を作成します(推奨):

    python -m venv .venv
    source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
    
  3. 依存関係をインストールします:

    pip install -r requirements.txt
    pip install -r requirements-dev.txt
    
  4. GitHub App をセットアップします:

    • GitHub App を作成します(ユーザーアカウントまたは組織の下に作成できます)。
    • 対象組織(例:mcp-research)に必要な権限を付与します。
      • リポジトリの権限:
        • Administration:読み取りと書き込み(セキュリティ機能の有効化、フォークの作成に使用)
        • Contents:読み取りと書き込み(dependabot.yml の確認に使用。デフォルト設定にも必要な場合があります)
        • Metadata:読み取り専用(デフォルト)
        • Secret scanning alerts:読み取りと書き込み
        • Code scanning alerts:読み取りと書き込み
        • Dependabot alerts:読み取りと書き込み
      • 組織の権限:
        • Members:読み取り専用(アプリのインストールを確認するため)
    • 対象組織(mcp-research)にアプリをインストールします。
    • アプリの秘密鍵を生成し、その内容をコピーします。
    • アプリ ID を控えます。
  5. 環境変数を設定します: 次の環境変数をシェルで設定するか、.env ファイルに設定します(スクリプトによって自動的に読み込まれます)。

    export GH_APP_ID="YOUR_APP_ID"
    export GH_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\\nYOUR_KEY_CONTENT_HERE\\n-----END RSA PRIVATE KEY-----"
    

    YOUR_APP_ID をアプリの ID に置き換えてください。 秘密鍵の文字列を実際の .pem ファイルの内容に置き換えてください。シェルで直接設定する場合は改行(\\n)をそのまま維持し、.env ファイルに設定する場合は実際の改行を使用してください。

使用方法

環境変数 GH_APP_ID と GH_APP_PRIVATE_KEY が設定されていることを確認します。その後、このプロジェクトのルートディレクトリからスクリプトを実行します。

python -m src.process_mcp_repos # will process all repos found and fork them into the target org
python -m src.analyze --num-repos x # will analyze the forks and store found information into the forks repository properties
python -m src.report # will generate a report of the forks based on the information stored in the forks repository properties

オプション引数:

  • --target-org <org_name>:フォーク先の対象組織を指定します(デフォルトは mcp-research です)。

例:

# Assuming environment variables are set and the virtual environment is active
python -m src.process_mcp_repos --target-org my-testing-org

スクリプトは進行状況をコンソールに記録します。

新しい MCP サーバーソースの追加

MCP サーバーの設定を含む新しいリポジトリに対応するには:

  1. src/process_mcp_repos.py に、そのリポジトリから MCP サーバーの一覧を読み込む新しい関数を作成します。
def load_mcp_servers_from_my_custom_repo() -> list[Path]:
    """
    Loads MCP server configurations from your custom repository.

    Returns:
        A list of Path objects pointing to files containing server configurations.
    """
    repo_url = "https://github.com/your-org/your-repo.git"
    local_path = Path("./cloned_your_repo")
    json_dir_in_repo = Path("path/to/configs")

    # Clone or update the repository
    newly_cloned = clone_or_update_repo(repo_url, local_path)
    if newly_cloned:
        logging.info(f"Custom repository newly cloned to [{local_path}]")
    else:
        logging.info(f"Custom repository at [{local_path}] already exists and was updated")

    # Find configuration files in the repository
    json_dir = local_path / json_dir_in_repo
    if not json_dir.is_dir():
        logging.error(f"Config directory not found: [{json_dir}]")
        return []

    config_files = sorted(list(json_dir.glob("*.json")))  # Adjust the pattern as needed
    if not config_files:
        logging.warning(f"No configuration files found in [{json_dir}]")
        return []

    logging.info(f"Found [{len(config_files)}] configuration files in custom repository")
    return config_files
  1. 新しいローダー関数を MCP_SERVER_LOADERS リストに登録します。
# Register the custom loader
MCP_SERVER_LOADERS.append(load_mcp_servers_from_my_custom_repo)

メイン関数は、登録されているすべてのローダーを自動的に使用して MCP サーバーの設定を収集します。

GitHub ワークフロー

このリポジトリには、さまざまなタスクを自動化する GitHub ワークフローがいくつか含まれています。

  • MCP リポジトリの処理:リポジトリを自動的にフォークし、GHAS 機能を有効にします。
  • 毎日のセキュリティレポート:リポジトリのセキュリティレポートを毎日生成します。
  • リポジトリプロパティの作成:必要なリポジトリプロパティを設定します。
  • 新しい Issue で @rajbos にタグ付け:@rajbos が作成したものではない新しい Issue で、自動的に @rajbos にタグ付けし、報告された Issue に迅速に対応できるようにします。

テスト

python -m unittest tests.test_mcp_scan

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。