In this article
AIで脆弱なコードを検出・修正する:Claude DesktopとSnyk MCP Server
AIアシスタントを開発ワークフローに取り入れることで、セキュリティへの取り組み方を大きく変えられます。Claude DesktopはModel Context Protocol(MCP)に対応しており、外部ツールやデータソースに接続するためのネイティブインターフェイスを提供します。そのツールキットの1つがSnyk公式MCP Serverです。エンタープライズグレードのセキュリティスキャンを、Claudeとの会話に直接取り込めます。
Claude DesktopはClaude Codeとは異なります。ただし、Claude CodeをSnyk公式MCP Serverと連携する手順には、今回の流れと共通する部分が多くあります。

Snyk公式MCP Serverのセットアップ
Snyk MCP Serverは、Snyk CLIバージョン1.1298.0以降に含まれています。これはSnyk公式の実装で、包括的なセキュリティスキャン機能をMCP対応環境に統合できるよう設計されています。Snyk APIキーを利用する、ほかのオープンソース版Snyk MCP Serverもいくつかあります。
APIキーを取得する場合は、snyk.ioで無料アカウントを作成できます。今回は、Snyk公式MCP Serverを使用します。
前提条件
Claude DesktopでSnyk MCP Serverをセットアップする前に、次のものが必要です。
Snykアカウント:snyk.ioで無料アカウントを作成
Claude Desktop:claude.ai/downloadからダウンロードしてインストール
インストール手順
ドキュメントの説明にあるとおり、npmパッケージのインストールコマンドを実行してSnyk CLIをインストールできます。
npm install -g snyk
# OR
# yarn global add snykインストール後、Snykで認証します。
snyk authブラウザーが開くので、認証を完了してください。
Claude Desktopの設定
Snyk MCP ServerをClaude Desktopに接続するには、claude_desktop_config.jsonファイルを編集します。
macOSの場合:
~/Library/Application Support/Claude/claude_desktop_config.json,Windowsの場合:
%APPDATA%\Claude\claude_desktop_config.jsonUbuntuの場合:
/home/(your-username)/.config/Claude/claude_desktop_config.json
claude_desktop_config.jsonに次の設定を追加します。
{
"mcpServers": {
"snyk": {
"command": "snyk",
"args": [
"mcp",
"-t",
"stdio"
],
"env": {
"SNYK_CFG_ORG": "your-org-id-here"
}
}
}
}設定に関する注意事項:
SNYK_CFG_ORG環境変数は任意ですが、デフォルトの組織を設定するために推奨されます。MCP ServerのCLI環境変数は、MCP Serverの設定ファイルまたはシステム上で直接設定できます。
組織IDを指定しない場合、Snykはアカウント設定で指定されたデフォルトの組織を使用します。
設定ファイルを保存したら、Claude Desktopを再起動して変更を適用します。
利用可能なSnyk MCPツール
執筆時点で、Snyk MCP Serverには、Claudeがコードの保護に活用できる11種類のセキュリティスキャンツールが用意されています。
ツール | 説明 | 使用するタイミング |
|---|---|---|
snyk_aibom | PythonプロジェクトのAI部品表(AIBOM)をCycloneDX v1.6 JSON形式で生成 | コンプライアンスやセキュリティ分析のため、Pythonプロジェクト内のAIコンポーネントを一覧化するとき |
snyk_auth | ユーザーをSnykで認証 | Snykツールから認証が必要と通知されたとき |
snyk_auth_status | 現在のSnyk認証状態を確認 | CLIが認証済みか、どのユーザー/組織のコンテキストで認証されているかを確認するとき |
snyk_code_scan | ソースコードに対して静的アプリケーションセキュリティテスト(SAST)を実行 | ローカル開発中にすぐフィードバックを得たいときや、新しいコードを生成した後 |
snyk_container_scan | コンテナイメージ内のOSパッケージと依存関係の脆弱性をスキャン | イメージのビルド後や、デプロイ前のCI/CDパイプラインで |
snyk_iac_scan | Infrastructure as Codeファイルを分析し、セキュリティ設定の不備を検出 | 安全でないクラウドデプロイを防ぐため、IaCの作成中やCI/CDで |
snyk_logout | 現在のSnykアカウントからログアウト | アカウントを切り替えるときや、認証状態をリセットするとき |
snyk_sbom_scan | 既存のSBOMファイルを分析して脆弱性を検出 | SBOMの生成後や、サードパーティソフトウェアを評価するとき |
snyk_sca_scan | プロジェクトを分析し、オープンソースの脆弱性やライセンス上の問題を検出 | 変更をコミットする前のローカル開発中 |
snyk_trust | フォルダーを信頼済みにして、Snykによるスキャンを許可 | 明示的な信頼設定が必要なディレクトリをスキャンする前 |
snyk_version | インストール済みのSnyk CLIバージョンを表示 | 互換性の確認や、問題を報告するとき |
Claude Desktopで脆弱性を修正する
このデモでは、OWASPプロジェクトリーダーadeyosemanputraのpyGoatリポジトリをクローンしました。このプロジェクトには、教育目的で十分に文書化された脆弱性が意図的に含まれています。
コードベースをスキャンする
Snyk MCP Serverを設定したら、Claudeにプロジェクトのスキャンを依頼するだけです。

User: Please run a code scan: /home/owler/Documents/Snyk/snyk-mcp-demos/pygoatClaudeはsnyk_auth_statusツールで認証状態を確認し、スキャン対象のパスを「信頼」するための承認を求めるツールを実行します。

次に、Claudeはプロジェクトディレクトリに対してsnyk_code_scanを実行します。結果には次の内容が含まれます。
検出された問題の合計数
深刻度別の内訳(高、中、低)
ファイルパスと行番号を含む具体的な脆弱性の詳細
各セキュリティ問題の説明
pyGoatリポジトリのスキャンでは、コード上の問題が102件検出されました。
深刻度「高」の脆弱性:16件
深刻度「中」の脆弱性:44件
深刻度「低」の脆弱性:42件

深刻度の高い主な問題には、SQLインジェクション、コードインジェクション、コマンドインジェクション、パストラバーサル、XML外部実体(XXE)インジェクション、デシリアライゼーションの脆弱性、ハードコードされたシークレットが含まれていました。
AIによる脆弱性の修正
Claudeに特定の脆弱性の修正を依頼すると、その真価が発揮されます。たとえば、深刻度の高いSQLインジェクションの脆弱性がある場合は、次のように依頼します。
User: There's a SQL Injection vulnerability at introduction/views.py, line 871.
Can you fix this vulnerability and then re-scan to show that it is fixed?
この脆弱性を修正して、再スキャンで修正されたことを確認できますか?
Claudeは次の処理を行います。
脆弱なコードを調査し、filesystem MCPの
read_fileツールを使って、コンテキストを把握します。根本原因を特定します(この場合、サニタイズされていないユーザー入力がSQLクエリに直接連結されています)。
パラメーター化クエリを使って修正を適用します。

# BEFORE (vulnerable):
sql_query = "SELECT * FROM introduction_sql_lab_table WHERE id='"+name+"'AND password='"+password+"'"
user = sql_lab_table.objects.raw(sql_query)
# AFTER (secure):
sql_query = "SELECT * FROM introduction_sql_lab_table WHERE id=%s AND password=%s"
user = sql_lab_table.objects.raw(sql_query, [name, password])Snykで再スキャンを実行して修正を検証します。脆弱性の数が102件から101件に減少し、SQLインジェクションが結果に表示されなくなったことを確認します(新たな脆弱性は追加されず、以前に検出された脆弱性が解消されたことを意味します)。
これが新しいDevSecOpsのパラダイムなのでしょうか?
この連携は、最新のAIネイティブな開発ワークフローにセキュリティを組み込む方法を示しています。セキュリティを切り離された、後回しになりがちな課題とするのではなく、脆弱性の検出と修正を、自然な開発上のやり取りの一部にできます。
Claude Desktopの対話型インターフェイスとSnyk MCP Serverを組み合わせることで、セキュリティの問題を自然言語による簡単なやり取りで解決できます。
包括的なスキャンで検出
AI支援の分析で理解
コンテキストに応じたパッチで修正
自動再スキャンで検証
これらすべてを、開発者が普段使っている同じインターフェイス内で実行できます。コンテキストの切り替えを減らし、セキュリティ問題の発見から修正までのフィードバックループを加速します。
Snyk公式MCP Serverでできること
MCPの普及が進み、MCP Serverを開発するセキュリティツールが増えるにつれて、脆弱性を修正するだけでなく、次のことも行える標準的なAIアシスタントが実現すると期待できます。
再発を防ぐセキュリティテストを生成
セキュリティ修正を反映するようドキュメントを更新
複雑な問題を手動でレビューするためのチケットを作成
脆弱性と修正方法を説明し、セキュリティトレーニングを提供

MCPプロトコルはモジュール式のため、ほかのサーバーが提供するツールとの相互運用性を保ちながら、これらの機能を個別に進化させられます。オープンソースでオンライン公開されている、サイバーセキュリティ関連のMCP Serverについてもいくつか紹介しました。こちらをご覧ください。
AIアシスタントは、定型的でよく知られた修正を得意とします。その間、人間は創造的な問題解決が必要な新たなセキュリティ課題に注力できます。
Secure Developer ProgramでSnykの利用制限を回避
プロジェクトの開発とセキュリティ対策に積極的に取り組んでいると、SnykのFreeプランには月間テスト数の上限があることに気づくでしょう。オープンソーススキャンは400件、コード分析は100件、Infrastructure as Codeは300件、コンテナスキャンは100件です。複数のプロジェクトに取り組んだり、セキュリティ修正を頻繁に繰り返したりする開発者にとって、この上限はボトルネックになる可能性があります。特に、先ほど紹介したスキャン、修正、再スキャンのワークフローを実行する場合はなおさらです。
しかし、朗報です。オープンソースプロジェクトを開発しているなら、こうした制限をすべて回避できます。
SnykのSecure Developer Programに参加すると、オープンソースのメンテナーは利用制限のないSnyk Enterpriseライセンスをフルに利用できます。つまり、すべてのSnyk製品でスキャンが無制限になります。コードベースの強化中に月間上限を心配する必要はありません。
Secure Developer Programのメンバーが利用できる内容:
オープンソースプロジェクトすべてを対象とした無制限のエンタープライズグレードのセキュリティスキャン
制限なしでSnykの全機能を利用
READMEに掲載できる、Snykのセキュリティ認定バッジ
SnykのDiscordサーバーを通じたコミュニティサポート
CI/CDパイプラインへのSnyk導入に関する専任サポート
また、オープンソースプロジェクトはキャリア形成においてますます重要になっています。採用担当者は候補者の評価にGitHubプロフィールを定期的に確認します。包括的なセキュリティツールを導入していれば、業界のベストプラクティスに従って、本番環境に対応できるコードを書いていることを示せます。
申請手続きは簡単です。READMEにSnykへのリンクを追加し、プロジェクトのロゴの掲載を許可することで、Fortune 500企業がコードの保護に利用しているものと同じエンタープライズ向けセキュリティプラットフォームを利用できます。
制限なくプロジェクトを保護しませんか?Secure Developer Programに申請すると、開発スキルとセキュリティの専門知識の両方をアピールできるポートフォリオの構築を始められます。