disvr
Disvrとは?
AIエージェントのエコシステムは爆発的に拡大しています。決済プロトコル(Stripe MPP、OpenAI ACP、x402)は支払い方法を解決し、ディレクトリ(Smithery、Composio)は何が存在するかを解決します。
しかし、最も重要な問いである**「どのツールを実際に使うべきか?」**を解決するものは誰もいませんでした。
🤖 「中国語の法務契約書をタイ語に翻訳して」 → Smitheryには50の翻訳サービスがある。どれが最もコストパフォーマンスが良いのか?
🤖 「ECサイトから商品価格をスクレイピングして」 → 30のスクレイピングツールがある。どれが最も成功率が高く、低遅延なのか?
🤖 「商品画像を生成して」 → 20の画像生成サービスがある。どれが十分に高品質で、かつ最も安価なのか?
現在、エージェントは手探りで選択しています。間違った選択は、無駄なコスト、時間の浪費、タスクの失敗を意味します。
Disvrはこれを解決します。
Disvrは単なるリストを返すのではなく、4次元の価値スコアに基づいたランキング形式の推奨を返します:
ディメンション | 重み | 測定内容 |
🎯 セマンティックマッチ | 0.30 | ニーズとサービスがどれだけ合致しているか |
⭐ 品質 | 0.25 | 過去の成功率、評判 |
💰 コスト効率 | 0.25 | コールあたりのコスト、費用対効果 |
🔒 信頼性 | 0.20 | 遅延、再試行率、稼働率 |
あなたのエージェントは推測をやめ、そのタスクに最適なツールを選択し始めます。
✅ 始める前に
💰 利用無料 | 無料枠:1日1,000クエリ、クレジットカード不要 |
🔌 MCPネイティブ | Claude Code、Cursor、または任意のMCPクライアント向けの設定が1行で完了 |
🔄 クローズドループフィードバック | エージェントがコール結果を報告 → ランキングが時間とともに賢くなる |
☁️ グローバルエッジ | Cloudflare Workers上でデプロイ、世界中で低遅延 |
📡 リアルタイムデータ | Smitheryからの毎時クロールにより、サービスデータを常に最新に維持 |
クイックスタート
オプション1: MCPサーバー (推奨)
.mcp.jsonに1行追加します:
{
"mcpServers": {
"disvr": {
"type": "url",
"url": "https://api.disvr.top/mcp"
}
}
}Claude Code / Cursorを再起動すると、エージェントが discover_services ツールを使えるようになります。
エージェントに次のように指示してみてください:
「中国語の法務文書をタイ語に翻訳するのに最適なツールを見つけて」
「成功率が高く、最も安価なWebスクレイピングサービスを推奨して」
「価格と品質の比率が最も良い画像生成APIはどれ?」
オプション2: REST API
curl -X POST https://api.disvr.top/discover \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"need": "translate Chinese legal contract to Thai"}'value_scoreでランク付けされた上位3つの推奨事項を返します:
{
"recommendations": [
{
"service": "deepl-mcp-server",
"platform": "smithery",
"match_confidence": 0.92,
"reputation": 4.2,
"price_usd": 0.002,
"reason": "Best cost/quality ratio for legal document translation"
}
]
}ライブデモ
ページ | リンク | 説明 |
🏠 ホーム | 製品概要 | |
🔍 エクスプローラー | インタラクティブなクエリプレイグラウンド — APIをライブで試す | |
📋 レジストリ | インデックス化された全サービスを閲覧 | |
📊 分析 | システムアーキテクチャとスコアリングの可視化 |
APIリファレンス
POST /discover — サービス発見
エージェントが必要としているものを記述し、ランク付けされた上位3つの推奨事項を取得します。
POST https://api.disvr.top/discover
Authorization: Bearer <api-key>
Content-Type: application/json
{
"need": "scrape product prices from e-commerce websites",
"max_price_per_call": 0.01,
"max_latency_ms": 5000,
"min_reputation": 3.0
}パラメータ | 必須 | 説明 |
| ✅ | 必要なもの(5文字以上) |
| ❌ | コールあたりの最大価格 (USD) |
| ❌ | 許容可能な最大遅延 (ms) |
| ❌ | 最小評判スコア (0-5) |
POST /report — フィードバックループ
ツール使用後のコール結果を報告し、フィードバックループを閉じてランキングを改善します。
POST https://api.disvr.top/report
Authorization: Bearer <api-key>
Content-Type: application/json
{
"service_id": "deepl-mcp-server",
"query_id": "q_abc123",
"success": true,
"latency_ms": 1200,
"cost_usd": 0.002
}GET /health — ヘルスチェック
curl https://api.disvr.top/health
# {"status": "ok", "services_indexed": 330}MCPツール
MCPサーバー経由で公開されるツール:
ツール | 説明 |
| セマンティック検索 + 4次元価値ランキング |
| インデックス化されたサービスの総数 |
| コール結果の報告(フィードバックループ) |
SDK
完全な型安全性を備えたTypeScript/JavaScript SDK:
npm install @sylar_yan/disvrimport { Disvr } from "@sylar_yan/disvr";
const client = new Disvr("dsvr_your_api_key");
const result = await client.discover({
need: "translate Chinese legal contract to Thai",
max_latency_ms: 3000,
min_reputation: 3.5,
});
console.log(result.recommendations);アーキテクチャ
Agent Query ("I need X")
│
▼
┌─────────────────────────────────────────┐
│ Disvr API (Cloudflare Workers + Hono) │
├─────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────────────┐ │
│ │ Embed │───▶│ CF Vectorize │ │
│ │ (OpenAI) │ │ (1536-dim cosine)│ │
│ └──────────┘ └────────┬─────────┘ │
│ │ │
│ ┌─────── 50 candidates ──────┐ │
│ ▼ │ │
│ ┌──────────────┐ ┌────────────┐ │ │
│ │ D1 Database │ │ FTS5 │ │ │
│ │ (services, │ │ (fallback) │ │ │
│ │ call_reports)│ └────────────┘ │ │
│ └──────┬───────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌──────────────────────────────┐ │ │
│ │ 4-Dim Value Ranking │ │ │
│ │ semantic × 0.30 │ │ │
│ │ quality × 0.25 │ │ │
│ │ cost_eff × 0.25 │ │ │
│ │ reliable × 0.20 │ │ │
│ └──────────┬───────────────────┘ │ │
│ ▼ │ │
│ Top 3 Recommendations │ │
│ │ │
├──────────────────────────────────────┤ │
│ MCP Server (Streamable HTTP) │ │
│ via CF Agents SDK + Durable Objects │ │
└──────────────────────────────────────┘ │
│
┌──────────────────────────────────┘
▼
┌─────────────┐
│ Cron Trigger │ ← Hourly: crawl (Smithery + GitHub + MCP Registry)
│ (4-phase) │ → enrich GitHub Stars → health checks
└─────────────┘ → aggregate daily stats
│
┌────▼────────────┐
│ POST /report │ ← Agent feedback
│ refreshStats() │ success_rate, latency → ranking improvement
└─────────────────┘技術スタック
コンポーネント | 技術 |
ランタイム | Cloudflare Workers |
フレームワーク | Hono |
データベース | Cloudflare D1 (SQLite) |
ベクトル検索 | CF Vectorize (1536次元, コサイン類似度) |
テキスト検索 | FTS5 (OR + プレフィックス, フォールバックパス) |
エンベディング | OpenAI text-embedding-3-small |
MCPサーバー | CF Agents SDK (McpAgent + Durable Objects) |
データソース | Smithery, GitHub awesome-mcp, MCP公式レジストリ (~2000サービス) |
Cron | CF Cron Trigger (毎時) |
言語 | TypeScript |
プロジェクト構造
disvr/
├── wrangler.toml # CF Workers config
├── schema.sql # D1 database schema
├── src/
│ ├── index.ts # Hono entry + REST routes
│ ├── discover.ts # Core: semantic search + 4-dim ranking
│ ├── db.ts # D1 CRUD + feedback stats
│ ├── crawl.ts # Multi-source crawlers + embedAndIndex
│ ├── mcp.ts # MCP Server (Streamable HTTP)
│ ├── types.ts # TypeScript type definitions
│ ├── landing.ts # Landing page HTML
│ └── pages/
│ ├── registry.ts # Provider Registry page
│ ├── explorer.ts # Agent Query Explorer page
│ └── analytics.ts # Analytics Dashboard page
├── test/
│ ├── types.test.ts # Type conversion tests
│ ├── discover.test.ts # Matching engine tests
│ ├── db.test.ts # D1 operations tests
│ ├── api.test.ts # REST API integration tests
│ └── crawl.test.ts # Crawler tests
└── .mcp.json # MCP config exampleローカル開発
# Prerequisites: Node.js 22+
nvm use 22
# Install dependencies
npm install
# Local dev server
npx wrangler dev
# Run tests
npx vitest run
# Deploy
npx wrangler deploy環境変数
# Set OpenAI API Key (for embeddings)
wrangler secret put OPENAI_API_KEYデータベース設定
# Create D1 database
wrangler d1 create disvr-db
# Run schema
wrangler d1 execute disvr-db --file=./schema.sql
# Create Vectorize index
wrangler vectorize create disvr-mcp-index --dimensions=1536 --metric=cosine設計思想
単なる検索ではなく、支出インテリジェンスを
Disvrはディレクトリではありません。マーケットプレイスでもありません。これは意思決定レイヤーです。
従来のディレクトリはリストを返して選択をユーザーに委ねますが、Disvrは推奨事項を返し、以下を伝えます:
なぜこのツールを使う価値があるのか
どのようにコスト/品質比が比較されるのか
何が代替ツールよりも優れているのか
クローズドループフィードバックこそが参入障壁
エージェントがコール結果(成功/失敗、遅延、コスト)を報告するたびに、それがランキングアルゴリズムにフィードバックされます。利用が増えるほど、推奨は賢くなります。これは静的なデータベースではなく、生きているインテリジェンスシステムです。
デュアルパス検索による再現性の保証
プライマリ: OpenAIエンベディング → CF Vectorizeベクトル検索(セマンティックマッチング)
フォールバック: FTS5全文検索(OR + プレフィックスワイルドカード)
エンベディングが失敗したり、ベクトル検索が空の結果を返したりした場合に自動的に切り替わり、常に結果を返します
ロードマップ
[x] コアAPI (discover + report + health)
[x] MCPサーバー (ストリーミング可能なHTTP)
[x] Smitheryクローラー (330以上のサービス)
[x] GitHub awesome-mcpクローラー + Starsの拡充
[x] MCP公式レジストリクローラー (1000以上のサービス)
[x] ランディングページ + 4つのフロントエンドページ
[x] カスタムドメイン (www.disvr.top + api.disvr.top)
[x] npm SDK (@sylar_yan/disvr)
[x] 90のユニットテスト (型、discover、db、api、crawl)
[x] リクエストログ + 分析API
[x] 日次統計のCron集計
[x] ヘルスチェック + マルチシグナル評判スコアリング
[x] ユーザー登録 + APIキー管理UI
[ ] エージェント統合の検証 (MCPの実世界テスト)
[ ] コスト追跡ダッシュボード
[ ] 決済プロトコル統合 (Stripe MPP / x402)
貢献
PRやIssueを歓迎します!
🐛 バグ報告 → GitHub Issues
💡 機能リクエスト → GitHub Issues
🔧 コードへの貢献 → Fork & PR
謝辞
Cloudflare Workers — グローバルエッジコンピューティング
Hono — 軽量Webフレームワーク
Smithery — MCPサービスレジストリ
OpenAI — text-embedding-3-small
CF Agents SDK — MCPサーバー実装
ライセンス
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Svanik-yan/disvr'
If you have feedback or need assistance with the MCP directory API, please join our Discord server