原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

SNAC Archives

作者:ianderso版本 0.1.0i★ –i在你的电脑上运行
注册名称io.github.ianderso/snac-archives-mcp

安装

概览

作者提供的说明(英文原文)

Find which archive holds the papers: SNAC's index of archival collections, plus ArchiveGrid links.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 搜索与 AI 记忆

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 需要你自己填写: SNAC_API_URL, SNAC_CACHE_DIR, SNAC_TIMEOUT, SNAC_CONTACT

你需要

  • PyPI已安装 Python 的 uv(用于 uvx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "snac-archives": {
      "command": "uvx",
      "args": [
        "snac-archives-mcp"
      ],
      "env": {
        "SNAC_API_URL": "your-value",
        "SNAC_CACHE_DIR": "your-value",
        "SNAC_TIMEOUT": "your-value",
        "SNAC_CONTACT": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add snac-archives --env SNAC_API_URL=your-value --env SNAC_CACHE_DIR=your-value --env SNAC_TIMEOUT=your-value --env SNAC_CONTACT=your-value -- uvx snac-archives-mcp

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "snac-archives": {
      "command": "uvx",
      "args": [
        "snac-archives-mcp"
      ],
      "env": {
        "SNAC_API_URL": "your-value",
        "SNAC_CACHE_DIR": "your-value",
        "SNAC_TIMEOUT": "your-value",
        "SNAC_CONTACT": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "snac-archives": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "snac-archives-mcp"
      ],
      "env": {
        "SNAC_API_URL": "your-value",
        "SNAC_CACHE_DIR": "your-value",
        "SNAC_TIMEOUT": "your-value",
        "SNAC_CONTACT": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • SNAC_API_URL env
    The SNAC REST API endpoint.
  • SNAC_CACHE_DIR env
    Directory for the on-disk response cache.
  • SNAC_TIMEOUT env
    HTTP timeout in seconds. Holdings lists get 120 s of their own.
  • SNAC_CONTACT env
    An email address or URL appended to the User-Agent, so SNAC can reach whoever runs the server.

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 ianderso 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“搜索与 AI 记忆”中的其他服务器比较i

  • 星标数多于此分类中其他 5676 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 5676 个服务器的 55% 更新
  • 基础检查结果等于或优于此分类中其他 5676 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

SNAC Archives 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.1.0)于32天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。

有什么可以替代它?

同一分类中有:Context7, Codebase Memory, Exa

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Context7

作者:upstash

Up-to-date docs for AI agents

电脑或云端★ 64,224MIT昨天更新
安装

Codebase Memory

作者:DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

在你的电脑上运行★ 48,148MIT21天前更新
安装

Exa

作者:exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

在云端运行★ 5,213MIT2个月前更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

snac-archives-mcp

An MCP server for finding which archive holds the papers: a family's letters, a church's registers, a store's ledgers, a county office's loose papers. Most of that material has never been digitised. It exists online only as a catalogue record or a finding aid in some library, and the hard part of the research is knowing which one.

The server searches the [SNAC Cooperative](https://snaccooperative.org)'s index of people, families and organisations and the archival collections that hold their papers, across thousands of repositories. The data is CC0, and the API needs no key and no account. It also builds [ArchiveGrid](https://researchworks.oclc.org/archivegrid/) searches for you to open, because ArchiveGrid often finds what SNAC cannot, and OCLC does not permit automated access to it.

It works the way a careful genealogist does. Everything it returns is a finding aid: evidence of where to look and roughly what is there, never of what a document says. The tools say so, and they point you at the holding repository's own finding aid, which is the description to cite.

Nothing here writes anywhere, and nothing here keeps a family tree. The server finds collections; what you conclude from the papers belongs in your genealogy software, or in a family-tree MCP server running alongside this one. It sits well beside nara-catalog-mcp (federal records) and familysearch-mcp (indexed records and images).

This is an independent project. It is not affiliated with, endorsed by, or supported by the SNAC Cooperative, the University of Virginia, or OCLC.

Tools

The server publishes eight tools, all read-only and annotated so for the client. Two make no network call at all.

Finding collections

ToolPurpose
search_collectionsFind collections by words in their title. Each hit names its holding repository with a postal address, its OCLC number and its link, and flags the likely duplicates (the same papers catalogued two or three times).
get_collectionOne collection in full: the whole abstract, extent, repository, links, and the names SNAC connects to it.
repository_holdingsWhat SNAC links to one repository, filtered by title and paged.

Finding people, families and organisations

ToolPurpose
search_namesFind SNAC name records by name, optionally by kind: person, family, or corporate body (churches, businesses, societies, offices).
get_nameOne name record: headings, dates, places, biographical note and identifier links (VIAF, Library of Congress and others). With detail="full", every collection linked to it, with its role, and the related names.
collections_in_commonCollections linked to both of two names: where to look for letters between intermarried families or an ancestor's associates.

Where SNAC stops

ToolPurpose
archivegrid_search_linkBuild an ArchiveGrid search, in its fielded syntax, for you to open; or a record link, given an OCLC number. Makes no request.
cache_statusThis session's live calls and cache hits. Makes no request.

Setup

You need Python 3.11 or later and uv. There is no key to request.

Without cloning. uvx fetches it from PyPI and runs it in one step:

uvx snac-archives-mcp

From a clone, which is what you want if you will change it:

git clone https://github.com/ianderso/snac-archives-mcp

cd snac-archives-mcp uv sync uv run snac-archives-mcp # stdio server, usually launched by the client

Either way the server speaks MCP over stdio, so you will normally let an MCP client start it rather than run it by hand.

Claude Desktop
{

"mcpServers": { "snac": { "command": "uvx", "args": ["snac-archives-mcp"] } } }

A desktop app does not always inherit your shell's PATH. If the server fails to start because uvx cannot be found, give the full path that which uvx prints as the command.

Claude Code
claude mcp add snac -- uvx snac-archives-mcp

Configuration

Nothing is required. A .env file in the directory the server starts in supplies anything the environment does not; only that directory is read.

VariableMeaning
SNAC_API_URLThe SNAC REST endpoint. Default https://api.snaccooperative.org/. Must be https; its host is the only one the server will contact.
SNAC_CACHE_DIRResponse cache directory. Default ~/.cache/snac-archives-mcp.
SNAC_TIMEOUTHTTP timeout in seconds. Default 60. Holdings lists get 120.
SNAC_CONTACTAn email address or URL added to the User-Agent, so the SNAC team can reach you if your use causes trouble. Optional, and courteous.

An unusable value is reported on the first tool call as a not_configured result naming the variable.

Being a good guest

SNAC is a free service run by a small cooperative, and it publishes no rate limit. The server sends one request at a time, at least a second apart; two identical calls in flight share one request; and every answer is cached on disk for 30 days (a collection record for good). A 429 or a 5xx is retried three times with back-off, then reported as rate_limited or upstream_error, which is never the same as "nothing found". Pass refresh=true to ask again, and refresh a cached empty result before concluding anything is absent.

How to read what comes back

  • A finding aid is not the record. A collection description says the papers exist and roughly what is in them. Do not attach a citation to a fact on its strength; record a research task (request copies, plan a visit) instead.
  • Cite the repository's own finding aid, by the repository and its collection number, for example "Wilder and Anderson Family Papers #01255, Southern Historical Collection, Wilson Library, UNC-Chapel Hill". Not SNAC, and not ArchiveGrid: they are indexes to it. When link_kind is finding_aid, the link goes there; otherwise look the collection up in the repository's own catalogue.
  • Record the identifiers. The OCLC number ties a collection together across WorldCat, ArchiveGrid and SNAC; the SNAC ARK (ark:/99166/...) is the stable id of a name record. Record the repository's collection number too: WorldCat merges records, and a number can come to redirect to another.
  • Description depth varies enormously, from a one-line catalogue record ("Papers, 1881-1958", 4 boxes) to a folder-level container list. A terse description does not mean a person is absent from the papers.
  • Title search is title search. search_collections needs every word in the collection's *title*. "Davenport family papers" finds ten collections; "Davenport family papers Lincoln County" finds none, because the county is only in the abstract. Use search_names, or an ArchiveGrid link with place.
  • Duplicates are normal. One collection often appears as a WorldCat record and as one or two harvested finding aids, sometimes under different forms of the repository's name. possible_duplicate_of groups them by title words and years; it is a hint, not a merge.
  • A name record is not an identification. SNAC holds hundreds of records headed "Anderson family." with nothing to tell them apart but the collections they link to. In a name's collections, creatorOf means these are the name's own papers; referencedIn means the name is an index term on the collection, not that any document concerns the person. maybe_same_count above 0 means SNAC suspects a conflation.
  • The papers of slaveholding families are a primary route to enslaved ancestors. Many descriptions name enslaved people only as a category. Search the papers of the family that held them, not only the ancestor's name.
  • The catalogue ages. SNAC's collection index was largely built from 2010s extracts. Collections get reprocessed, renumbered and transferred, and survey "repositories" such as a state historical documents inventory record what a town clerk or church held when surveyed decades ago. Confirm the current call number before writing to a repository.
  • ArchiveGrid's indexes have edges. location is where the *repository* is; place is a place the papers are *about*. Its name, place and subject indexes cover catalogue records and EAD finding aids only; HTML and PDF finding aids match keywords alone. It leaves out records held by more than one library, so microfilm of county or church records is usually missing: use WorldCat or the FamilySearch Catalog for that.

Deliberately not here

  • Writing to SNAC. Its edit commands need an account and an API key. The client refuses to send any command but its six read ones, so no argument can make it edit anything.
  • Fetching ArchiveGrid. OCLC's terms of use forbid robots and automated copying, and the site blocks automated clients. The server builds addresses; a person opens them.
  • Fetching finding aids from repositories' own sites. That would widen the server from one API to thousands of hosts, with a parser for each and a much larger surface for injected text. It may come later, behind an option.

Security

  • One host. A request hook refuses any request not for the configured API host, so a value a model passes in cannot make the server fetch another site. SNAC_API_URL must be https.
  • Identifiers are validated (numeric ids as ASCII digits, ARKs against SNAC's pattern) before they reach a request.
  • Catalogue text is untrusted. Abstracts and biographical notes are written by cataloguers and contributors and reach the model verbatim. The server's instructions tell the model to treat that text as material to weigh, never as instructions; the model still decides, so review what it proposes to do.

To report a vulnerability, see SECURITY.md.

Development

uv sync --extra dev

uv run pytest # mocked with respx; never touches SNAC uv run ruff check . uv run ruff format --check . uv run python -m tests.live_check # eight paced calls to the live API

The live check asks SNAC what the recorded fixtures cannot: whether its answers still have the shape the server reads. See CONTRIBUTING.md for how the suite is organised, docs/API-NOTES.md for what was observed of the API and when, and docs/DESIGN.md for why the server is shaped this way.

Credits

The data is the SNAC Cooperative's, released under CC0, with collection records contributed by its member institutions and drawn from WorldCat and finding aids. ArchiveGrid is a project of OCLC Research.

License

MIT.

问 PopNx