Semgrep MCP Server

公式

AIエージェントがSemgrepでコードをセキュアにできるようにします。

ドキュメント

⚠️ Semgrep MCPサーバーはスタンドアロンリポジトリからメインの semgrep リポジトリへ移行しました! ⚠️

このリポジトリは非推奨となり、Semgrep MCPサーバーの今後のアップデートは公式の semgrep バイナリを通じて提供されます。

Semgrep logo

Documentation Join Semgrep community Slack Follow on LinkedIn Follow @semgrep on X

Semgrep MCPサーバー

Add MCP Server semgrep to LM Studio Install in Cursor Install in VS Code UV Install in VS Code Docker Install in VS Code semgrep.ai PyPI Docker Install in VS Code Insiders Install in VS Code Insiders

Semgrepを使用してコードのセキュリティ脆弱性をスキャンするためのModel Context Protocol (MCP)サーバーです。Vibe Codingを安全に! 😅

Model Context Protocol (MCP)は、Cursor、VS Code、WindsurfなどのLLM、エージェント、IDE、またはMCPをサポートするあらゆるものが、専門的な支援を受け、コンテキストを取得し、ツールの力を活用するための標準化されたAPIです。Semgrepは、多くの言語を意味的に理解し、5,000以上のルールを備えた高速で決定論的な静的解析ツールです。🛠️

[!NOTE] このベータプロジェクトは活発に開発中です。フィードバック、バグ報告、機能リクエスト、コードをお待ちしています。#mcp コミュニティSlackチャンネルにご参加ください!

目次

はじめに

uvを使用して、PythonパッケージをCLIコマンドとして実行します:

uvx semgrep-mcp # see --help for more options

または、Dockerコンテナとして実行します:

docker run -i --rm ghcr.io/semgrep/mcp -t stdio

Cursor

mcp.jsonの例

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"],
      "env": {
        "SEMGREP_APP_TOKEN": "<token>"
      }
    }
  }
}

.cursor/rulesに指示を追加して自動的に使用します:

Always scan code generated using Semgrep for security vulnerabilities

ChatGPT

  1. コネクタ設定ページ(直接リンク)に移動します
  2. 接続に Semgrep名前を付けます
  3. MCPサーバーURLhttps://mcp.semgrep.ai/sse に設定します
  4. 認証No authentication に設定します
  5. このアプリケーションを信頼するチェックボックスをオンにします
  6. 作成をクリックします

詳細は公式ドキュメントをご覧ください。

ホステッドサーバー

[!WARNING] mcp.semgrep.aiは実験的なサーバーであり、予期せず中断する可能性があります。急速に新機能が追加されます。🚀

Cursor

  1. Cmd + Shift + JでCursor設定を開きます
  2. MCPツールを選択します
  3. 新しいMCPサーバーをクリックします。
{
  "mcpServers": {
    "semgrep": {
      "type": "streamable-http",
      "url": "https://mcp.semgrep.ai/mcp"
    }
  }
}

デモ

API

ツール

LLMがアクションを実行し、決定論的な計算を行い、外部サービスと対話できるようにします。

コードのスキャン

  • security_check: コードのセキュリティ脆弱性をスキャンします
  • semgrep_scan: 指定された設定文字列でコードファイルのセキュリティ脆弱性をスキャンします
  • semgrep_scan_with_custom_rule: カスタムSemgrepルールを使用してコードファイルをスキャンします

コードの理解

  • get_abstract_syntax_tree: コードの抽象構文木(AST)を出力します

クラウドプラットフォーム(ログインとSemgrepトークンが必要)

  • semgrep_findings: Semgrep AppSecプラットフォームAPIからSemgrepの検出結果を取得します

メタ

  • supported_languages: Semgrepがサポートする言語のリストを返します
  • semgrep_rule_schema: 最新のSemgrepルールJSONスキーマを取得します

プロンプト

一般的なLLMインタラクションを標準化するための再利用可能なプロンプト。

  • write_custom_semgrep_rule: Semgrepルールの作成を支援するプロンプトを返します

リソース

LLMにデータとコンテンツを公開します

  • semgrep://rule/schema: JSONスキーマを使用したSemgrepルールYAML構文の仕様
  • semgrep://rule/{rule_id}/yaml: Semgrepレジストリからの完全なSemgrepルール(YAML形式)

使用方法

このPythonパッケージはsemgrep-mcpとしてPyPIに公開されており、pippipxuvpoetry、または任意のPythonパッケージマネージャーでインストールして実行できます。

$ pipx install semgrep-mcp
$ semgrep-mcp --help

Usage: semgrep-mcp [OPTIONS]

  Entry point for the MCP server

  Supports both stdio and sse transports. For stdio, it will read from stdin
  and write to stdout. For sse, it will start an HTTP server on port 8000.

Options:
  -v, --version                Show version and exit.
  -t, --transport [stdio|sse]  Transport protocol to use (stdio or sse)
  -h, --help                   Show this message and exit.

標準入出力(stdio)

stdioトランスポートは、標準入出力ストリームを介した通信を可能にします。これは、ローカル統合やコマンドラインツールに特に役立ちます。詳細は仕様をご覧ください。

Python

semgrep-mcp

デフォルトでは、Pythonパッケージは stdio モードで実行されます。標準入出力ストリームを使用しているため、ツールが出力なしでハングしているように見えますが、これは想定どおりです。

Docker

このサーバーはGithubのContainer Registry(ghcr.io/semgrep/mcp)に公開されています

docker run -i --rm ghcr.io/semgrep/mcp -t stdio

デフォルトでは、Dockerコンテナは SSE モードであるため、イメージ名の後に -t stdio を含め、インタラクティブモードで実行するために -i を指定する必要があります。

ストリーミングHTTP

ストリーミングHTTPは、HTTP POSTリクエストを介したJSON RPC経由のストリーミングレスポンスを可能にします。詳細は仕様をご覧ください。

デフォルトでは、サーバーはクライアント接続のために127.0.0.1:8000/mcpでリッスンします。これを変更するには、FASTMCP_*環境変数を設定します。クライアントが接続するにはサーバーが実行中である必要があります。

Python

semgrep-mcp -t streamable-http

デフォルトでは、Pythonパッケージは stdio モードで実行されるため、-t streamable-http を含める必要があります。

Docker

docker run -p 8000:0000 ghcr.io/semgrep/mcp

サーバー送信イベント(SSE)

[!WARNING] MCPコミュニティでは、これはレガシートランスポートプロトコルと見なされており、実際には後方互換性を目的としています。ストリーミングHTTPが推奨される代替手段です。

SSEトランスポートは、クライアントからサーバー、サーバーからクライアントへの通信にServer-Sent Eventsを使用したサーバーからクライアントへのストリーミングを可能にします。詳細は仕様をご覧ください。

デフォルトでは、サーバーはクライアント接続のために127.0.0.1:8000/sseでリッスンします。これを変更するには、FASTMCP_*環境変数を設定します。クライアントが接続するにはサーバーが実行中である必要があります。

Python

semgrep-mcp -t sse

デフォルトでは、Pythonパッケージは stdio モードで実行されるため、-t sse を含める必要があります。

Docker

docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse

Semgrep AppSecプラットフォーム

オプションで、Semgrep AppSecプラットフォームに接続するには:

  1. ログインまたはサインアップします
  2. 設定からトークンを生成します
  3. トークンを環境変数に追加します:
    • CLI(export SEMGREP_APP_TOKEN=<token>

    • Docker(docker run -e SEMGREP_APP_TOKEN=<token>

    • MCP設定JSON

    "env": {
      "SEMGREP_APP_TOKEN": "<token>"
    }

[!TIP] 必要に応じてサポートにお問い合わせください。☎️

統合

Cursor IDE

次のJSONブロックを ~/.cursor/mcp.json グローバルまたは .cursor/mcp.json プロジェクト固有の設定ファイルに追加します:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

cursor MCP settings

詳細はcursorドキュメントをご覧ください。

VS Code / Copilot

最も迅速なインストール方法は、このREADMEの上部にあるインストールボタンをクリックすることです。

手動設定

次のJSONブロックをVS Codeのユーザー設定(JSON)ファイルに追加します。これを行うには、Ctrl + Shift + Pを押して Preferences: Open User Settings (JSON) と入力します。

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "uvx",
        "args": ["semgrep-mcp"]
      }
    }
  }
}

オプションで、ワークスペース内の .vscode/mcp.json というファイルに追加することもできます:

{
  "servers": {
    "semgrep": {
      "command": "uvx",
        "args": ["semgrep-mcp"]
    }
  }
}

Dockerの使用

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "ghcr.io/semgrep/mcp",
          "-t",
          "stdio"
        ]
      }
    }
  }
}

詳細はVS Codeドキュメントをご覧ください。

Windsurf

次のJSONブロックを ~/.codeium/windsurf/mcp_config.json ファイルに追加します:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

詳細はWindsurfドキュメントをご覧ください。

Claude Desktop

こちらは、Claude Desktopがこのサーバーを使用してカスタムルールを作成する様子を示す短いビデオです。

次のJSONブロックを claude_desktop_config.json ファイルに追加します:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

詳細はAnthropicドキュメントをご覧ください。

Claude Code

claude mcp add semgrep uvx semgrep-mcp

詳細はClaude Codeドキュメントをご覧ください。

OpenAI

公式ドキュメントをご覧ください:

Agents SDK

async with MCPServerStdio(
    params={
        "command": "uvx",
        "args": ["semgrep-mcp"],
    }
) as server:
    tools = await server.list_tools()

詳細はOpenAI Agents SDKドキュメントをご覧ください。

カスタムクライアント

Python SSEクライアントの例

完全な例はexamples/sse_client.pyをご覧ください

from mcp.client.session import ClientSession
from mcp.client.sse import sse_client


async def main():
    async with sse_client("http://localhost:8000/sse") as (read_stream, write_stream):
        async with ClientSession(read_stream, write_stream) as session:
            await session.initialize()
            results = await session.call_tool(
                "semgrep_scan",
                {
                    "code_files": [
                        {
                            "path": "hello_world.py",
                            "content": "def hello(): print('Hello, World!')",
                        }
                    ]
                },
            )
            print(results)

[!TIP] 一部のクライアントライブラリは URL: http://localhost:8000/sse を必要とし、 他のものは HOST: localhost:8000 のみを必要とします。 ウェブブラウザで URL を試して、サーバーが実行中でネットワークの問題がないことを確認してください。

詳細は公式SDKドキュメントをご覧ください。

貢献、コミュニティ、ソースからの実行

[!NOTE] フィードバック、バグ報告、機能リクエスト、コードをお待ちしています。#mcp コミュニティSlackチャンネルにご参加ください!

MCPサーバーをソースコードから実行する方法の詳細については、CONTRIBUTING.mdをご覧ください。

類似ツール 🔍

コミュニティプロジェクト 🌟

MCPサーバーレジストリ

Semgrep Server MCP server

Semgrepチームが❤️を込めて作成