Skip to main content
Glama
Zereo0317

Epstein-Files-Plugin

by Zereo0317

Epstein Files Plugin —— 让任何 AI 智能体都能查询 DOJ Epstein Files Transparency Act 公开交付的文件

Python Protocol MCP Tools Databases License

一个姓名、日期、关键词、EFTA 页码,或者一个开放式问题——无论与邮件语料、照片、Transcripts 或知识图谱相关,都能帮你找到对应的、可引用的官方 DOJ 文档。无需手动翻阅约 280 万页内容,也不再需要和 DOJ 的僵尸审查搜索纠缠。

它只能检索 DOJ 已公开的法院记录,以及同样公开的全文镜像。它用于研究、事实核查和来源追溯,而非二次识别、骚扰或人肉搜索。详见负责任地使用


关于

Epstein Files Plugin 索引并解析 DOJ 在 Epstein Files Transparency Act(公法 119-38,2025-11-19 签署)发布中公开的文档——大约 140 万份文档 / 280–290 万页,分布在 justice.gov/epstein 的 12 个 DataSet 中,由第三方服务 epstein 数据平台镜像并索引为 20 个可查询数据库(两个数据均于 2026-08-24 实时核实;DOJ 的全部已收录档案规模更大,仍有约 600 万页,而这里只是目前公开的部分——在引用为“完整”之前,请再次核实)。

提供以下版本:

  • 🧩 一个 Claude Code 插件 ——安装自 marketplace,但只需两行命令

  • 🔌 一个 MCP 服务器.mcp.json)—— 同一个服务器的独立版,本地 stdio,无 API 密钥、无远程主机,适用于任何 MCP 兼容客户端: Claude Desktop、Cursor、Windsurf,或基于官方 mcp SDK 的定制 agent 运行时

  • 💻 一个 Python CLI —— python src/eftate_researcher.py,无需 MCP 客户端

  • 📦 一个 Python 库 —— from efta_core import efta_to_url, get_dataset,可直接 import

为什么用它:

  • 🚀 比手动搜索更快。 DOJ 自己的搜索面向自动化/无头访问(Akamai 掉反抓拦截——见负责任地使用);它直接从姓名、日期或关键字就可得到——时间为秒级。

  • 🎯 始终直达原始出處。 每个结果都解析为官方 justice.gov/epstein 的 PDF URL——凭证由你自己核对原始文档,而非任何二手转述。

  • 被事实核查,而不只是爆款。 已知文档注册表自带来源可查的事实核查(EUvsDisinfo、Reuters、Tempo 等),因此某个“关联”被归类时,标注的是文档实际上显示了什么,而不是某条病毒式文案所声称的事实。

  • 🧠 完整可查询,而不只是收件箱。 两个专用工具覆盖邮件语料;五个通用工具可覆盖全部 20 个数据库——图片、Transcripts、OCR、乃至手写、交叉证词、知识图谱——并提供只读 SQL 逃生舱来承载过滤 API 无法表达的查询。

  • 🗺️ 结构只需重建一次。 12-DataSet-DataSet 边界 表(Bates number)已与 DOJ 官方披露页面交叉核实,所以你不必每次查询时都重新推导它。

  • 🔓 无锁定。 同样的查询能力可在 CLI、Python 库或任何 MCP 客户端中使用。


Related MCP server: DocImprint

架构

flowchart LR
    subgraph Client["Any MCP client"]
        A["Claude Code / Claude Desktop\nCursor · Windsurf · custom agent"]
    end

    subgraph Server["epstein-files-plugin — local stdio, no auth"]
        direction TB
        PB["Purpose-built tools\nefta_search · efta_filter_email\nefta_lookup · efta_known_docs"]
        GEN["Generic tools\nefta_list_databases · efta_list_tables\nefta_describe_table · efta_query_table\nefta_run_sql"]
        LOCAL["Local-only\nefta_get_url — pure computation,\nno network call"]
    end

    subgraph Upstream["Third-party mirror"]
        DS[("epstein-data.com\nDatasette JSON API\n20 databases")]
    end

    DOJ[("justice.gov/epstein\nofficial PDF source")]

    A -- "MCP / stdio\nJSON-RPC" --> Server
    PB --> DS
    GEN --> DS
    LOCAL -.->|"constructs URL,\nno request sent"| DOJ
    DS -.->|"indexes"| DOJ

    style Server fill:#1a2332,stroke:#4b8bbe,color:#e8edf4
    style Upstream fill:#0f1720,stroke:#2dd4a7,color:#e8edf4
    style DOJ fill:#0f1720,stroke:#94a3b8,color:#e8edf4

两个工具层是有意为之:专用包装层针对最常见的表(快速、易用、正常分页),以及通用自省/listings/SQL 层,覆盖其余所有数据库,而不必为每张表写死专用工具——它回答了“能否查所有内容”,并在 epstein-data.com 的 schema 演进到 2031 年时无需新增代码,也能继续 work。完整设计见 CLAUDE.md 中的 reason。


可查询工具


  • [Deposit payment]; [Q?]

快速开始

前提条件

  • Python 3.11 或更高版本(3.10 将于 2026-10-31 结束 service life ——见 技术栈现状

  • pip

安装为 Claude Code 插件

/plugin marketplace add Zereo0317/Epstein-Files-Plugin
/plugin install epstein-files-plugin@epstein-files-plugin

为 CLI / 独立 MCP / 库使用安装

git clone https://github.com/Zereo0317/Epstein-Files-Plugin.git
cd Epstein-Files-Plugin
python -m pip install --upgrade pip
pip install -r requirements.txt   # requests, mcp (pinned <2.0 — see below)

运行 CLI

python src/efta_researcher.py --list
python src/efta_researcher.py --search "trilateral commission"
python src/efta_researcher.py --sender epstein --recipient schank --date 2009-10-23
python src/efta_researcher.py --efta EFTA00741068
python src/efta_researcher.py --databases
python src/efta_researcher.py --tables image_analysis
python src/efta_researcher.py --sql "select dataset, count(*) as n from doc_search group by dataset" --database full_text_corpus

直接(standalone)运行 MCP 服务

python src/mcp_server.py

11 个只读 MCP 工具

🔎 专用工具(用于常见场景——全文 + 邮件元数据):

工具

用途

efta_search(query, limit, cursor)

在 Datasette 索引上做子串搜索——得出实际的总匹配数和 cursor 分页

efta_filter_email(sender, recipient, date_exact, date_prefix, subject, limit, cursor)

按元数据字段过滤邮件——同樣得到总匹配数与分页

efta_known_docs(category)

列出已经过验证、检查过的已知文档

efta_get_url(efta_number)

将某个 EFTA 北方语编号转为对应的官方 DOJ PDF URL 编号

efta_verify_url(efta_number)

用 HEAD 请求检查 DOJ PDF URL 是否仍存在(见下方注意)

efta_lookup(efta_number)

从 Datasette 索引取回该文档的完整元数据

🧬 通用工具(涵盖全部 20 个数据库,无需针对每张表写接口):

工具

用途

efta_list_databases()

列出所有 20 个 Datasette 数据库(images、transcripts、OCR、depositions 等)

efta_list_tables(database)

列出某个数据库中的全部表,并附带各状态的字段/行数

efta_describe_table(database, table)

打印单张表的字段列表 + 行数

efta_query_table(database, table, filters, limit, cursor)

针对任意表执行 filter-suffix 查询

efta_run_sql(database, sql, params, limit)

只读 SQL — 连接 / 计数 / GROUP BY;Datasette 拒绝任何不SELECT的查询并返回 HTTP 400

✅ 全部 11 个工具都根据 MCP 工具注解约定标注了 readOnlyHint / idempotentHint(所有网面涉及的还有 openrldHint),客户端可以安全地自动调用它们。

⚠️ 分页: limit 值根据工具在 50–100 之间限制。一次查询可能匹配远不止这些(例如 “pizza” 目前匹配 233 个文档)——分页工具会给出 (N OF TOTAL SHOWN),若更多结果存在则返回一个 cursor 返回。

⚠️ URL 校验: justice.gov 的每个 PDF 后面都有一层年龄验证 + Akamai 验证,所以原始 HTTP 状态未必能区分存活与失效。URL 的成功与否取决于下方的 DataSet 边界表,而不是探测 justice.gov

仅由专用功能不能直接覆盖: image_analysis(93K 带说明的图片)、transcripts(434 音/视频透返)、knowledge_graphocr_databasehandwriting_transcriptions 等 17 个以上数据库——这些都可以通过通用工具来访问。请调 efta_list_databases() 获取实时的最新列表,而不要信任文档表格。


与 AI 智能体配合使用

它是 MCP-first,而不是 Claude-first。它是一个标准的本地 stdio 服务器(构建在官方 mcp Python SDK 里自带的 FastMCP 类上),使用普通 Model Context Protocol 通信。可以与任何支持 MCP 的用户端使用。

客户端

如何连接

Claude Code / Claude Desktop

使用 /plugin marketplace add + /plugin install,或直接引用原始 .mcp.json

Cursor / Windsurf / Cline

.mcp.json 中的 server entry 加入该客户端的 MCP 设置中

ChatGPT、Gemini 或自定义/headless

让它以 stdio 方式连接到 src/mcp_server.py——无需 plugin 系统,也不需要 Claude 本

通用 MCP 客户端配置

{
  "mcpServers": {
    "epstein-files-plugin": {
      "command": "python",
      "args": ["/absolute/path/to/epstein-files-plugin/src/mcp_server.py"]
    }
  }
}

无 API 密钥、无 Auth、也无远程服务器——只是本地进程通过 stdio 对话,在所有客户端里的行为都相同。

Claude Code

以插件方式安装时,同一服务器会从本仓库的 .mcp.json 自动加载(使用 ${CLAUDE_PLUGIN_ROOT},无需编辑路径):

{
  "mcpServers": {
    "epstein-files-plugin": {
      "command": "python",
      "args": ["${CLAUDE_PLUGIN_ROOT}/src/mcp_server.py"],
      "env": { "PYTHONUNBUFFERED": "1" }
    }
  }
}

环境变量覆盖(应对镜像或域名变更)

变量

默认值

影响范围

EFTA_DATASETTE_BASE_URL

https://epstein-data.com

所有搜索/查询/SQL 工具

EFTA_DOJ_BASE_URL

https://www.justice.gov

efta_get_urlefta_verify_url,以及 CLI 的 --download/--verify

未来任一第三方主机发生变化,都只是配置变更,而不是代码变更。


示例

示例 1 — 将引文解析到其官方来源

User request:  "What's the DOJ URL for EFTA00741068, and which DataSet is it in?"

Response:
  EFTA: EFTA00741068
  DataSet: DS9
  URL: https://www.justice.gov/epstein/files/DataSet%209/EFTA00741068.pdf

Under the hood:
  efta_get_url("EFTA00741068") parses the Bates number, resolves it against the verified
  12-DataSet boundary table, and constructs the official DOJ URL — no network call, no guessing.

示例 2 — 按发件人、收件人和日期查找电子邮件

User request:  "Find the Epstein -> Roger Schank email from October 23, 2009."

Response:
  Found 3 email(s):
    EFTA00741068  DS9   2009-10-23  12:01:12   <- primary
    EFTA00885615  DS9   2009-10-23  12:01:12   (OCR duplicate, reads "grnail.com")
    EFTA01821140 DS10   2009-10-23  12:01:12   (third copy, later processing batch)

Under the hood:
  efta_filter_email(sender="epstein", recipient="schank", date_exact="2009-10-23") queries the
  epstein-data.com Datasette API (DOJ's own /multimedia-search is blocked for headless clients)
  and returns every metadata match, so duplicate copies can be cross-referenced by timestamp.

示例 3 — 超出邮件语料库之外的搜索(通用工具)

User request:  "Any photos in the release that show a passport?"

Response:
  efta_list_tables("image_analysis") -> "images" table, 92,249 rows, column "analysis_text"
  efta_query_table("image_analysis", "images", filters={"analysis_text__contains": "passport"})
  -> matching rows with efta_number, source_pdf, and the analysis text itself

Under the hood:
  image_analysis isn't reachable through efta_search (that only covers full_text_corpus).
  efta_query_table works against any of the 20 databases using the same filter-suffix syntax,
  so no dedicated "image search" tool was needed.

示例 4 — 过滤器 API 无法表达的问题(原始 SQL)

User request:  "Break down the document count by DataSet."

Response:
  efta_run_sql("full_text_corpus",
    "select dataset, count(*) as n from doc_search group by dataset order by dataset")
  -> 1:650, 2:150, 3:57, 4:143, 5:82, 6:13, 7:17, 8:10479, 9:480658, 10:496404,
     11:331597, 12:12339, 98:6, 99:23210   (live counts, 2026-08-24)

Note: two values (98, 99) fall outside the documented 1-12 DataSet scheme — small catch-all
buckets in the source data itself. efta_get_url()/get_dataset() only resolve DataSets 1-12.

DataSet 参考

EFTA 编号是页码(Bates)标识符,而不是文档标识符——一份 20 页的 PDF 会占用 20 个连续的 EFTA 编号。下面的边界来自 rhowardstone/Epstein-research-data 映射中按文件进行取证的范围,并与 DOJ 自己的披露页面做了交叉核对。

DataSet

EFTA 范围

内容

DS01

1 – 3,158

照片、实物扫描件

DS02

3,159 – 3,857

照片、查获物品扫描

DS03

3,858 – 5,586

大陪审团证物

DS04

5,705 – 8,320

记录、法庭文件

DS05

8,409 – 8,528

查获扫描、证词

DS06

8,529 – 8,998

证词、起诉书

DS07

9,016 – 9,664

庭审记录

DS08

9,676 – 39,023

电子邮件、警方报告

DS09

39,025 – 1,262,781

主要电子邮件语料库

DS10

1,262,782 – 2,205,654

电子邮件、财务

DS11

2,205,655 – 2,730,264

电子邮件、设备数据

DS12

2,730,265 – 2,858,497

法庭文件、FBI + 扩展

DOJ URL 模式:https://www.justice.gov/epstein/files/DataSet%20{N}/EFTA{efta:08d}.pdf


研究与事实核查立场

这次发布很容易招致阴谋论式的解读。已知文档注册表(efta_known_docs)中的每个条目 都带有置信度标签,并已去除耸人听闻的修饰:

话题

文档显示的内容

Trilateral Commission / CFR

爱泼斯坦自己的履历将他列为 前成员 —— 精英人脉网络,而非阴谋

Rothschild

一段真实的顾问关系(约 2,500 万美元的 Southern Trust 协议);“乌克兰 动荡”邮件 —— EUvsDisinfo 已将“政变”版本标记为不实信息

Rockefeller

一个洛克菲勤大学董事会席位 + 捐赠关系 —— 机构性的,而非“血统”

Illuminati

一封 入站、未经主动发送的邮件,发件人是 爱泼斯坦的;没有回复记录;不足以证明其成员身份

Gates / BGC3

一份真实的大流行防范范围文档;事实核查机构未发现其与 COVID-19 规划有关联


负责任的使用

  • ✅ 只操作已在 justice.gov/epstein 上公开的 DOJ 发布内容,以及一个公开的第三方全文镜像(epstein-data.com)。没有私有数据,没有付费墙来源,不做登录后抓取。

  • ✅ 已知文档注册表中的每一项声明都附有来源和置信度标签 —— “关联”只按文档字段字面标注,绝不按病毒式传播的标题来标注。

  • efta_run_sql 扩大的是 可查询范围,而不是伦理姿态:Datasette 自身的 API 只接受 SELECT(非 SELECT 语句在到达 SQLite 前就会收到 HTTP 400 —— 已实际验证),并且它不会触及 epstein-data.com 尚未直接暴露给任何访问其网站的用户的数据。

  • 不适用于重新识别身份、骚扰或“人肉搜索”。 这是源定位和验证工具,不是调查或控告引擎 —— 它不指控任何文档内容之外的不当行为。

  • 不构成法律建议,不是 DOJ 的官方产品,也不属于 epstein-data.com —— 只是他们公共 API 的一个独立客户端。


技术栈时效(2026-08-24)

  • Python: 要求 3.11+(从 3.10 提升 —— 3.10 已于 2026-10-31 EOL,不再支持)。已用 3.14.7 测试。

  • **MCP SDK:**上限固定为 mcp>=1.29.0,<2.0.0。官方 SDK 的 v2.0.0(2026-07-28)将 mcp.server.fastmcp.FastMCP 更名,mcp.server.mcpserver.MCPServer —— 这是本服务器尚未迁移的一个破坏性变更。如果未固定版本,mcp>=1.0.0 会静默解析为 v2.x 并导致导入失败。与之无关的独立 fastmcp PyPI 包(PrefectHQ 维护,现在 v3.x/4.0)并不是本项目的依赖项。

  • pip: 上述安装命令会先执行 python -m pip install --upgrade pip

  • requests: 要求 >=2.31.0,对较新的 2.x 版本没有已知冲突。


项目结构

.claude-plugin/plugin.json   Plugin manifest (Claude Code convenience only)
.mcp.json                    Local stdio MCP server config (client-agnostic)
src/efta_core.py             DataSet boundary table, EFTA -> URL, known-document registry
src/epstein_datasette.py     epstein-data.com Datasette API client (purpose-built + generic layer)
src/doj_auth.py              justice.gov public anti-bot challenge helper + verification
src/efta_researcher.py       Standalone CLI
src/mcp_server.py            FastMCP server exposing the 11 tools above
skills/efta-research/        Claude Code skill: research methodology (optional convenience)
skills/doj-auth/             Claude Code skill: justice.gov access details (optional convenience)

社区与支持

贡献

这是一个公开的、单一维护者的研究工具(Zereo0317/Epstein-Files-Plugin)。欢迎提交 issue 和 pull request。

许可证

MIT-0(MIT No Attribution)— 见 LICENSE。选用它而非普通 MIT,是为了专门满足ClawHub 的兼容性要求,ClawHub 要求 MIT-0 且不支持按技能覆盖。该仓库在 GitHub 上公开;许可证条款适用于任何人对代码的再分发/复用。

免责声明

Epstein Files Plugin 只呈现哪些文件以及来自哪些数据包,都依赖 Epstein Files Transparency Act 的要求已公开,再结合公开的第三方全文本镜像(epstein-data.com)来提供。它将引文解析到官方源并报告文档字面包含的内容 —— 它不进行独立思考,不指控任何文档尚未呈现的不当行为,也不持有、再持有或暴露任何非公开数据。其目的是研究、事实核查和来源验证 —— 而非用于再识别身份、骚扰或“人肉”。

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to fact-check claims, verify citations, and check source freshness using Wikipedia, Wikidata, Crossref, and Wayback Machine.
    1
  • F
    license
    Not graded
    quality
    A
    maintenance
    Verifiable document intelligence for AI agents. Extract, summarize, claim-check, and notarize PDFs & URLs with cryptographic proofs, cross-document search, and on-chain attestation via Base L2.
  • A
    license
    A
    quality
    C
    maintenance
    Verifiable document intelligence for AI agents. Extract text, tables, and structured data from PDFs and URLs. Summarize, answer questions, check claims, and translate — all with cited evidence. Store tamper-evident evidence bundles with cryptographic signatures and on-chain attestation via Base L2. Cross-document semantic search and Q&A across named collections. Pay per call with USDC
    22
    15
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zereo0317/Epstein-Files-Plugin'

If you have feedback or need assistance with the MCP directory API, please join our Discord server