mcpField
4
404.directory

404.directory

リモート
404.directoryセキュリティ13 週間前に更新
リポジトリ公式サイト

404.directory について

404.directoryは、AIエージェントをサードパーティーツールに接続する開発者向けの事前リスク評価サービスです。利用可能な証拠を基に許可・要確認・拒否を判定し、Polymarketの決済と実行リスクも別のワークフローで確認します。

主な機能

  1. 01サードパーティーツール操作のリスク判定
  2. 02Polymarketの決済・実行チェック
  3. 03ツールカタログ検索と信頼スコア
  4. 04公式ドキュメント検索
  5. 05読み取り専用リモートMCPツールゲートウェイ

活用シーン

  1. 01未知のツールを呼び出す前の確認
  2. 02操作前のPolymarket市場評価
  3. 03機能別の登録ツール検索
  4. 04公開デプロイの申告検証

MCP 対応

MCPサーバーはリスク評価と結果報告、カタログ・信頼情報の検索、公式ドキュメント検索を提供します。承認済みの読み取り専用リモートMCPツールを呼び出すゲートウェイも備えています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://404.directory/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://404.directory/mcp認証が必要
パッケージ
npm@mmvv1638/404-directory-mcp0.10.3

ツール

16
パラメーター型必須説明
urlstringはい

詳細

404.directory

AI エージェントのアクションに対するリスク事前チェック。

AI エージェントがサードパーティ製ツールを使用する前に、404.directory は利用可能な証拠を確認し、allow、review、block のいずれかを判定します。

実行前に明示的なリスクチェックを行いたい、エージェントを外部ツールに接続する開発者向けです。 これは実験的な事前チェックサービスであり、判定は利用可能な証拠に基づきます。

まずは1つのアクションから

Codex、Cursor、Claude Code、または MCP SDK を使って、**エージェントを接続**してください。

ツールのワークフローは次のとおりです。

A proposed third-party tool action
  → provider verification + live checks + available usage evidence
  → allow / review / block

登録済みのサードパーティ製ツールのアクションには、evaluate_tool_risk を使用してください。別個の evaluate_prediction_market ワークフローでは、決済条件の文言、タイミング、公開注文板の流動性、呼び出し元が確認した参加資格、実行モードをチェックします。勝者を予測したり、注文を出したりすることはありません。

公式ドキュメントの検索、デプロイの検証、厳選された読み取り専用 MCP ゲートウェイは、補助機能です。API の全体像については、製品レイヤーを参照してください。

初めて試しますか? 最初の10件のアクティベーションパイロットに参加して、使用したクライアント、タスクのカテゴリ、失敗した段階を報告してください。

インストール

エージェントが読み取れるインストール手順:llms-install.md

Codex、Claude Code、Cursor、Cline、またはその他の Agent Skills クライアントに Agent Skill をインストールします。

npx skills add MM-sheng/404-directory --skill use-404-directory -g -y

このリポジトリは Agent Plugins 1.0 にも準拠しています。対応クライアントは skills/ から Agent Skill を検出し、ルートの mcp.json からホストされた Streamable HTTP サーバーへの、IDを保持するブリッジを検出します。このブリッジは、クライアントが管理する PLUGIN_DATA ディレクトリにランダムな ID を1つ作成します。生の ID はローカルに保持され、サービスにはツール呼び出しが成功した後に HMAC ダイジェストのみが保存されます。

Claude Code と Cowork では、.claude-plugin/ にあるネイティブマニフェストを使用します。これは同じ Skill と、Claude の永続的なプラグインデータディレクトリを使う ID を保持するブリッジを読み込みます。そのため、更新後もインストール ID は維持されます。

公式ディレクトリへの申請が審査中の間は、Claude Code に直接インストールしてください。

/plugin marketplace add MM-sheng/404-directory
/plugin install 404-directory@404-directory

製品レイヤー

レイヤー目的インターフェイス
ファーストパーティ実行このプロセス内でファーストパーティツールを実行するGET /tools、POST /understand、POST /verify/web、MCP ツール
厳選されたリモート実行承認済みの読み取り専用リモート MCP ツールを検索して呼び出すMCP search_official_docs / inspect_tool_server / invoke_registered_tool
エコシステムカタログ+信頼サードパーティ製ツールを登録/検証/信頼/検索する/v1/*、MCP search_tools / get_tool / compare_tools / get_trust_score
状況に応じたリスク事前チェックエージェントが今すぐ処理を進めるべきかを判定するMCP evaluate_tool_risk / report_tool_outcome、REST /v1/evaluations/*
予測市場の事前チェックアクション前に決済と実行のリスクをチェックするMCP evaluate_prediction_market / report_prediction_market_outcome、REST /v1/prediction-markets/evaluations/*

現在の製品は意図的に対象を絞っています。予測市場の意思決定を1件、または登録済みサードパーティ製ツールのアクションを1件、事前チェックしてから、対象を限定した結果を記録します。ID、レピュテーション、保証、保険に関する今後のレイヤーは、実際の外部エージェントの利用によって検証されるまでは仮説のままです。

現在のファーストパーティツール

ツールエンドポイント使用する場面
understand_webpagePOST /understandAgent ネイティブ API がない一般的なウェブページの内容(エンティティ、状態、アクション)を理解する場合
verify_webPOST /verify/webデプロイ/更新の主張の後に、公開サイトを独立して検証する場合

エージェント検出 API(/v1)

カタログバックエンド(Postgres の DATABASE_URL、または CATALOG_MEMORY_FALLBACK=true の場合のインメモリフォールバック)が必要です。

# Bootstrap admin token (required in production; auto-generated in local/dev)
export REGISTRY_ADMIN_TOKEN=change-me-to-a-long-secret

# Register a tool (pending quarantine until ownership + protocol verification)
curl -sS http://127.0.0.1:4040/v1/tools \
  -H 'content-type: application/json' \
  -H "authorization: Bearer $REGISTRY_ADMIN_TOKEN" \
  -d '{
    "name":"btc_analyzer",
    "description":"Analyze BTC market signals for agents",
    "capabilities":["btc","market-analysis"],
    "protocol":"mcp",
    "endpoint":"https://example.com/mcp",
    "category":"finance",
    "provider":{"name":"Example Labs","identity":{"type":"domain","value":"example.com"}}
  }'
# Response includes provider_api_key once — store it for ownership + further writes.

# Search (active tools only)
curl -sS 'http://127.0.0.1:4040/v1/tools/search?capability=btc&trust_threshold=0.2'

# Trust profile
curl -sS http://127.0.0.1:4040/v1/tools/btc_analyzer/trust

カタログのキーワード検索では、インメモリと PostgreSQL の両方で catalog-lexical-v2 を使用します。 q=official%20documentation または q=OpenAI%20docs を試してください。単語が隣接している必要はありません。 意味のある語句はすべて、名前、説明、機能、カテゴリ、またはプロバイダーに一致する必要があります。 完全一致する名前が最上位にランクされ、続いて語彙的関連性、既存の信頼性の証拠、使用状況の順になります。機能/プロトコル/カテゴリ/信頼性のフィルターは引き続き必須であり、公開検索では隔離中および停止中のツールは引き続き除外されます。

一致するものがない場合は、count: 0、search.result_status: "no_matches"、および MCP の list_capabilities/REST の /v1/capabilities を示す復旧手順が返されます。 MCP 検索で結果が空でも有効な応答ですが、エージェントの有効化成功ではなく no_matches として記録されます。タスクが不可能という意味ではありません。 検索はツールを実行せず、安全性も証明しません。選択した正確な slug を事前チェックしてください。検索のセマンティクスと受け入れ結果を参照してください。

Trust Profile のディメンション(v1 アルゴリズム、拡張可能な factors JSON):

  • 所有権/可用性/互換性/セキュリティ/使用状況 → overall_score

コンテキストに応じた事前チェックは POST /v1/evaluations から利用できます。公開レシートは GET /v1/evaluations/:id で読み取れます。評価時に返される一度限りのトークンを使用し、POST /v1/evaluations/:id/outcome から、上限付きの結果を 1 件添付できます。保存されるのはトークンのハッシュのみで、自己申告の結果が Trust を直接高めることはありません。以前の汎用 POST /v1/receipts は、紐付けのない匿名投稿が Trust を損なうため、引き続き無効です。

コピーして使えるエージェントのトリガーポリシーと例: docs/AGENT_RISK_PREFLIGHT.md

プライバシーに配慮した製品検証データは GET /v1/metrics/risk-evaluations で公開されています。プロンプトや生の ID を含まず、評価件数、判断の分布、結果報告率、行動変化率を確認できます。

予測市場のワークフローについては、 docs/PREDICTION_MARKET_PREFLIGHT.mdに記載されています。 プライバシーに配慮した集計指標は GET /v1/metrics/prediction-market-evaluations から利用できます。

MCP 検出ツール

カタログが有効な場合、MCP では以下も公開されます。

  • evaluate_prediction_market
  • report_prediction_market_outcome
  • evaluate_tool_risk
  • report_tool_outcome
  • search_tools
  • get_tool
  • compare_tools
  • get_trust_score
  • recommend_tools
  • list_capabilities
  • get_capability_graph
  • search_official_docs
  • inspect_tool_server
  • invoke_registered_tool

既存の実行可能なツールと併せて利用できます。

evaluate_prediction_market は初回利用時の主要な手段です。このツールは、予測や取引を行わずに、特定の Polymarket 市場について、決済、流動性、参加資格、実行リスクを 1 回の呼び出しで評価します。evaluate_tool_risk は 2 つ目の手段で、エージェントが見慣れないサードパーティ製ツールをインストールまたは呼び出す前に使用します。search_official_docs は補助的な手段として引き続き利用でき、生のプロバイダーインデックスではなく、件数を制限したファーストパーティの引用を返します。任意の URL、認証が必要なサーバー、有効でないエントリ、未検証のプロバイダー、破壊的なツールは拒否されます。リモートの結果には上限が設けられ、信頼できないデータとして明示されます。

MCP タスクプロンプト

MCP プロンプトを公開するクライアントには、タスク指向の開始点も 4 つ用意されています。

  • preflight-prediction-market — 正確な市場と検討中のアクションを evaluate_prediction_market 呼び出しに変換します。
  • evaluate-agent-tool — カタログ内の候補を見つけ、コンテキストに応じたリスクの事前チェックを呼び出し、結果として allow、review、または block を必須とします。
  • research-official-docs — 実際の技術的な質問を search_official_docs 呼び出しに変換します。
  • verify-public-deployment — 具体的な公開デプロイに関する主張を verify_web 呼び出しに変換します。

プロンプトを表示または開いても、1,000 エージェントの目標にはカウントされません。各テンプレートでは、ユーザーのタスクに実質的に答える、エラーではないツールの結果を明示的に必須とします。サーバーが記録するのは、prompts/list と prompts/get の集計されたアクティベーション段階のみであり、プロンプトの引数やタスクのテキストは記録しません。

MCP プロンプトの引数は文字列です。evaluate-agent-tool では、たとえば "public_network,credentials" または JSON 配列文字列 '["public_network","credentials"]' のように、permissions 引数を明示的に指定する必要があります。アクションで権限が不要な場合に限り "[]" を使用してください。権限がない場合、不正な形式の場合、未知の権限の場合は、安全だと暗黙に見なすのではなく拒否されます。この文字列エンコードは prompts/get のみを対象とします。evaluate_tool_risk では、引き続き JSON 配列を受け付けます。

直接的な取引エージェントの統合については、docs/AGENT_INTEGRATION_QUICKSTART.md を参照してください。プライバシーに配慮した最初の 10 エージェントのコホートプロセスについては、docs/FIRST_10_AGENT_PILOT.md に記載されています。

Capability Graph

エージェントは共有機能のエッジを調べ、関連ツールの推奨を取得できます。

curl -sS http://127.0.0.1:4040/v1/capabilities | jq
curl -sS http://127.0.0.1:4040/v1/graph/capabilities | jq '.edges[:3]'
curl -sS http://127.0.0.1:4040/v1/tools/verify_web/related | jq

類似度は機能セットに対する Jaccard 係数で計算し、プロトコルやカテゴリが一致する場合に少量のブーストを加えます(cap_v1)。これは長期的な Capability Graph の基盤です。

クイックスタート

npm install
npx playwright install chromium
cp .env.example .env
npm run dev

デフォルト:http://127.0.0.1:4040

Postgres を使用する場合:

docker compose up -d postgres
export DATABASE_URL=postgres://404:[email protected]:5432/404
npm run db:migrate
npm run dev

起動時に、ファーストパーティのツールがカタログに登録されるため(SEED_FIRST_PARTY_TOOLS=true)、GET /v1/tools/search?capability=web-verification は verify_web を返します。運用者が審査した 6 つの公開 MCP サーバーも、SEED_CURATED_MCP_SERVERS=true の場合、保留中のエントリとして登録されます。検証ワーカーは、これらが検索または実行可能になる前に、実際の MCP アドミッションを行います。

検証ワーカー
  • デフォルト:VERIFICATION_WORKER_MODE=inline(HTTP プロセス内のループ)
  • 本番環境の負荷に合わせて分離する場合:
export VERIFICATION_WORKER_MODE=external
npm run worker:verify
プロバイダーの所有権(DNS TXT または GitHub のプロフィール)
# Domain provider
curl -sS -X POST http://127.0.0.1:4040/v1/providers/example-labs/ownership/challenge
# Publish DNS: _404-directory.example.com TXT "404-directory-verify=<token>"
curl -sS -X POST http://127.0.0.1:4040/v1/providers/example-labs/ownership/verify

# GitHub provider (identity.type=github)
curl -sS -X POST http://127.0.0.1:4040/v1/providers/octo/ownership/challenge
# Put "404-directory-verify=<token>" in the public GitHub profile bio
curl -sS -X POST http://127.0.0.1:4040/v1/providers/octo/ownership/verify

所有権スコアの段階:ファーストパーティ 1.0 → dns_txt 0.95 → github_bio 0.9 → 一般的な検証済み 0.8 → 未検証 0.35。

npm test
npm run typecheck
npm run build
npm start

エージェントの検出(404 サービスツール)

サービスのインベントリと登録済みエコシステムカタログは別のものです。

サーフェス意味
MCP tools/list、GET /tools同じ有効化済みで呼び出し可能な404サービスツール(デフォルトのネイティブツール、カタログ、ゲートウェイを有効にした場合は16個)
GET /tools/:name実際のMCP引数スキーマ、安全性に関する注釈、明示的なMCP/REST呼び出しルート
GET /v1/tools/searchシード済みのファーストパーティおよびサードパーティのツールを含む登録済みターゲットレコード。一致しても実行が許可されるわけではありません
GET /v1/capabilitiesエコシステムレコードの機能ラベルであり、呼び出し可能な404関数の一覧ではありません

ホームページ、インストールガイド、ドキュメント、サーバーカード、検出メタデータは、起動時の実際のMCP登録情報から有効なツールのインベントリを取得します。 3つのゲートウェイツール(search_official_docs、inspect_tool_server、 invoke_registered_tool)はMCP専用です。メタデータの invocation.rest: null がそのことを示しています。 その他のツールについては、/tools/:name がツールを実行すると想定せず、宣言されたRESTパスとパラメーターマッピングに従ってください。HTTPコントラクトは /openapi.json にあります。MCPメタデータのスキーマはMCPのJSON Schema方言に従い、OpenAPI 3のスキーマ方言には従いません。登録情報や設定を変更した後は再起動してください。

検証、互換性に関する注記、ローカル限定の提供範囲については、検出の整合性監査を参照してください。

curl -sS http://127.0.0.1:4040/tools | jq
curl -sS http://127.0.0.1:4040/tools/understand_webpage | jq
curl -sS http://127.0.0.1:4040/openapi.json | jq '.paths | keys'
curl -sS http://127.0.0.1:4040/mcp-info | jq
curl -sS http://127.0.0.1:4040/llms.txt
curl -sS http://127.0.0.1:4040/health

ホームページ(GET /)は意図的に最小限の構成です。ブランド、タグライン、ツール名、Tools/MCP/OpenAPI/Docs/Healthへのリンクを表示します。

RESTの例

curl -sS http://127.0.0.1:4040/understand \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com"}'

curl -sS http://127.0.0.1:4040/verify/web \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com","expected_status":200,"expected_text":"Example Domain"}'

verify_web は checks に簡潔な真偽値を返し、リクエストされたURLと最終URL、HTTPステータスの比較、期待するテキストとの一致、TLS検証、完全なリダイレクトチェーン、タイムスタンプ、明示的な「主張 → 証拠」のパスを含む構造化された evidence オブジェクトも返します。

ツールの実行は現在、公開されており無料です。レート制限には、Vercelの信頼できるクライアントIPヘッダー(ローカルではソケットIP)を使用します。

MCP

Streamable HTTP(RESTと同じプロセス)

MCPクライアントの接続先を https://404.directory/mcp(またはローカルの http://127.0.0.1:4040/mcp)に設定してください。

ホストされたエンドポイントは、OpenAI Responses APIのリモートMCPツールとして直接使用することもできます。プライバシーに配慮したインストールトークンを含む、コピーしてすぐに使えるペイロードは llms-install.md にあります。OpenAIの公式MCPガイドも参照してください。

検証済みカウントの対象となるには、X-404-Agent-ID に、安定したランダムな非個人識別子を送信してください。サーバーが保存するのはHMACダイジェストのみで、生のID、プロンプト、引数、結果は保存しません。呼び出しの成功は必要ですが、それだけではカウントされません。独立した運営者であることを示す証拠を別途受理する必要があります。X-404-Source は任意の小文字の帰属ラベルです。検証済みの公開進捗は GET /v1/metrics/verified-agents で確認できます。未検証のインストール診断情報は GET /v1/metrics/agents にあります。クライアントの完全な例は https://404.directory/connect を参照してください。

OpenAI Responsesでは、任意のリモートMCPリクエストヘッダーはドキュメント化されていません。代わりに、生成された agent:<uuid>@<source> 形式のインストールトークンを使い、サポート対象のMCP authorization フィールドを使用する例が示されています。404.directoryでは、この厳密な非個人形式のみをエージェントIDとして受け付けます。無関係なOAuthベアラートークンは匿名のままで、エージェントIDとして扱われることはありません。 プライバシーに配慮したアクティベーションファネルは、 GET /v1/metrics/activation で利用できます。観測された接続画面の表示数とインストーラーのクリック数に加え、MCP の initialize、tools/list、prompts/list、prompts/get を完了した外部エージェント、ツール呼び出しを試みたエージェント、ツール呼び出しに失敗したエージェント、ツール実行に成功したエージェントを重複排除して報告します。ソースごとの出力では、呼び出し率、呼び出し成功率、プロンプトから成功に至る率、エンドツーエンドのアクティベーション率を個別に示します。ファネルの各段階は診断のみを目的としています。実行の成功は必要ですが、独立した運営者による活動の証拠が別途認定されない限り、1,000 エージェントの目標にはカウントされません。アクティベーションイベントにはプロンプト名や引数を保存しません。ファネルには生のエージェント ID、IP アドレス、プロンプト、引数、結果を保存しません。

GET /v1/metrics/verified-agents では、認証済みエージェントのプライバシーに配慮した 7 日間/30 日間の継続率を報告します。完全な観測期間が経過した後にエージェントが対象となり、その後、別の UTC 日に再度成功した場合にのみ継続として扱われます。GET /v1/metrics/agents では、安全なクライアントラベルごとに、未認証のインストールに関する診断情報を引き続き提供します。GET /v1/metrics/reliability?days=30 では、ツール、登録済みプロバイダー、クライアント、帰属元ごとに、外部実行の証拠を集計します。これには、サンプル数、成功率、P50/P95 レイテンシー、結果数、有限のエラー分類が含まれます。匿名の外部実行は信頼性の評価には利用できますが、1,000 の認証済みエージェントの目標には決してカウントされません。

公式 MCP Registry のエントリーでは、X-404-Agent-ID をインストール時の入力として宣言し、X-404-Source のデフォルト値を official-registry に設定しています。これにより、互換性のあるクライアントは、匿名の使用状況をひそかに作り出すのではなく、プライバシーに配慮した ID を引き継ぐことができます。どちらのヘッダーもなくても、サービスは引き続き利用できます。

動的インストールページでは、一意の非個人 ID があらかじめ埋め込まれた、ワンクリックで使える VS Code/GitHub Copilot エージェントリンクも生成されます。

https://404.directory/connect?source=github

Registry クライアントでは、同じドメイン上にあるスクリプト不要のサービスアイコン https://404.directory/icon.svg を表示できます。

stdio の起動コマンドのみを受け付けるクライアントやディレクトリには、ID を引き継ぐホスト型ブリッジを使用してください。ユーザーの通常のアプリケーションデータディレクトリに、MCP クライアントごとにランダムなエージェント ID を 1 つ作成し、再起動後も再利用します。

{
  "mcpServers": {
    "404-directory": {
      "command": "npx",
      "args": ["-y", "@mmvv1638/404-directory-mcp"]
    }
  }
}

アカウントや API キーは不要です。このブリッジには依存関係がなく、MCP JSON-RPC トラフィックのみを https://404.directory/mcp に転送します。

Codex は ~/.codex/config.toml の MCP HTTP ヘッダーをサポートしています。

[mcp_servers.404_directory]
url = "https://404.directory/mcp"
http_headers = { "X-404-Agent-ID" = "agent:REPLACE_WITH_A_STABLE_RANDOM_ID", "X-404-Source" = "codex" }

エージェントのインストールでプライバシーに配慮した ID を保持したい場合、MCP URL だけをそのまま追加しないでください。https://404.directory/connect?source=github で生成された Codex 設定を使用してください。

stdio
{
  "mcpServers": {
    "404-directory": {
      "command": "npm",
      "args": ["run", "mcp", "--silent"],
      "cwd": "/absolute/path/to/this/repo"
    }
  }
}

ツールはツールレジストリから自動的に登録されます。ツールを追加する際に、MCP アダプターを別途手書きする必要はありません。

ツールの追加

  1. ハンドラーと Zod の入出力スキーマを実装します
  2. src/tools/definitions/ に ToolDefinition を作成します
  3. src/tools/create-registry.ts に登録します

REST、OpenAPI、/tools/:name、MCP は、すべてレジストリからツールを取得します。検出コストがスキーマの追加ごとに増えないよう、/tools は簡潔に保ってください。

Cloud Run/本番環境

本番環境は Google Cloud Run で稼働します。Dockerfile は Node slim を使用し、保持する Artifact Registry イメージが 0.5 GiB の無料ストレージ枠を下回るよう、Chromium のヘッドレスシェルのみをインストールします。

本番環境ではカタログの永続化が必須です。 DATABASE_URL を設定せず、CATALOG_MEMORY_FALLBACK=true(ローカルでのデフォルト)にすると、Registry/Trust/テレメトリーはコールドスタートのたびに失われます。また、リクエストベースの Cloud Run では、プロセス内の setInterval ワーカーは安定して実行されません。外部ワーカーを使用してください。

# 1) Managed Postgres (Cloud SQL / Neon / etc.) + migrate
export DATABASE_URL=postgres://...
npm run db:migrate

# 2) API service
gcloud run deploy directory-404 \
  --source . \
  --region asia-east1 \
  --allow-unauthenticated \
  --execution-environment gen2 \
  --cpu 1 \
  --memory 2Gi \
  --concurrency 4 \
  --min-instances 0 \
  --max-instances 1 \
  --timeout 120 \
  --port 8080 \
  --set-env-vars "DATABASE_URL=${DATABASE_URL},CATALOG_MEMORY_FALLBACK=false,VERIFICATION_WORKER_MODE=external,REGISTRY_REQUIRE_AUTH=true,REGISTRY_ADMIN_TOKEN=${REGISTRY_ADMIN_TOKEN},PUBLIC_BASE_URL=https://404.directory,HOST=0.0.0.0,PORT=8080"

# 3) Independent verification worker (Cloud Run Job + Scheduler, or always-on)
#    VERIFICATION_WORKER_MODE=external on the API; run:
#    npm run worker:verify

Registry の書き込み API(POST /v1/tools、所有権チャレンジ/検証、手動検証)には、Authorization: Bearer <REGISTRY_ADMIN_TOKEN|provider_api_key> が必要です。新しいプロバイダーには、1 回限りの provider_api_key が付与されます。検索ではデフォルトで status=active のみが対象です。保留中のツールは隔離されたままになります。

置き換えられたタグなしイメージによってストレージ料金が蓄積しないよう、ソースデプロイ用 Artifact Registry リポジトリに cloudrun.cleanup-policy.json を適用してください。

ローカルの Docker も引き続き利用できます。

cp .env.example .env
docker compose up --build -d

本番環境のセキュリティ強化に関する注意事項:

  • BROWSER_EGRESS_ALLOWED_PORTS は狭い範囲に保ちます(デフォルトは 80,443)
  • トラフィックに合わせて RATE_LIMIT_* と検証/ブラウザーのタイムアウトを調整します
  • ツール実行の TOOL_RATE_LIMIT_MAX は、検出機能よりも厳しい制限になっています
  • リモート MCP ゲートウェイの対象は、運用担当者が選定し、プロバイダー検証済みで、有効かつ認証不要のサーバーと、明示的に許可された読み取り専用ツールに限定されます
  • ゲートウェイ引数の上限は 16 KiB です。結果と外部呼び出し時間は、MCP_GATEWAY_MAX_RESULT_BYTES と MCP_GATEWAY_TIMEOUT_MS で制限されます
  • DATABASE_URL を設定する場合は、CATALOG_MEMORY_FALLBACK=false に設定します
  • サーバーレス環境では、VERIFICATION_WORKER_MODE=external を推奨します

セキュリティ境界

  • HTTP(S) のみ対応します。URL に含まれる認証情報は拒否されます
  • DNS でプライベート/ループバック/リンクローカル/予約済みアドレスに解決される場合は拒否されます
  • verify_web は、DNS 検証を通過した正確なパブリック IP に各接続を固定し、リダイレクトの各ホップで再解決と再検証を行います。TLS SNI はホスト名に対してのみ送信されます。IP リテラルの URL(例:https://1.1.1.1)では SNI を省略し、代わりに IP に対して証明書を検証します
  • verify_web はレスポンス本文のサイズを制限します。198.18.0.0/15 およびその他の予約済み範囲は、すべての環境で拒否されます
  • understand_webpage はブラウザーのリクエストごとに再解決と再検証を行います。Chromium のリクエストはループバック専用のフォワードプロキシを経由します。このプロキシは宛先を解決し、プライベート/予約済みアドレスと許可されていないポートを拒否してから、検証を通過した正確な IP に接続します。Chromium の暗黙的なループバックバイパスと QUIC は無効化され、プロキシを経由しない WebRTC UDP はブロックされます。ブラウザーコンテキストでは serviceWorkers: "block" も設定されます。ホスティングプラットフォームが対応している場合は、独立した第 2 層として、プロバイダー/ネットワークのエグレスファイアウォールも推奨します
  • 予期しない 500 エラー/MCP 実行エラーはサニタイズされ、詳細はすべてログに記録されます
  • 構造化された Tool ログにはルート、ステータス、実行時間、Tool 名が含まれますが、リクエスト本文は含まれません
  • レスポンスにはリクエスト ID、Server-Timing、no-sniff/frame/referrer/permissions/CSP ヘッダーが含まれます。REST Tool の結果では Cache-Control: no-store を使用し、MCP ストリーミングでは SDK の no-cache, no-transform ポリシーを使用します

構成

src/
  domain/          # catalog: registry, verification, trust, discovery, telemetry,
                   #          ownership, capability-graph, seed
  db/              # drizzle schema + migrate
  workers/         # standalone verification worker
  tools/           # first-party executable registry
  understand.ts    # understand_webpage service
  verify/          # verify_web implementation
  http/            # Fastify app, homepage, OpenAPI
  mcp/             # stdio + registry→MCP + discovery tools
  browser/         # Playwright collection
  security/        # SSRF / URL guards
drizzle/           # SQL migrations

コメント

MCP は初めてですか?

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

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