DevGlobe について
DevGlobe は人間と AI エージェントの双方に向けたオープンソースの人材グラフです。3D 地球儀上に開発者を表示し、スキル、所在地、言語で検索できます。GitHub と StackOverflow の貢献データに基づいてスコアを算出し、MCP エンドポイントも公開しています。
主な機能
- 013D 地球儀上での開発者の所在表示
- 02ベクトル検索とハイブリッド検索
- 036 つの指標による 0〜100 の総合スコア
- 04国や言語で絞り込めるランキング
- 05公開プロフィールを検索できるホスト型 MCP エンドポイント
- 06プライベートなコーディング統計を扱う VS Code 拡張機能
活用シーン
- 01スキルや地域からオープンソース開発者を探す
- 02AI エージェントによる公開プロフィールの検索
- 03同梱のサンプルデータでローカル環境を試す
MCP 対応
本プロジェクトは /mcp で公開されるリモート MCP エンドポイントを提供し、公開開発者プロフィールの検索に利用できます。認証済みエージェントは、開発者の同意を前提とした紹介をリクエストすることもできます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://www.devglobe.dev/mcpclaude mcp add --transport http sajeetharan-devglobe https://www.devglobe.dev/mcp{"mcpServers":{"sajeetharan-devglobe":{"type":"http","url":"https://www.devglobe.dev/mcp"}}}Cursor で開く{"servers":{"sajeetharan-devglobe":{"type":"http","url":"https://www.devglobe.dev/mcp"}}}VS Code で開く{"mcpServers":{"sajeetharan-devglobe":{"type":"http","url":"https://www.devglobe.dev/mcp"}}}{"mcpServers":{"sajeetharan-devglobe":{"serverUrl":"https://www.devglobe.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
8| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | 結果の最大数(1~20) |
| query | string | はい | 自然言語による公開検索の意図(必須)。例:"TypeScript maintainers" または開発者名 |
| language | string | いいえ | 任意の主要なプログラミング言語。例:"TypeScript" |
| location | string | いいえ | 任意の公開所在地テキスト。例:"Germany" や "Colombo" |
| opportunityType | enum | いいえ | 任意の本人申告による現在の機会タイプ。対応可能かどうかを推測しないでくださいemployment | contract | open-source | speaking | mentoring |
| availableForAgents | boolean | いいえ | ユーザーが、検証済みのエージェントリクエストを受け付けるプロフィールを必要としている場合にのみ true に設定してください |
詳細
🌐 DevGlobe
人間とAIエージェントのためのオープンソース人材グラフ。
26,000人以上の開発者 · スター数、コミット数、リポジトリのリーチ、StackOverflowでの評価に基づいてランク付け · スキル、所在地、言語で検索可能
DevGlobeは、人間とAIエージェントのためのオープンソース人材グラフです。3D開発者マップとAzure Cosmos DBのベクトル検索およびハイブリッド検索を組み合わせ、人気だけに頼るのではなく、実際の貢献シグナルから関連性の高い専門知識を見つけ出します。長期的なビジョンは、AIエージェントが適切な人間の協力者を見つけられる、同意を重視したディスカバリー層です。
動的アプリケーションはAzure Container Appsでホストされています。製品、API、MCP、エージェントスキル、およびエージェント対応に関するドキュメントは、別途GitHub Pagesで公開されています。
重要
AIエージェントをDevGlobeに接続する: MCP対応エージェントは、ホストされたエンドポイント
https://www.devglobe.dev/mcpを使用して、認証情報なしで公開開発者プロフィールを検索できます。認証済みエージェントは、開発者の承認を得た紹介をリクエストすることもできます。MCPセットアップガイドをご覧ください。コーディング中に表示される: DevGlobe: Live Coding Globeをインストールし、Go Liveを選ぶと、非公開のコーディング統計を作成しながら地球儀に表示されます。この拡張機能がソースコード、ファイルパス、リポジトリ、ブランチ、キーストロークを読み取ることはありません。
🎬 DevGlobeのデモを見る
✨ 機能
- インタラクティブな3D地球儀 — Three.jsを使用し、実際の所在地にピン留めされた開発者を探索できます
- AIを活用した検索 — Azure Cosmos DBによるハイブリッド検索とベクトル検索(例:「AIとディープラーニング」、「フルスタックJS開発者」)
- 複合スコアリング — 各開発者を6つの指標で0~100点で評価します
- リーダーボード — 国や言語で絞り込んだり、スコア/スター数/コミット数で並べ替えたりできます
- 開発者プロフィール — ピンをクリックすると、詳細な統計、上位リポジトリ、貢献の内訳を確認できます
- リモートMCPアクセス — エージェントは、ホストされたツールを通じて開発者を見つけ、同意を得た紹介をリクエストできます
- VS Code拡張機能 — 開発者地球儀に表示し、非公開のコーディング統計を作成し、開発者を検索して、エディターからMCPを設定できます
- モバイル対応 — 小さな画面向けのボトムシート式フィルターと全幅検索
🚀 クイックスタート
オプション 1:設定不要(サンプルデータを使用。データベースは不要)
git clone https://github.com/sajeetharan/devglobe.git
cd devglobe
npm install
npm run dev
# Open http://localhost:3000
Cosmos DB の認証情報が設定されていない場合、アプリはバンドルされているサンプルデータ(開発者 20 人)に自動的にフォールバックします。API キーもエミュレーターもセットアップも不要です。クローンして実行するだけです。
テキスト検索は完全にオフラインで動作します。ベクトル検索/ハイブリッド検索には Azure OpenAI が必要です(オプション 3 を参照)。
オプション 2:Cosmos DB Emulator(ローカルでデータベースの全機能を利用)
API レイヤーまたはデータパイプラインに取り組むコントリビューター向けです。
-
Cosmos DB Emulator をインストールします — こちらからダウンロード(Windows、Docker 経由の macOS、または Linux Docker)
-
エミュレーターを起動し、
https://localhost:8081で準備が完了するまで待ちます -
サンプルデータをエミュレーターにシードします:
npm run seed-emulator -
.env.localを作成します(シードスクリプトが表示します):COSMOS_ENDPOINT=https://localhost:8081 COSMOS_KEY=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw== -
アプリを実行します:
npm run dev
上記のエミュレーターキーは、Microsoft の既知のエミュレーターキーです。意図的に公開されており、ローカルでのみ動作します。
オプション 3:Azure バックエンドの全機能(ベクトル検索+ハイブリッド検索)
AI を活用した検索を含む、すべての機能を利用する場合:
# .env.local
COSMOS_ENDPOINT=https://your-account.documents.azure.com:443/
COSMOS_KEY=your-cosmos-key
AZURE_OPENAI_ENDPOINT=https://your-openai.openai.azure.com/
AZURE_OPENAI_KEY=your-openai-key
EMBEDDING_DEPLOYMENT=text-embedding-3-small
AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-4o-mini
AZURE_OPENAI_CHAT_DEPLOYMENT を設定すると、ID カードに自動生成された豆知識が表示されます。チャットデプロイが利用できない場合、カードには事実に基づくプロフィール文が表示されます。
本番環境では、Next.js アプリケーションを Azure Container Apps から、高トラフィックの公開 API の読み取りを Azure Functions から、開発者スナップショットを Azure Blob Storage から配信します。リソースの構成、環境の切り替え、デプロイの確認については、docs/azure-backend.md を参照してください。
npm run dev
🏗️ 技術スタック
| レイヤー | テクノロジー |
|---|---|
| フロントエンド | React 19、Three.js (react-globe.gl)、Next.js 15 |
| 検索 | Azure Cosmos DB(ベクトル検索+ハイブリッド検索) |
| API | Next.js API Routes |
| ホスティング | Azure Container Apps と Azure Functions |
| データパイプライン | Node.js スクリプト(GitHub GraphQL、StackOverflow API、ジオコーディング) |
📊 スコアリング計算式(0~100)
| 指標 | 重み | ソース |
|---|---|---|
| GitHub スター | 20% | リポジトリ全体のスター数 |
| GitHub コミット | 20% | 年間のコミットアクティビティ |
| リポジトリのリーチ | 15% | フォーク数+ウォッチャー数 |
| SO 評判 | 25% | StackOverflow の評判 |
| SO エンゲージメント | 15% | 回答の承認数 × 件数 |
| コミュニティ | 5% | フォロワー数+バッジ数 |
外れ値がスコアを支配しないよう、すべての指標を対数正規化します。
🔧 完全なデータセットの構築
API キーが必要です。.env.example を .env にコピーし、トークンを入力してください。
npm run fetch-github # Fetch top devs from GitHub GraphQL
npm run fetch-stackoverflow # Enrich with StackOverflow reputation
npm run geocode # Convert locations to lat/lng
npm run build-data # Run full pipeline
npm run upload-cosmos # Upload to Azure Cosmos DB
開発者の認定資格
確認済みのコミュニティ認定資格は、各開発者ドキュメントに明示的に保存されています。スター数、フォロワー数、プロフィールの文章から推測しないでください。
{
"login": "example",
"specialTags": ["github-star", "microsoft-mvp", "aws-community-builder"]
}
対応 ID:github-star、microsoft-mvp、google-developer-expert、docker-captain、cncf-ambassador、aws-hero、aws-community-builder。従来の docker-champion ID も引き続きサポートされます。アップロードスクリプトはこのフィールドをソース JSON から保持し、一覧、詳細、検索の各 API は Cosmos DB からこのフィールドを取得します。
公式の GitHub Stars、Google Developer Experts、CNCF Ambassadors の名簿から、GitHub ログイン名が正確に一致するものを登録します:
npm run populate-special-tags # Dry run
npm run populate-special-tags -- --apply # Patch verified matches in Cosmos DB
このコマンドは既存のタグを保持し、何度実行しても結果は変わりません。その他の認定資格については、開発者の GitHub アカウントを明示的に特定している公式プロフィールが必要です。表示名との照合で登録しないでください。
📁 プロジェクト構成
├── index.html # Entry HTML
├── src/
│ ├── main.jsx # Application bootstrap
│ ├── App.jsx # Root component, data loading
│ ├── components/
│ │ ├── Globe.jsx # 3D globe (react-globe.gl)
│ │ ├── Leaderboard.jsx # Ranked sidebar with filters
│ │ ├── SearchBar.jsx # Hybrid/vector search input
│ │ ├── DetailPanel.jsx # Developer detail card
│ │ ├── Header.jsx # Top bar with branding
│ │ └── LoadingOverlay.jsx # Loading state
│ └── utils/
│ ├── scoring.js # Composite scoring algorithm
│ └── format.js # Number formatting helpers
├── api/
│ ├── developers.js # List all developers
│ ├── developer.js # Single developer lookup
│ └── search.js # Cosmos DB vector/hybrid search
├── scripts/ # Data pipeline scripts
├── styles/main.css # Dark theme styles
└── data/
└── developers-sample.json # Sample data for local dev
🌍 Azure Container Apps へのデプロイ
main へのプッシュをトリガーに、Azure Container Registry でスタンドアロンの Next.js イメージをビルドし、GitHub Actions OIDC を通じて Azure Container Apps にデプロイします。デプロイ用の ID には、アプリケーションのリソースグループにスコープを限定した Contributor アクセスと、次のリポジトリ変数が必要です:AZURE_CLIENT_ID、AZURE_TENANT_ID、AZURE_SUBSCRIPTION_ID。
必須の環境変数:
| 変数 | 用途 |
|---|---|
COSMOS_ENDPOINT | Azure Cosmos DB エンドポイント |
COSMOS_KEY | Azure Cosmos DB キー |
COSMOS_DATABASE | データベース名 |
COSMOS_CONTAINER | コンテナー名 |
COSMOS_ACTIVITY_CONTAINER | GitHub アクティビティのローリングコンテナー(activities) |
COSMOS_CONTACTS_CONTAINER | 非公開のライフサイクルメール連絡先コンテナー(developer-contacts) |
COSMOS_ENGAGEMENT_CONTAINER | プライバシーフィルター適用済みのエンゲージメントイベント(デフォルト:engagement-events) |
COSMOS_CONTRIBUTION_STATE_CONTAINER | GitHub 推奨の共有クォータ状態(デフォルト:contribution-opportunity-state) |
ENGAGEMENT_HASH_SECRET | セッションウィンドウの重複排除用 HMAC シークレット。デフォルトは SESSION_SECRET です |
ACTIVITY_INGEST_SECRET | アクティビティ収集エンドポイント用ベアラーシークレット |
RESEND_API_KEY | claim メールと承認メール用のオプションの Resend API キー |
EMAIL_FROM | Resend で検証済みのドメイン上の送信者 |
COSMOS_WATCHLIST_CONTAINER | オプションの非公開ウォッチリストコンテナー名(デフォルト:watchlists) |
COSMOS_IMPACT_HISTORY_CONTAINER | オプションのインパクトスナップショットコンテナー名(デフォルト:impact-history) |
COSMOS_LIVE_PRESENCE_CONTAINER | オプトイン式のライブハートビートコンテナー(デフォルト:live-presence) |
COSMOS_CODING_STATS_CONTAINER | 非公開の日次コーディング集計(デフォルト:coding-stats) |
CRON_SECRET | 保護された cron エンドポイントと Azure Timer Functions で共有するベアラートークン |
EMAIL_PREFERENCE_SECRET | 週次メールの配信停止リンク用 HMAC シークレット。デフォルトは SESSION_SECRET です |
ライフサイクルメールはトランザクションメールであり、可能な範囲で送信されます。claim には、GitHub OAuth を通じて認証された検証済みのプライマリメールアドレスを使用します。自薦の場合は、通知先として明示的に同意を得たメールアドレスを収集します。メールアドレスは非公開の developer-contacts コンテナーにのみ保存され、公開 API から公開されたり、開発者ドキュメントにコピーされたりすることはありません。デプロイ前にコンテナーを作成してください:
npm run setup-contacts-container
ライフサイクルメールの PRDを参照してください。
claim 済みプロフィールの表示インサイトでは、ハッシュ化されたセッション ID を含む許可リスト登録済みのエンゲージメントイベントを使用します。デプロイ前に node scripts/setup-engagement-container.js を実行して、TTL が有効なコンテナーを作成してください。イベントの意味、プライバシーのしきい値、削除動作については、エンゲージメント分析の仕様を参照してください。
claim 済みの開発者は、パーソナライズされたオープンソース貢献の推奨を設定することもできます。候補は、貢献ガイドラインのあるリポジトリ内の、公開されていて新しく、未割り当ての GitHub イシューのみです。デプロイ前に node scripts/setup-contribution-state-container.js を実行して、共有クォータ状態コンテナーを作成してください。貢献機会の仕様を参照してください。
検証済みユーザーは、ユーザーメニューから月曜日の週次ダイジェストを明示的にオプトインできます。初回の実行では、メールを送信せずに非公開の比較基準を記録します。それ以降のメッセージは、順位の変動、新しい貢献機会、または保留中の紹介リクエストがある場合に送信され、該当するアクションへの、送信元を示すディープリンクが含まれます。Azure Functions アプリは、毎週月曜日の 13:00 UTC に /api/cron/weekly-digest を呼び出します。対象となるのは、productUpdatesEnabled: true の検証済み連絡先のみです。各メッセージにはユーザーごと、週ごとの冪等性キーが使用され、ワンクリック配信停止ヘッダーと署名付き配信停止リンクが含まれます。
公開されている未 claim のプロフィールをもとに、手動確認用のアクティベーションキューと週次ソーシャルスポットライトを生成します:
npm run activation-campaign -- --limit=100 --output=data/activation-campaign.json
このコマンドは Cosmos DB に対して読み取り専用で動作し、メッセージの送信や非公開の連絡先情報の取得は行いません。開発者に連絡する前に、各下書きを確認し、適切な公開チャネルを通じて連絡してください。
開発者のリアルタイムアクティビティ
アクティビティタブは匿名で、インデックス登録された開発者の過去24時間のローリングフィードを表示します。デプロイ前に専用の Cosmos コンテナーを作成してください。
npm run setup-activity-container
functions/activity-ingest を Azure Timer Function としてデプロイし、以下のアプリケーション設定を構成してください。
ACTIVITY_INGEST_URL=https://your-site.example/api/activities/ingest
ACTIVITY_INGEST_SECRET=the-same-secret-configured-on-the-site
タイマーは毎分コレクターを実行します。これは GitHub が公表しているポーリング間隔に一致します。GitHub の公開 Events API はベストエフォートであり、イベントの遅延や欠落が発生する場合があります。ブラウザーが15秒ごとに更新されても、その間隔内に GitHub からデータが届くことは保証されません。3ページすべてを収集するには、有効な GITHUB_TOKEN が必要です。匿名の場合は1ページのみを確認します。Cosmos アクティビティコンテナーの TTL は48時間ですが、API が公開するのは直近24時間分のみです。
リアルタイムのコーディング状況と非公開の統計
/space の地球儀には、開発者がアクティブな間、DevGlobe エディター拡張機能から30秒ごとにオプトインのハートビートが送信されます。エディターのアクティビティが1分間ないと、ハートビートは一時停止します。プレゼンスは90秒間リアルタイムで表示され、その後も最大15分間、最近コーディングしていた状態として表示されます。開発者は、範囲が制限されたコーディング状況を共有したり、使用中のコーディングエージェントとモデルを明示したり、25分または50分の集中セッションに参加したり、サインインユーザーからレート制限付きのウェーブを受け取ったりできます。同じ言語を使用する集中状態の開発者同士は、一時的に地球儀上でつながります。プレゼンスを停止すると、非公開の交流レポートが表示されます。1日のコーディング時間、連続記録、実績、言語別の時間、エディター使用時間は、有効なハートビートが連続した場合のみ算出され、サインイン中の開発者本人だけが確認できます。この機能では、DevGlobe がエージェントの使用状況を推測したり、ソースコード、ファイルパス、リポジトリ、ブランチ、プロンプト、応答、モデルの通信、キーストロークを収集したりすることはありません。
本番環境でこの機能を有効にする前に、TTL を有効にした両方のコンテナーをプロビジョニングしてください。
npm run setup-live-presence-container
npm run setup-coding-stats-container
エディターディレクトリでは、VS Code、Cursor、Windsurf、VSCodium、Positron、Void、Antigravity 向けに、それぞれに合わせたインストール方法を案内しています。リリース v0.6.0 は Marketplace と GitHub Releases の両方から入手できます。同じ VSIX は互換性のある VS Code フォークでも使用できます。Open VSX への公開には、devglobedev 名前空間と OVSX_PAT リポジトリシークレットが必要です。
Publish editor extension ワークフローを手動で実行して、1つの成果物の検証とパッケージ化を行い、その後、GitHub Release、Visual Studio Marketplace、Open VSX のいずれかを公開先として選択してください。公開者の認証情報は、VSCE_PAT と OVSX_PAT の GitHub Actions シークレットにのみ保存してください。
インパクト履歴の取得
functions ディレクトリを Azure Function App にデプロイし、15分間隔のインパクト履歴タイマー用に以下のアプリケーション設定を構成してください。
IMPACT_HISTORY_URL=https://www.devglobe.dev/api/cron/impact-history
CRON_SECRET=the-same-secret-configured-on-the-container-app
タイマーは、RU の上限を考慮したバッチ処理で、現在の UTC 日の取得を再開します。Cosmos の処理は Next.js エンドポイントが実行するため、IMPACT_HISTORY_CONCURRENCY と IMPACT_HISTORY_BATCH_SIZE は Container App に設定してください。
メール確認リマインダー
Azure Functions アプリは、保護されたリマインダーエンドポイントを毎日14:00 UTCに呼び出します。アプリケーションは、トランザクションメールへの同意があり、過去72時間以内にリマインダーを受け取っていない未確認の連絡先にのみリマインダーを送信します。確認済みの連絡先には、直ちにリマインダーが送信されなくなります。
Azure Function App に以下のアプリケーション設定を構成してください。
EMAIL_VERIFICATION_REMINDERS_URL=https://www.devglobe.dev/api/cron/email-verification-reminders
WEEKLY_DIGEST_URL=https://www.devglobe.dev/api/cron/weekly-digest
CRON_SECRET=the-same-secret-configured-on-the-container-app
各タイマーとその function.json が含まれるよう、functions ディレクトリ全体をデプロイしてください。
DevGlobe を支援する
DevGlobe は独立して保守されており、無料で利用できます。GitHub スポンサーシップは、Azure のホスティングとオブザーバビリティ、公開データの更新、GitHub API を利用した処理、セキュリティ更新、テスト、オープンソースの保守に役立てられます。
スポンサーシップが開発者のランキング、検索結果での表示順、モデレーション、非公開の開発者情報へのアクセスに影響することはありません。ティア、特典、費用、現在のマイルストーンについては、資金調達と透明性に関するポリシーをご覧ください。
🤝 貢献
コントリビューションを歓迎します!セットアップ手順と、支援が必要な分野についてはCONTRIBUTING.mdをご覧ください。
🤖 MCP サーバー
DevGlobe は、公開されている開発者の検索と、同意を得たエージェントの紹介に対応する、ホスト型の Streamable HTTP MCP エンドポイントを提供します。
https://www.devglobe.dev/mcp
公開検索とプロフィールの参照は匿名で利用できます。紹介リクエストの送信とステータスの確認には、発行済みのエージェント認証情報が必要です。リモート MCP に対応していないクライアント向けに、ローカルの stdio コネクターも引き続き利用できます。
npm run mcp
認証情報のプロビジョニング、Cosmos DB のセットアップ、クライアントの設定、同意のライフサイクルについては、docs/mcp-server.mdをご覧ください。機械可読なディスカバリー、WebMCP、外部 DNS-AID のデプロイ手順については、docs/agent-readiness.mdに記載されています。
📄 ライセンス
MIT — 詳細についてはLICENSEをご覧ください。
**⭐ このリポジトリにスターを付ける**と、役に立ったことを伝えられます!
@sajeetharan が ❤️ を込めて開発しました
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。