voyager について
voyagerは、コーディングエージェント向けのウェブ検索・パッケージ検証MCPサーバーです。引用と信頼度を付けたブリーフを作成し、OSVの脆弱性ゲートや出典情報、プロンプトインジェクション対策を備えます。
主な機能
- 01npmとPyPIのパッケージ検証
- 02OSV脆弱性データによるゲート
- 03引用・信頼度付きブリーフの作成
- 04GitHub、公式ドキュメント、ウェブの検索
- 05インジェクション内容の除去と証拠の明示
- 06隔離コンテナでのインストール再現
活用シーン
- 01CIで脆弱な依存関係を阻止
- 02コーディングエージェント向けのウェブ調査
- 03GitHubプロジェクトの発見と公式文書の確認
- 04隔離環境でのパッケージ導入・読み込み検証
MCP 対応
MCPサーバーとして、パッケージ検証と情報検索に使うcheck_package、retrieve、discover_repos、fetch_docsツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | はい | |
| version | string | いいえ | 任意の固定バージョン(デフォルト:latest)。 |
| ecosystem | enum | いいえ | npm | pypi |
| projectDeps | object | いいえ | name → range:使用中のスタックとの peer 互換性を確認します。 |
| proveInTwin | boolean | いいえ | 隔離コンテナにインストールして smoke-import を行い、信念を再現済みに昇格させます(信頼できるマシンのみ)。 |
詳細
voyager
コーディングエージェント向けの検証済みブリーフ生成ツールです。
オープンインターネットにアクセスする AI コーディングエージェントは、生の署名されていない、悪意ある情報が混入している可能性のあるデータを取得し、そのまま自身のプロンプトに取り込みます。voyager はその手前に位置し、クエリを出典付きで信頼度をスコア化し、OSV ゲートを通過し、インジェクション対策を施したブリーフに変換します。モデルが目にするのは、このブリーフだけです。
すべての主張には、その出所と信頼度のシグナルが付随します。パッケージの推奨にはフェイルクローズの OSV 脆弱性ゲートが適用され、存在する場合はビルドの来歴情報(npm SLSA 証明書)を提示します。また、強化された、ルートレスでネットワークから隔離されたコンテナ内でのインストールとスモークインポート実行により、使い捨ての複製環境で再現できます(ホスト上では実行しません)。これによりパッケージがインストールされ、エントリポイントが読み込まれることを確認できますが、安全性の証明ではありません。取得したテキストはすべて、指示のようなペイロード(多言語、base64、Markdown/HTML のベクター)を取り除き、モデルが従うのではなく分析すべき、信頼できない証拠として位置づけられます。
- check — このパッケージは安全に使えますか? レジストリ情報+OSV ゲート(フェイルクローズ) +来歴/ライセンス/経過期間のサプライチェーンシグナル+任意の隔離された複製環境。 終了コード:0 問題なし · 1 拒否(安全でない) · 2 ツール/使用方法のエラー(判定なし)。
- brief / retrieve — パッケージの検証、GitHub の検索、正規ドキュメント、オープンウェブ検索を組み合わせ、 それぞれを相互に照合した、出典付きのブリーフです。
- 設計段階からのセキュリティ — 1 つの送信先許可リスト、https のみ、ストリーミングによるサイズ上限、 インジェクションの除去+証拠の位置づけ。クエリを実行しない限り、ネットワークアクセスはゼロです。
CLI、ライブラリ、MCP サーバーです。
インストール
npm i @dir-ai/voyager
npx -y @dir-ai/voyager check express
CLI
voyager check <name> [--ecosystem npm|pypi] [--version V] [--twin] # exit 1 if unsafe
voyager brief "<query>" [--package name] [--discover "<intent>"] [--search "<q>"] [--docs <lib>]
voyager discover "<intent>" # GitHub repo discovery (Tier-A)
voyager search "<query>" # open-web search (Tier-C, needs a key)
voyager docs <library> # canonical docs (Tier-B)
voyager doctor # which source keys are configured
check は CI ゲートとして自然に使えます。エージェントが脆弱性のある、非推奨の、または存在しない依存関係を選んだ場合、ビルドを失敗させます。
ライブラリ
import { checkPackage, voyagerRetrieve, setKeyResolver } from '@dir-ai/voyager'
const v = await checkPackage({ name: 'express', ecosystem: 'npm' })
// → { verdict: 'belief' | 'fact' | 'rejected', claim, steps } (adversarial trace)
const brief = await voyagerRetrieve('a safe date library', {
packages: [{ name: 'date-fns', ecosystem: 'npm' }],
discover: 'date library',
})
brief.rendered // the injection-hardened, framed text to feed a model
brief.claims // structured, cited, confidence-scored
// Bring your own key store (default is env vars):
setKeyResolver((provider) => mySecrets.get(provider))
MCP サーバー
// .mcp.json
{
"mcpServers": {
"voyager": { "command": "npx", "args": ["-y", "@dir-ai/voyager", "mcp"] }
}
}
ツール:check_package、retrieve、discover_repos、fetch_docs。
Docker
docker run --rm ghcr.io/dir-ai/voyager check express
docker run -i --rm ghcr.io/dir-ai/voyager mcp # stdio MCP
ティアと信頼性
| ティア | ソース | 基本の信頼度 |
|---|---|---|
| A | GitHub · npm · PyPI · OSV(構造化された情報) | 高 |
| B | 正規ドキュメント(公式ホストのみ) | 高 |
| C | オープンウェブ検索(Tavily / Exa / Apify) | 低 — 信頼する前に相互照合 |
| D | 隔離された複製環境(コンテナ内でインストール+スモークテスト) | 再現性の確認であり、安全性の証明ではありません |
キーは任意です。Tier-A の中核(npm/PyPI/OSV、および認証なしの GitHub)は
キー不要です。Tier-C の各プロバイダーは、キーがなければ何も実行しません。GITHUB_TOKEN、
TAVILY_API_KEY などを設定するか、リゾルバーを注入してください。
セキュリティ体制
送信先許可リスト(公開 API ホストの固定セット)は 1 つのみ、https のみ、redirect: error、ダウンロード中にサイズ超過した本文を中断するストリーミングバイト上限を設けています。また、ロールの乗っ取り/チャットテンプレートのトークン/ゼロ幅文字
および双方向制御文字を取り除き、base64 をデコードして再スキャンし、Markdown 画像と
HTML コメントを無害化し、複数言語にわたる指示ペイロードを検出するインジェクション除去機能を備えています。
本当の防御となるのは、証拠として位置づけることです。除去機能は、それが簡単に回避されないようにします。
複製環境では、パッケージのコードを強化され、ネットワークから隔離された、読み取り専用で、
非 root のコンテナ内でのみ実行します。コンテナランタイムがない場合は、ホスト上での実行を拒否し、
unsupported を返します。SECURITY.md を参照してください。
キャッシュ
冪等な Tier-A の情報(npm/PyPI/OSV)は、プロセス内およびディスク上の
~/.voyager/cache にキャッシュされます(コンテンツアドレス方式、TTL 付き)。これにより、繰り返しのチェックを高速化し、
実行をまたいでキャッシュを維持し、ネットワークへの依存を軽減します。秘密情報が書き込まれることはありません
(認証ヘッダーはキャッシュキーにも値にも含まれません)。VOYAGER_NO_CACHE=1 で
キャッシュを無効にし、VOYAGER_CACHE_DIR で保存場所を変更できます。
ロードマップ
deps.dev を利用した複数エコシステム対応の情報(crates/Go/RubyGems/Packagist)、 タイポスクワッティングの検出、PyPI/cargo の複製環境に対応する予定です。コントリビューションを歓迎します。
ライセンス
MIT © dir-ai
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。