mcpField
V
Valca

Valca

ローカル
valca.ioセキュリティ23 週間前に更新

Valca について

ValcaはAIコーディング環境向けの読み取り専用セキュリティスキャナーです。コード、IaC、エージェント設定を検査し、重大または高リスクの検出がある場合はClaude Codeによる書き込み前にブロックできます。中核のスキャンはオフラインで動作し、依存関係の確認ではパッケージ名とバージョンを外部へ送信します。

主な機能

  1. 01コード、IaC、エージェント設定のスキャン
  2. 02書き込み前に重大・高リスクの検出をブロック
  3. 03シークレット、プロンプトインジェクション、MCPセキュリティのルール
  4. 04スキャン履歴、ログ、統計の提供
  5. 05JSON形式のスキャン結果

活用シーン

  1. 01AI生成ファイルの書き込み前に安全性を確認
  2. 02Docker、Terraform、CI設定をスキャン
  3. 03エージェントのプロンプトとツール処理コードを確認
  4. 04ローカルの検出結果とルール頻度を調査

MCP 対応

MCPサーバー設定、ツールの説明、ハンドラーに関係するコードをスキャンできます。MCPサーバーではなく、MCPクライアントにツールを公開しません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"pranlabs-valca": {
"command": "uvx",
"args": [
"valca"
]
}
}
}
起動コマンドuvx valca

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypivalca0.6.1

ツール

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

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

詳細

Valca

AI コーディングセキュリティコパイロット — 生成時に安全でないコードをブロックします。

以前は vigilsec として公開されていました。 パッケージ名は valca になりました。valca コマンドと vigil コマンドのどちらも動作するため、既存のフックやスクリプトは変更せずに引き続き実行できます。

Valca は AI コーディングアシスタントが書き込むすべてのファイルを検査し、CRITICAL または HIGH のセキュリティ上の問題が検出された場合、ファイルがディスクに書き込まれる前にブロックします。これはコミット後ではなく、生成時に動作する唯一のツールです。

AI writes file → valca scan → exit 2 → Claude Code blocks the write

問題

AI コーディングアシスタントは、学習データに含まれる最も一般的なパターンを再現します。そして、最も一般的なパターンは安全でないデフォルト設定です。

最も分かりやすい例は、既存の IaC スキャナー(Checkov、Trivy、Snyk、Semgrep)がすべて、データベースをインターネットに公開する docker-compose のポートバインドを見逃すことです。

ports:
  - "5432:5432"   # ← binds to 0.0.0.0, bypasses UFW, reachable from anywhere

正しい形式は "127.0.0.1:5432:5432" です。Valca はこれを検出します。他のツールでは検出できません。


インストール

pip install valca

Claude Code のフックを設定します(初回のみ):

valca init --global     # `valca init --global` also works

これで完了です。Claude Code が書き込むすべてのファイルは、保存前にスキャンされるようになります。有効にするには、Claude Code を再読み込みしてください。


ネットワークアクセス

Valca のコアスキャンは完全にオフラインで実行されます。パッケージには実行時依存関係が一切なく、エンジンがコード、ファイルパス、検出結果を外部に送信することもありません。

ただし、依存関係に脆弱性があるか、実在しないかの確認はオフラインでは不可能なため、3 つのルールはネットワークにアクセスします。マニフェスト(requirements.txt、package.json、ロックファイル)をスキャンすると、これらのルールはパッケージ名とバージョン文字列のみを以下に送信します。

ホスト使用するルール送信内容
api.osv.devVGL-PKG001(固定バージョンに既知の CVE がある場合)パッケージ名 + バージョン
pypi.orgVGL-PKG002/003/004(存在しない、古い、または疑わしいパッケージ)パッケージ名
registry.npmjs.orgVGL-PKG002/003/004パッケージ名

ソースコード、ファイルの内容、ファイルパス、スキャン結果が送信されることはありません。依存関係の一覧自体が機密情報にあたる場合は、.valcarc でこれらのルールを無効にすると、Valca は完全にオフラインで動作します。

disabled_rules = ["VGL-PKG001", "VGL-PKG002", "VGL-PKG003", "VGL-PKG004"]

使い方

# Scan a single file
valca scan docker-compose.yml

# Scan a directory
valca scan ./my-project/

# JSON output (for CI / dashboards)
valca scan ./my-project/ --format json

# SARIF output (for GitHub Advanced Security)
valca scan ./my-project/ --format sarif > results.sarif

# Only report HIGH and above
valca scan ./my-project/ --severity HIGH

# Open feedback & waitlist form
valca feedback

これまでに検出された内容を確認します。 どちらのコマンドもローカルのスキャン履歴を読み取ります。データがマシンの外に送信されることはありません。

# Findings log — what was caught, where, and when
valca log                              # 20 most recent findings
valca log --severity CRITICAL          # only criticals
valca log --project api --since 2026-09-01
valca log --limit 100 --format json    # for dashboards

# Aggregate stats — rule frequency, severity mix, precision per rule
valca stats
valca stats --format json

valca stats は各ルールが検出された回数と、抑制された回数を報告します。そのため、ご自身のコードベースで精度が低いルールを、推測ではなく確認できます。

終了コード:

コード意味
0検出事項なし — 書き込みを続行
1警告レベルの検出事項のみ(MEDIUM / LOW / INFO)
2CRITICAL または HIGH を検出 — Claude Code が書き込みをブロック

動作の確認

GitHub Actions の脆弱なワークフローを、書き込み時にブロックします:

Valca が Comment-and-Control 攻撃をブロックする様子

2026 年 4 月、研究者は、3 つの主要な AI コーディングエージェント(Claude Code、Gemini CLI、Copilot)が、GitHub の issue に含まれる非表示の HTML コメントを介して乗っ取られ、ANTHROPIC_API_KEY と GITHUB_TOKEN を外部に流出させる可能性があることを発見しました。CVSS 9.4。特別なアクセス権は不要です。

Valca は、脆弱なワークフロー(issues: トリガー + AI エージェント + env 内の API キー)を git に到達する前に検出します。これを実現する唯一のツールです。

→ 詳しい解説:GitHub issue のコメントから API キーを盗む攻撃


ルール

27 カテゴリーにわたる 116 のルール。 すべて組み込みで、標準ライブラリのみを使用し、実行時依存関係は一切ありません。

このカタログはルールレジストリから生成されるため、リリース済みのエンジンとの不一致は発生しません。

シークレットと認証情報の露出(14 ルール)
ルール深刻度検出対象
VGL-I001CRITICALeval() または exec() — コードインジェクションのリスク
VGL-I002HIGHshell=True を指定した subprocess
VGL-I003HIGHos.system() の呼び出し
VGL-S001CRITICALAWS アクセスキーのハードコード
VGL-S002CRITICALパスワードのハードコード
VGL-S003CRITICALAPI キーのハードコード
VGL-S004CRITICALベアラートークンのハードコード
VGL-S005CRITICALJWT シークレットのハードコード
VGL-S006CRITICALソースコード内の PEM 秘密鍵
VGL-S007CRITICAL認証情報が埋め込まれたデータベース URL
VGL-S008CRITICALStripe のライブ用シークレットキー
VGL-S009CRITICALSlack トークンのハードコード
VGL-S010CRITICALプロバイダー API キーのハードコード(OpenAI / GitHub / GitLab / Google)
VGL-S012HIGHセキュリティ上重要な設定に安全でないプレースホルダーのデフォルト値を指定
GitHub Actions — AI エージェントの攻撃対象領域(13 ルール)
ルール深刻度検出対象
VGL-GHA001CRITICALPwn Request — 攻撃者が制御できるチェックアウト参照を使用した pull_request_target
VGL-GHA002CRITICALスクリプトインジェクション — run: ステップ内のユーザー制御可能なコンテキスト式
VGL-GHA004HIGHrun: ステップ内でシークレットを直接展開(プロセステーブルから見える状態)
VGL-GHA005MEDIUM明示的な permissions ブロックがないワークフロー(暗黙的な GITHUB_TOKEN の権限範囲)
VGL-GHA006HIGHpull_request ワークフローでのキャッシュ使用(キャッシュポイズニング攻撃の経路)
VGL-GHA007HIGHpull_request トリガーでのセルフホストランナー(ランナーが永続化するリスク)
VGL-GHA008HIGHref/repo の検証がない workflow_run トリガー
VGL-GHA009CRITICAL信頼されていない入力を受け取るトリガー(issues/pull_request_target)に接続された、環境変数に API キーを持つ AI エージェント
VGL-GHA010HIGHフォーク元のチェックがない pull_request_target 上の AI エージェント
VGL-GHA011CRITICAL信頼されていない GitHub イベントデータが AI エージェントのプロンプトに展開される
VGL-GHA012HIGH--allowedTools による制限がない、信頼されていないトリガー上の AI エージェント
VGL-GHA013MEDIUM--max-turns による上限がない、信頼されていないトリガー上の AI エージェント
VGL-GHA014HIGH信頼されていないトリガー上の AI エージェントに contents: write 権限を付与
AI エージェント — プロンプトインジェクション(9 ルール)
ルール深刻度検出対象
VGL-PI001CRITICALユーザー入力が LLM のシステムプロンプトに展開される
VGL-PI002HIGH生の HTTP リクエスト本文が LLM メッセージの内容として使用される
VGL-PI003HIGHユーザーデータを含むプロンプトの構築に文字列フォーマットを使用
VGL-PI004MEDIUMサニタイズせずにツールの出力を会話に追加
VGL-PI005CRITICALHTTP リクエストデータがサニタイズされずに LLM プロンプトへ流入
VGL-PI006CRITICALLLM の応答が subprocess、exec、または eval に渡される
VGL-PI007HIGHWebhook ペイロードが AI エージェントに直接渡される
VGL-PI008HIGHデータベースの内容がプロンプトに展開される — 二次インジェクション
VGL-PI009HIGHユーザー入力がベクトルストアに書き込まれる — メモリポイズニング
Dockerfile の強化(8 ルール)
ルール深刻度検出対象
VGL-DF001HIGHDockerfile が root で実行される — USER ディレクティブがない
VGL-DF002MEDIUMDockerfile がタグを固定していない :latest ベースイメージを使用
VGL-DF003HIGHDockerfile の ENV または ARG レイヤーにシークレットを埋め込む
VGL-DF004HIGHDockerfile の RUN 命令で curl
VGL-DF005HIGHDockerfile の RUN による取得処理で TLS 検証を無効化
VGL-DF006MEDIUMローカルファイルに ADD を使用 — 代わりに COPY を使用
VGL-DF007HIGH.dockerignore なしで COPY . を使用 — .git、.env、認証情報が漏えいするリスク
VGL-DF008MEDIUMDockerfile で全ユーザーに書き込み可能な権限を設定(chmod 777)
Docker Compose(7 ルール)
ルール深刻度検出内容
VGL-D001CRITICALDocker のパブリックポートのバインド — UFW を迂回し、サービスをインターネットに公開します
VGL-D002HIGHdocker-compose の environment ブロックにハードコードされたシークレットが含まれています
VGL-D003CRITICALDocker コンテナが特権モードで実行されています
VGL-D004HIGHDocker コンテナがホストネットワークモードを使用しています
VGL-D005CRITICALDocker ソケットがコンテナにマウントされています — コンテナからの完全な脱出につながる経路です
VGL-D006HIGH機密性の高いホストパスがコンテナにマウントされています
VGL-D007HIGHAWS 認証情報ディレクトリ(~/.aws)がコンテナにマウントされています — すべてのプロファイルが露出します
Terraform(7 ルール)
ルール深刻度検出内容
VGL-TF001CRITICALTerraform のシークレット値がハードコードされています
VGL-TF002HIGHパブリックアクセスが有効になっている Terraform リソース
VGL-TF003HIGHTerraform で暗号化が明示的に無効化されています
VGL-TF004CRITICALEC2 インスタンスで IMDSv1 が有効です — SSRF によるメタデータ窃取に対して脆弱です
VGL-TF005HIGHTerraform の S3 ステートバックエンドが暗号化なしで保存されています
VGL-TF006MEDIUM管理対象リソースの削除保護が無効化されています
VGL-TF007MEDIUMTerraform 管理対象リソースの監査ログが無効化されています
デシリアライズとパストラバーサル(5 ルール)
ルール深刻度検出内容
VGL-DESER001CRITICAL安全でないデシリアライズ — pickle.loads / pickle.load
VGL-DESER002HIGH安全でない YAML デシリアライズ — SafeLoader を使わない yaml.load()
VGL-DESER003HIGH安全でないデシリアライズ — 信頼できないデータを使った marshal.loads
VGL-PATH001HIGHパストラバーサル — 検証せずにユーザー入力をファイルの open またはパスの join に渡しています
VGL-SSTI001CRITICALサーバーサイドテンプレートインジェクション — ユーザー入力を Jinja2 テンプレートとしてレンダリングしています
MCP サーバーのセキュリティ(5 ルール)
ルール深刻度検出内容
VGL-MCP001CRITICALMCP ツールの説明にプロンプトインジェクションが埋め込まれています
VGL-MCP002HIGHユーザーが制御するデータから MCP ツールの説明が構築されています
VGL-MCP003HIGHサンドボックスなしで MCP ツールのハンドラー内でシェルを実行しています
VGL-MCP004HIGHMCP サーバーの設定で、バージョンが固定されていないパッケージまたは平文 HTTP エンドポイントが使用されています
VGL-MCP005HIGHMCP の fetch ツールが、許可リストのないエージェント制御の URL を受け取ります
ウェブアプリケーションのセキュリティ(5 ルール)
ルール深刻度検出内容
VGL-CORS001HIGHCORS ワイルドカード — allow_origins=['*']
VGL-SQL001CRITICALSQL インジェクション — f-string または文字列連結でクエリを構築しています
VGL-SQL002CRITICALSQL インジェクション — f-string を使った ORM の raw query
VGL-SSL001HIGHSSL 検証が無効化されています
VGL-SSRF001CRITICALSSRF — ユーザーが制御する URL を使った HTTP 呼び出し
AI エージェント — 過剰な権限(4 ルール)
ルール深刻度検出内容
VGL-A001CRITICALLLM の出力がシェル実行にパイプされています
VGL-A002HIGHハードコードされた自動承認により、人間が介在するプロセスが無効化されています
VGL-A003HIGH反復回数の上限がない、無制限のエージェントループ
VGL-A004HIGHLLM の応答が検証なしでディスクに書き込まれています
認証とセッション(4 ルール)
ルール深刻度検出内容
VGL-AUTH001CRITICALJWT の algorithm=none — 署名検証が迂回されます
VGL-AUTH002CRITICALJWT の verify_signature が無効化されています — あらゆるトークンが受け入れられます
VGL-AUTH003HIGHウェブフレームワークのシークレットキーが弱い、またはハードコードされています
VGL-AUTH004HIGHフレームワークのコードでデバッグモードが有効になっています
依存関係の整合性(4 ルール)
ルール重大度検出内容
VGL-PKG001CRITICALパッケージ監査(CVE・ハルシネーション・古さ・サプライチェーン)
VGL-PKG002CRITICALレジストリに存在しないパッケージ — ハルシネーションまたはスロップスクワッティングの標的
VGL-PKG003HIGHパッケージのバージョンが最新より大幅に古い — AI の学習データが古い
VGL-PKG004HIGHリリース数が少ない新規登録パッケージ — サプライチェーンのリスク
Kubernetes(4 ルール)
ルール重大度検出内容
VGL-K001CRITICAL特権コンテナまたはホスト名前空間へのアクセス
VGL-K002CRITICALKubernetes の securityContext で allowPrivilegeEscalation が有効
VGL-K003HIGHKubernetes の securityContext で危険な Linux ケーパビリティが追加されている
VGL-K004HIGHKubernetes マニフェストで機密性の高い hostPath ボリュームを使用
ロギングとデータ漏えい(4 ルール)
ルール重大度検出内容
VGL-LOG001HIGH機密データがログに書き込まれる(CWE-532)
VGL-LOG002HIGHHTTP レスポンス本文にエラーの詳細が漏えいする(CWE-209)
VGL-LOG003MEDIUM認証/セキュリティコンテキストで例外を黙って握りつぶす
VGL-LOG004MEDIUMCRLF インジェクションのリスク — 改行をサニタイズせずにユーザー制御入力をログに記録
Swift/iOS(4 ルール)
ルール重大度検出内容
VGL-SW001CRITICALSwift の文字列リテラルにハードコードされたシークレット
VGL-SW002HIGHSwift のネットワーキングコードで平文 HTTP URL を使用
VGL-SW003HIGH機密性の高い値を UserDefaults に書き込む(暗号化されていない)
VGL-SW004CRITICALURLSession デリゲートで SSL 証明書の検証を回避
依存関係の CVE スキャナー(3 ルール)
ルール重大度検出内容
VGL-DEP001HIGH脆弱な Python パッケージ(pip-audit)
VGL-DEP002HIGHnpm の重大な脆弱性(npm audit)
VGL-DEP003HIGHロックファイル内の脆弱なパッケージ(osv-scanner)
GitHub Actions — ワークフローの衛生管理(3 ルール)
ルール重大度検出内容
VGL-GH001HIGHGitHub Actions のシークレットが実行ステップで出力される(ログへの漏えい)
VGL-GH002HIGHGitHub Actions ワークフローに過剰な権限が設定されている
VGL-GH003HIGHGitHub Actions が変更可能なアクション参照(タグまたはブランチ)を使用
AI エージェント — 設定ファイル(2 ルール)
ルール重大度検出内容
VGL-AGENT001CRITICALAI エージェントの設定ファイルにシェル実行または情報窃取の指示が含まれている
VGL-AGENT002HIGHエージェントのコードで例外ハンドラーを通じて認証情報が漏えいする
JavaScript/TypeScript(2 ルール)
ルール重大度検出内容
VGL-JS001HIGHprocess.env のシークレットにハードコードされた文字列のフォールバックがある
VGL-JS004HIGH動的な引数を使った eval() または new Function()(CWE-95)
行レベルセキュリティ(2 ルール)
ルール重大度検出内容
VGL-RLS001CRITICALPostgreSQL の行レベルセキュリティが明示的に無効化されている
VGL-RLS002HIGHマルチテナント ORM クエリにユーザー/テナントのフィルターがない
クロスサイトスクリプティング(1 ルール)
ルール重大度検出内容
VGL-XSS001HIGHクロスサイトスクリプティング — 安全でない HTML インジェクション(CWE-79)
暗号技術(1 ルール)
ルール重大度検出内容
VGL-RAND001HIGHセキュリティ上重要な値に弱い乱数を使用(CWE-330)
IAM ポリシー(1 ルール)
ルール重大度検出内容
VGL-IAM001CRITICALIAM ポリシーの Action または Resource にワイルドカードがある
Python(1 ルール)
ルール重大度検出対象
VGL-PY001HIGH環境変数ガードなしのデバッグ用バイパス — 認証/セキュリティ条件が条件付きで無効化されています
シェルスクリプト(1 ルール)
ルール重大度検出対象
VGL-S011HIGHシークレット変数を subprocess/SSH にインラインで渡す処理(ps aux に漏れる可能性があります)
Trivy IaC ディープスキャン(1 ルール)
ルール重大度検出対象
VGL-T001HIGHTrivy IaC ディープスキャン — Dockerfile/Terraform の設定ミス
nginx(1 ルール)
ルール重大度検出対象
VGL-N001HIGHnginx の設定にセキュリティヘッダーがない、または TLS が脆弱

設定

プロジェクトのルートディレクトリ(または任意の祖先ディレクトリ)に .valcarc ファイルを配置します:

# .valcarc
disabled_rules = ["VGL-T001"]        # skip trivy scan for this project
min_severity   = "HIGH"              # only report HIGH and above
exclude_paths  = ["vendor", "legacy"]
telemetry      = false               # opt out of anonymous local telemetry

Valca はディレクトリツリーを上にたどり、最も近い .valcarc を探します(以前の .vigilrc という名前も引き続き読み込まれます)。子の設定は常に親の設定より優先されます。モノレポでは、ワークスペースのデフォルト設定に加えて、プロジェクトごとの上書き設定を配置できます。

インライン抑制 — 確認して許容した特定の行に対して使用します:

auto_approve = True  # vigil: ignore

# noqa(flake8)や # nosec(bandit)と同じ形式です。


オプトアウト

Valca は匿名でローカルのみのテレメトリを収集します。収集するのはルール ID、重大度、ファイル拡張子です。ファイルパス、コード、個人を特定できるデータは含まれません。~/.valca/events.jsonl に保存され、外部に送信されることはありません。以前の ~/.vigil/ にある履歴は自動的に移行されます。

恒久的にオプトアウトするには:

export VALCA_NO_TELEMETRY=1        # VIGIL_NO_TELEMETRY still works

または、.valcarc に次のように記述します:

telemetry = false

ルールの追加

# src/valca/rules/my_category.py
from pathlib import Path
from .base import Finding, Rule, Severity

class MyRule(Rule):
    id = "VGL-X001"
    name = "Descriptive rule name"
    severity = Severity.HIGH

    def applies_to(self, path: Path) -> bool:
        return path.suffix == ".yml"

    def check(self, path: Path) -> list[Finding]:
        findings = []
        for i, line in enumerate(path.read_text().splitlines(), 1):
            if "bad_pattern" in line:
                findings.append(Finding(
                    rule_id=self.id,
                    severity=self.severity,
                    message="Found bad pattern",
                    file_path=path,
                    line=i,
                    snippet=line.strip(),
                    fix="Do this instead.",
                ))
        return findings

次に、src/valca/rules/__init__.py の DEFAULT_RULES に追加します。テストを書けば完了です。


GitHub Actions

アクション PranLabs/valca-action を使用します:

permissions:
  contents: read
  security-events: write

steps:
  - uses: actions/checkout@v7

  - uses: PranLabs/valca-action@v1
    with:
      severity: HIGH
      version: "0.6.0"    # pin for reproducible CI

  - uses: github/codeql-action/upload-sarif@v4
    if: always()
    with:
      sarif_file: valca-results.sarif
      category: valca

または、アクションを使わずに直接呼び出します:

- run: pip install valca --quiet
- run: valca scan . --no-color
- run: valca scan . --format sarif > valca-results.sarif

検出結果は PR の差分上にインライン注釈として表示され、リポジトリの Security タブにも表示されます。


MCP サーバー

フックはエージェントをブロックします。MCP サーバーを使えば、エージェントから問い合わせできます。

pip install "valca[mcp]"
valca-mcp

任意の MCP クライアントに登録できます。Claude Code の場合は、claude mcp add valca -- valca-mcp を実行します。 ツールは 2 つあり、どちらも読み取り専用です:

ツール戻り値
scan(path)ファイルまたはディレクトリの検出結果:ルール、重大度、メッセージ、ファイル、行、推奨される修正
list_rules()すべてのルール ID、重大度、検出対象を含む全カタログ

編集、修正、書き込みを行うツールはありません。コードを変更できるスキャナーは新たな攻撃対象領域となります。それを検出するために VGL-MCP003 と VGL-MCP005 があります。

次の 3 つの制限は、設定可能な項目ではなく、組み込みの制限です:

  • スキャン範囲はルートディレクトリ内に限られます。 ルートディレクトリは valca-mcp の起動時のディレクトリ、または VALCA_MCP_ROOT が設定されている場合はそのディレクトリです。エージェントは scan の引数を選べるため、境界がなければ ~/.ssh まで移動し、与えられていないファイルシステムを調べる可能性があります。
  • パスはそのルートからの相対パスで返されます。 絶対パスには、ユーザー名やディレクトリ構成が含まれるためです。
  • 一致したソース行は返されません。 シークレットルールでは、その行自体がシークレットです。

設定内容にかかわらず、この経路ではテレメトリは無効です。.valcarc は引き続き適用され、disabled_rules、exclude_paths、min_severity はすべて有効です。

mcp はオプションの追加機能です。そのため、通常の方法で Valca をインストールしても、実行時依存関係は一切追加されません。

強制適用には引き続きフックを使用します。モデルの意向にかかわらず、書き込みのたびに実行されます。MCP はエージェントが任意で使用するものであり、エージェントが拒否できるチェックは強制適用ではありません。


開発

git clone https://github.com/PranLabs/valca.git
cd vigil
python3 -m venv venv && source venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v

ライセンス

Business Source License 1.1 — 非営利目的であれば無料で使用できます。商用利用にはライセンス契約が必要です。2030-06-26 に MIT ライセンスへ移行します。


フィードバック

誤検知を見つけましたか? まだ存在しないルールが必要ですか? AI エージェントを使って開発中に、Valca で検出すべきパターンに遭遇しましたか?

イシューを作成 → github.com/PranLabs/valca/issues

または:valca feedback

コメント

MCP は初めてですか?

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

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