构建 AI 原生数据发现的 MCP 服务器:Rust Crates 生态系统:第一部分

发布: (2025年12月4日 GMT+8 19:53)
3 min read
原文: Dev.to

Source: Dev.to

介绍

传统的数据探索依赖预定义的查询——SQL 代码、仪表盘、BI 工具。
如果你可以以对话的方式探索数据仓库,提出开放式问题,让 AI 发现你从未想到的模式,会怎样?

模型上下文协议(MCP)让这成为可能。我构建了一个用于分析 Rust 生态系统的 MCP 服务器,并让 Claude 对其进行探索,回答有关 crates、依赖关系和趋势的问题。

如果你想跟随操作,请查看完整项目的 Rust Crates Analytics Repo

理解 crates.io 数据

当你下载并解压 crates.io DB 转储(请参阅 README 中的 download link),你会得到:

  • 一个包含本地加载说明的 PostgreSQL 转储。
  • data 文件夹,包含表示实际内容的 CSV 文件。

实体概览

实体描述
crates发布到 crates.io 的 Rust 包
versionscrate 的特定发行版(例如 serde v1.0.228
categories分类学分类(例如 science::bioinformatics
keywords用于可发现性的用户自定义标签(例如 cargosql
teams可以拥有 crates 的组织账户(GitHub)
users个人开发者账户(GitHub)

事实表

  • version_downloads – 每个版本每日的时间序列下载计数(仅最近 3 个月)。
  • crate_downloads – 每个 crate 的累计总下载计数。

关联表

  • crates_categories – 将 crates 与 categories 关联。
  • crate_owners – 将 crates 与用户或团队关联。
  • crates_keywords – 将 crates 与 keywords 关联。
  • dependencies – 将版本与其依赖的 crates 关联。

支持表

  • metadata – 包含一行 total_downloads
  • reserved_crate_names – 受保护/不可用的 crate 名称列表。
  • default_versions – 将 crates 与其默认版本关联。

历史数据

  • version_downloads 表仅保留最近三个月的数据。
  • 较早的每日 CSV 转储(可在 crates.io 网站获取)包含 version_iddownloads 列;日期需从文件名推断。
  • 所有其他表表示转储时生态系统的状态(例如 crates.created_atcrates.updated_at)。

关键要点

  • DB 转储每天刷新,反映下载时的生态系统状态。
  • 每天,会有一天的数据从三个月窗口中移除并放入 CSV 存档。
  • 分析中最重要的表是 cratesversionsversion_downloadsdependencies

架构概览

ELT 流水线设计

| 层 | 目的 | |---------

Back to Blog

相关文章

阅读更多 »