mcpField
N
NobodyNamed

NobodyNamed

远程服务
github.com/michaelcolenso游戏娱乐01 周前更新
代码仓库

关于 NobodyNamed

NobodyNamed 展示基于美国社会保障局(SSA)记录的婴儿姓名流行度数据,涵盖 1880 年以来的趋势。它面向希望探索姓名变化的人,也提供下载、汇总和分析数据的 Node.js 脚本。

主要功能

  1. 01按姓名查看年度人数和占比
  2. 02按年份及频率筛选姓名
  3. 03计算峰值、局部峰值和标准化值
  4. 04导出 JSON、CSV 等格式
  5. 05分析姓名首音素的年度占比

适用场景

  1. 01追踪某个姓名的流行度变化
  2. 02按年份或出现频次缩小数据集
  3. 03将姓名数据导出供其他分析使用

配置

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

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

工具

12
参数类型必填说明
qstring是要搜索的名称前缀(例如 "Jen"、"The")

详细介绍

nobodynamed

你的名字正逐渐消失吗?nobodynamed 基于美国社会保障局的数据,展示自 1880 年以来任何美国名字的流行度、趋势和存续状态。

技术栈

层服务
前端 + APICloudflare Pages + Pages Functions
数据库Cloudflare D1(SQLite)
年度数据刷新Cloudflare Worker(Cron Trigger + Queues)
归档存储Cloudflare R2

仓库结构

apps/
  web/             Cloudflare Pages: static HTML/CSS/JS + Functions
    public/        Served as static assets
    functions/     Pages Functions (API routes + SSR /name/:name)
  ingest-worker/   Cron-triggered Worker: SSA download → D1

packages/
  shared/          Types, classification logic, HTML renderer — shared by all packages

migrations/        D1 SQL migrations (applied via wrangler d1 migrations apply)

scripts/
  seed-from-shards.ts   One-shot initial D1 seeding from legacy JSON shards
  verify-parity.ts      Pre-cutover parity checks vs legacy data

viz/               Legacy static site (GitHub Pages) — kept until DNS cutover

首次设置

1. 配置 Cloudflare 资源
# D1 database
wrangler d1 create name-vitals
# Copy the database_id into both wrangler.toml files:
#   apps/web/wrangler.toml
#   apps/ingest-worker/wrangler.toml

# Queue (fan-out ingest)
wrangler queues create name-ingest
wrangler queues create name-ingest-dlq

# R2 bucket (SSA zip cache)
wrangler r2 bucket create name-vitals-ingest
2. 应用架构
wrangler d1 migrations apply name-vitals --remote
3. 填充初始数据

读取现有的 viz/name-vitals/data/ JSON 分片并填充到 D1,无需从 SSA 拉取数据:

npm run seed
# Apply each generated SQL file:
ls migrations/seed/*.sql | sort | xargs -I{} wrangler d1 execute name-vitals --file={} --remote
4. 部署
npm run deploy:web       # deploy Cloudflare Pages
npm run deploy:ingest    # deploy the cron Worker
5. 验证一致性
tsx scripts/verify-parity.ts --base=https://<preview>.pages.dev

本地开发

# Pages + Functions with local D1
npm run dev:web

# Trigger the ingest cron locally
npm run dev:ingest          # starts wrangler dev
# then: curl http://localhost:8787/run

数据刷新

数据导入 Worker 每周运行一次(由 ETag 控制;如果 SSA zip 未变化,则立即退出)。SSA 每年发布一次新数据,通常在 5 月。手动触发:

wrangler dev --test-scheduled   # local
# or POST to the /run endpoint of the deployed Worker

GitHub Actions 密钥

CI/CD 工作流 .github/workflows/ 所需:

密钥值
CLOUDFLARE_API_TOKEN具有 Workers、Pages 和 D1 写入权限的令牌
CLOUDFLARE_ACCOUNT_ID你的 Cloudflare 账户 ID

从 GitHub Pages 切换 DNS

在 Pages 预览 URL 上验证一致性后:

  1. 在 Cloudflare 控制面板中为 Pages 项目添加自定义域名。
  2. 将 DNS CNAME 从 GitHub Pages 地址切换到 Cloudflare Pages CNAME。
  3. 在旧 GitHub Pages 的 index.html 中添加 301 重定向,将 /babynames/viz/name-vitals/* 重定向到新主机。
  4. 监控至少 1 周后,删除 viz/、dicts/、extra/ 以及任何剩余的旧文件。

许可证

源数据采用 CC0 许可(美国社会保障局)。代码采用 MIT 许可。

##设置

这是一个 Node.js 脚本,因此建议你在尝试运行之前下载 Node。

下载仓库只需克隆即可:

git clone https://github.com/TimeMagazine/babynames.git
cd babynames

然后安装依赖:

npm install

##数据

首先,你需要从美国社会保障局获取原始数据。运行以下命令即可由此脚本为你下载并解压数据:

./index.js download 

###每年出生的婴儿总数

此外,还有一个名为 extra/totals.json 的文件,其中包含每年出生的婴儿总数(或者至少是获得 SSN 的婴儿),数据来自 SSA。此数据很有用,因为总数高于姓名文件中各姓名数量的总和;姓名文件不包含出现次数少于 5 次的姓名。

如果你想重新下载数据——也许是新的一年,或者你怀疑数据已修订——只需运行 ./scripts/total_births.js,它会抓取 SSA 网站上的页面并覆盖仓库中的文件。

###婴儿姓名

美国社会保障局以不太方便的方式整理婴儿姓名数据:按年份划分为名为 yob[year].txt 的文本文件。上述命令会将这些文件提取到名为 data/ 的本地目录,然后删除下载的 zip 文件。如果你想保留该 zip 文件,只需在命令中添加 --cache。

完成后,你可以按姓名汇总数据,并以多种格式存储:

./index.js store --format=json

首先,脚本会读取每个文件,并按名称将数据存储在内存中。对于每个名称,它会记录某一年中该名称对应的婴儿人数,以及该名称在同一性别所有婴儿中的占比。计算时的分母是 SSA.gov 报告的按性别划分的婴儿总人数,而不是计算得出的所有婴儿姓名频次之和(由于数据只统计出现至少 5 次的姓名,这个总和会低于美国实际出生的儿童人数)。年份作为对象中的键存储,以便快速检索:

{
  "_id": "Lothar-M",
  "name": "Lothar",
  "gender": "M",
  "values": {
    "1927": 7,
    "1928": 6,
    "1929": 10,
    "1931": 6,
    "1932": 8,
    "1935": 8,
    "1956": 7,
    "1959": 5,
    "1964": 6,
    "1968": 5
  },
  "percents": {
    "1927": 0.0000062135232896167586,
    "1928": 0.000005418551494752584,
    "1929": 0.000009301278646775573,
    "1931": 0.000005775539435383265,
    "1932": 0.000007664935030094451,
    "1935": 0.00000768623999707923,
    "1956": 0.0000033120134297413128,
    "1959": 0.0000023436460007087187,
    "1964": 0.000003010349581862443,
    "1968": 0.0000028754074452349896
  }
}

###格式

可选项如下:

  • json:每个名称单独存储为一个 JSON 文件,位于 /flat/individual/ 目录中。
  • jsonp:每个名称单独存储为一个 JSON-P 文件,位于 /flat/individual/ 目录中。默认情况下,文件会封装在名为 ticallback 的回调函数中,你可以使用 opts.callback 覆盖它。
  • csvs:每个名称单独存储为一个 CSV 文件,位于 /flat/individual/ 目录中。
  • csv:将所有名称打包到一个 CSV 文件中,并存储在 /flat/names.csv/。如果不包含限制规格(见下文),该文件会有 30MB。这个预处理文件已包含在此仓库中。
  • mongodb:将所有名称插入 MongoDB 实例。你需要自行在 localhost:27017 运行 Mongo 服务器,或更新源代码以指向你的实例。*注意:*此选项是可选的,因此 mongodb Node 模块未列为依赖项,你需要自行安装。

##缩减数据量 截至 2013 年,有 102,691 个名称在至少一年中出现过至少 5 次。许多用户并不需要这么大量的数据。你可以通过命令行选项以多种方式缩小范围。

###限制年份

  • start:不获取早于此年份的数据。例如:--start=1950。默认值为 1880,即数据中的第一年。
  • end:不获取晚于此年份的数据。例如:--end=2000。默认值为当前年份。

###排除不常见的名称

  • min:不包含在至少一年中出现次数未达到此数量的名称。例如:--min=25。默认值为 0。
  • cutoff:不包含出现年份少于此数量的名称。例如:--cutoff=50。默认值为 0。

##分析

脚本提供了多个用于基础分析的选项:

  • normalize:为每个名称添加第三个属性,表示百分比数值的归一化值,使峰值百分比对应的年份为 1。
  • peaks:查找原始数值和百分比各自的峰值及对应年份。
  • maxima:识别所有局部最大值——即前后各 5 年的所有数值都更低的点。仅统计至少达到峰值 25% 的最大值。
  • pronunications:检查该名称是否列在 CMU Pronouncing Dictionary 中。需要手动运行 npm install cmudict。
  • dense:如果某个名称在 start 和 end 指定的范围内某一年没有出现,则在数据中将该年份列为 0。否则,该年份会完全省略(即“稀疏”格式)。

##类型 对于 csv 输出,你可以选择将数据以每年某个名字对应的新生儿数量原始值(--type=values,默认值)或百分比(--type=values)的形式获取。JSON 格式会同时返回百分比和数量值。

##音素 你还可以传入特殊类型 --type=phonemes,获取一份包含所有名字每年音素百分比的 JSON 文档。默认情况下,脚本会检查每个名字的第一个音素。你可以使用 --N==TK,按名字中第 TK 个音素进行汇总。使用负值可从末尾开始计数。

##附加内容 我们现在收录了可追溯至 1996 年的英国婴儿名字数据,于 2016 年 10 月 5 日从英国 国家统计局获取。活产总数从同一来源此处下载。

##许可

此脚本由 Time 按 MIT 许可证免费开源提供。如果你使用此脚本,我们诚挚地建议你注明 Time 并链接到此页面。

字典文件 dict/2of12.txt 来自 12 Dicts 项目,该项目属于公有领域。

评论

支持 Markdown

第一次接触 MCP?

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

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