mcpField
D
DevGlobe

DevGlobe

远程服务
github.com/sajeetharan商业与营销333 周前更新
代码仓库

关于 DevGlobe

DevGlobe 是面向人类与 AI Agent 的开源人才图谱,可在 3D 地球上查找开发者并按技能、地点和语言搜索。它基于 GitHub 与 StackOverflow 的贡献信号进行综合评分,并提供可公开访问的 MCP 端点。

主要功能

  1. 013D 地球展示开发者位置
  2. 02基于向量与混合检索的开发者搜索
  3. 030–100 综合评分(6 个维度)
  4. 04按国家、语言及分数排序的排行榜
  5. 05无需凭据即可访问的远程 MCP 端点
  6. 06VS Code 扩展支持私有编码统计

适用场景

  1. 01按技能或地区查找开源开发者
  2. 02让 AI Agent 搜索公开开发者资料
  3. 03在本地以示例数据体验开发者图谱界面

MCP 相关

该项目向 MCP 客户端提供托管在 /mcp 的远程端点,用于搜索公开开发者资料;验证过的 Agent 还可请求经开发者同意的引荐。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://www.devglobe.dev/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 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

8
参数类型必填说明
limitinteger否结果数上限,范围为 1 到 20
querystring是必填的自然语言公开搜索意图,例如 "TypeScript maintainers" 或开发者姓名
languagestring否可选的主要编程语言,例如 "TypeScript"
locationstring否可选的公开地点文本,例如 "Germany" 或 "Colombo"
opportunityTypeenum否可选的、由本人声明的当前机会类型;不要推断其可用状态employment | contract | open-source | speaking | mentoring
availableForAgentsboolean否仅当用户需要查找接受已验证 Agent 请求的个人资料时,才设为 true

详细介绍

🌐 DevGlobe

面向人类和 AI Agent 的开源人才图谱。

Live Demo Documentation VS Code GitHub Stars GitHub Sponsors License PRs Welcome

DevGlobe 演示

超过 26,000 名开发者 · 根据星标、提交、仓库影响力和 StackOverflow 声望排名 · 可按技能、地点和语言搜索

DevGlobe 是面向人类和 AI Agent 的开源人才图谱。它将 3D 开发者地图与 Azure Cosmos DB 向量和混合搜索相结合,根据真实贡献信号而非单纯的人气,发掘相关专业人才。长远愿景是构建一个尊重同意的发现层,让 AI Agent 能找到合适的人类协作者。

动态应用托管在 Azure Container Apps 上。产品、API、MCP、Agent Skill 和 Agent 就绪情况相关文档另行发布于 GitHub Pages。

重要

**将 AI Agent 连接到 DevGlobe:**兼容 MCP 的 Agent 可使用托管端点 https://www.devglobe.dev/mcp,无需凭据即可搜索公开的开发者档案。经过验证的 Agent 还可以申请由开发者批准的引荐。请参阅 MCP 设置指南。

**编码时展示自己的动态:**安装 DevGlobe: Live Coding Globe,选择 Go Live,即可在开发时出现在地球仪上,同时生成私密的编码统计数据。此扩展绝不会读取源代码、文件路径、仓库、分支或按键记录。

🎬 观看 DevGlobe 演示


✨ 功能

  • 交互式 3D 地球仪 — 使用 Three.js 探索标注在真实地理位置上的开发者
  • AI 驱动的搜索 — 通过 Azure Cosmos DB 提供混合搜索和向量搜索(例如“AI 和深度学习”“全栈 JS 开发者”)
  • 综合评分 — 从 6 个维度为每位开发者打分,范围为 0–100
  • 排行榜 — 按国家或语言筛选,或按分数、星标和提交数排序
  • 开发者档案 — 点击任意标记,查看详细统计数据、热门仓库和贡献明细
  • 远程 MCP 访问 — Agent 可通过托管工具发现开发者,并申请需经同意的引荐
  • 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 层或数据管道的贡献者:

  1. 安装 Cosmos DB Emulator — 在此处下载(Windows、通过 Docker 使用的 macOS,或 Linux Docker)

  2. 启动模拟器,并等待其在 https://localhost:8081 就绪

  3. 将示例数据植入模拟器:

    npm run seed-emulator
    
  4. 创建 .env.local(植入脚本会为你打印此内容):

    COSMOS_ENDPOINT=https://localhost:8081
    COSMOS_KEY=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==
    
  5. 运行应用:

    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 可在身份卡片上生成趣味事实。聊天部署不可用时,卡片会使用基于事实的个人资料文案。

生产环境通过 Azure Container Apps 提供 Next.js 应用,通过 Azure Functions 提供高流量公共 API 读取,并通过 Azure Blob Storage 提供开发者快照。有关资源布局、环境切换和部署检查,请参阅 docs/azure-backend.md。

npm run dev

🏗️ 技术栈

层技术
前端React 19、Three.js (react-globe.gl)、Next.js 15
搜索Azure Cosmos DB(向量 + 混合搜索)
APINext.js API Routes
托管Azure Container Apps 和 Azure Functions
数据管道Node.js 脚本(GitHub GraphQL、StackOverflow API、地理编码)

📊 评分公式(0–100)

维度权重来源
GitHub Stars20%所有仓库的星标总数
GitHub 提交20%年度提交活动
仓库影响力15%Fork 数 + 关注者数
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 后,GitHub Actions 会通过 OIDC 在 Azure Container Registry 中构建独立的 Next.js 镜像,并将其部署到 Azure Container Apps。部署身份需要在应用资源组范围内拥有 Contributor 访问权限,以及以下仓库变量:AZURE_CLIENT_ID、AZURE_TENANT_ID 和 AZURE_SUBSCRIPTION_ID。

必需的环境变量:

变量用途
COSMOS_ENDPOINTAzure Cosmos DB 终结点
COSMOS_KEYAzure 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活动收集器端点的 Bearer 密钥
RESEND_API_KEY用于认领和审批邮件的可选 Resend API 密钥
EMAIL_FROMResend 已验证域名上的发件人
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 共用的 Bearer 令牌
EMAIL_PREFERENCE_SECRET用于每周邮件退订链接的 HMAC 密钥;默认使用 SESSION_SECRET

生命周期邮件属于事务性邮件,并会尽力发送。认领操作使用通过 GitHub OAuth 授权的已验证主邮箱;自荐操作则会收集经明确同意后提供的通知邮箱地址。地址仅存储在私密的 developer-contacts 容器中,绝不会通过公共 API 暴露,也不会复制到开发者文档中。部署前请创建该容器:

npm run setup-contacts-container

请参阅生命周期邮件 PRD。

已认领个人资料的可见性洞察使用带哈希会话 ID 的允许列表互动事件。部署前,请使用 node scripts/setup-engagement-container.js 创建启用了 TTL 的容器。有关事件语义、隐私阈值和删除行为,请参阅互动分析规范。

已认领的开发者还可以配置个性化开源贡献推荐。候选项仅来自近期、未分配且公开的 GitHub issue,且所在仓库需提供贡献指南。部署前,请使用 node scripts/setup-contribution-state-container.js 创建共享配额状态容器。请参阅贡献机会规范。

已验证用户可以在用户菜单中明确选择加入每周一发送的周报。首次运行会记录私密的对比基线,但不会发送邮件;之后只有在排名变动、出现新的贡献机会或存在待处理的介绍请求时才会发送消息,并包含指向相关操作且带有来源归因的深层链接。Azure Functions 应用会在每周一 13:00 UTC 调用 /api/cron/weekly-digest;只有设置了 productUpdatesEnabled: true 的已验证联系人符合条件。每封邮件使用按用户和周生成的幂等键,并包含一键退订标头和已签名的退订链接。

根据公开且未认领的个人资料,生成供人工审核的激活队列和每周社交焦点:

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 源会在此间隔内送达数据。要完整采集三页数据,必须提供有效的 GITHUB_TOKEN;匿名回退模式仅检查一页。Cosmos 动态容器的 TTL 为 48 小时,而 API 仅提供最近 24 小时的数据。

实时编码状态与私密统计

当开发者处于活跃状态时,/space 地球仪每 30 秒接收一次来自 DevGlobe 编辑器扩展的自愿加入心跳。编辑器无活动满一分钟后,心跳会暂停。在线状态实时显示 90 秒,并会以「最近在编码」状态保留最多 15 分钟。开发者可以选择分享有限的编码状态,明确指定编码 Agent 和模型,加入 25 分钟或 50 分钟的专注时段,并接收已登录用户发出的限频挥手。使用相同语言的专注开发者会在地球仪上形成临时连接;停止在线状态后,会返回一份私密的陪伴回顾。每日编码总时长、连续记录、成就、语言时长和编辑器时长仅根据连续有效的心跳计算,且只有已登录的开发者本人可以查看。DevGlobe 不会推断 Agent 使用情况,也不会为此功能收集源代码、文件路径、代码库、分支、提示词、回复、模型流量或击键记录。

在生产环境启用该功能前,请预先创建这两个启用了 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 仓库机密。

手动运行 发布编辑器扩展 工作流,验证并打包一个构件,然后选择 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 日期的数据。请在 Container App 上保留 IMPACT_HISTORY_CONCURRENCY 和 IMPACT_HISTORY_BATCH_SIZE 设置,因为 Next.js 端点会执行 Cosmos 操作。

邮件验证提醒

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

请部署完整的 functions 目录,以包含每个计时器及其 function.json。

支持 DevGlobe

DevGlobe 由独立团队维护,可免费使用。GitHub 赞助有助于支付 Azure 托管与可观测性、公共数据更新、基于 GitHub API 的处理、安全更新、测试和开源维护的费用。

赞助绝不会影响开发者排名、搜索位置、内容审核或对开发者私人信息的访问。有关赞助档位、权益、费用和当前里程碑,请参阅资金与透明度政策。

🤝 贡献

欢迎贡献!请参阅 CONTRIBUTING.md,了解设置说明以及需要帮助的方面。

🤖 MCP 服务

DevGlobe 提供托管的 Streamable HTTP MCP 端点,用于公开发现开发者以及需要用户同意的 Agent 介绍:

https://www.devglobe.dev/mcp

公开搜索和个人资料查询可匿名使用。介绍请求和状态轮询需要已签发的 Agent 凭据。对于不支持远程 MCP 的客户端,仍可使用本地 stdio 连接器:

npm run mcp

请参阅 docs/mcp-server.md,了解凭据配置、Cosmos DB 设置、客户端配置和同意流程。docs/agent-readiness.md介绍了机器可读的发现机制、WebMCP 和外部 DNS-AID 部署步骤。

📄 许可证

MIT — 详情请参阅 LICENSE。


如果觉得这个仓库有用,请 ⭐ 为它点星!

由 @sajeetharan 倾情打造 ❤️

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。