epsteinexposed-mcp
# epsteinexposed-mcp
[](https://github.com/releasetheepsteinfiles/epsteinexposed-mcp/actions/workflows/ci.yml)
[](https://app.codacy.com/gh/releasetheepsteinfiles/epsteinexposed-mcp?utm_source=github.com&utm_medium=referral&utm_content=releasetheepsteinfiles/epsteinexposed-mcp&utm_campaign=Badge_Grade)
[](https://codecov.io/gh/releasetheepsteinfiles/epsteinexposed-mcp)
[](https://www.python.org/)
[](https://modelcontextprotocol.io/)
[](LICENSE)
**Model Context Protocol server exposing the [Epstein Exposed](https://epsteinexposed.com) public API as AI-agent tool calls.**
Plug directly into any MCP-compatible client (Claude Desktop, Cursor, SmolAgents, etc.) to search persons, documents, flight logs, and emails from the Epstein case files.
[](https://raw.githubusercontent.com/releasetheepsteinfiles/epsteinexposed-mcp/main/promo/mcp-16x9.mp4)
> **Disclaimer:** Inclusion in the Epstein Exposed database does not imply guilt or wrongdoing. All data is derived from publicly released government records.
## Tools
| Tool | Description |
|---|---|
| `search_persons` | Search/filter persons of interest by name and category |
| `get_person` | Get full detail for a person by slug (bio, aliases, stats) |
| `search_documents` | FTS5 full-text search across case documents |
| `search_flights` | Search flight logs by passenger, year, origin, destination |
| `cross_search` | Search across documents and emails simultaneously |
## Quick Start
```bash
# Install
pip install -e ".[dev]"
# Run via stdio (for MCP clients)
python -m src.server
# Or via the MCP CLI
mcp run src/server.py
```
## MCP Client Configuration
### Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"epstein-files": {
"command": "epsteinexposed-mcp",
"args": []
}
}
}
```
### Cursor
Add to `.cursor/mcp.json`:
```json
{
"mcpServers": {
"epstein-files": {
"command": "epsteinexposed-mcp",
"args": []
}
}
}
```
## Architecture
```
MCP Client (Claude, Cursor, SmolAgents)
│
│ JSON-RPC 2.0 (stdio / SSE)
▼
epsteinexposed-mcp (FastMCP)
│
│ AsyncEpsteinExposed (curl_cffi)
▼
epsteinexposed.com/api/v1
```
Powered by the [`epsteinexposed`](https://github.com/releasetheepsteinfiles/epsteinexposed) Python package.
## Development
```bash
git clone https://github.com/releasetheepsteinfiles/epsteinexposed-mcp.git
cd epsteinexposed-mcp
pip install -e ".[dev]"
pytest -v
```
## Documentation
Full docs available at the [docs site](https://releasetheepsteinfiles.github.io/epsteinexposed-mcp) (VitePress).
## The toolchain
This repository is one of four that share a data source and a design system:
| Repo | Role |
|---|---|
| [`epsteinexposed`](https://github.com/releasetheepsteinfiles/epsteinexposed) | Python client for the public API |
| [`epsteinexposed-mcp`](https://github.com/releasetheepsteinfiles/epsteinexposed-mcp) | MCP server — structured search *(this repo)* |
| [`epstein-files-rag-mcp`](https://github.com/releasetheepsteinfiles/epstein-files-rag-mcp) | MCP server — semantic search *(in development)* |
| [`epsteinexplorer`](https://github.com/releasetheepsteinfiles/epsteinexplorer) | Natural-language chat app |
A 20-second overview of how the four fit together:
[](https://raw.githubusercontent.com/releasetheepsteinfiles/epsteinexposed-mcp/main/promo/suite-16x9.mp4)
## Design system
All four repositories share the **"Declassified"** visual language — a dark
archival palette with a single ember accent, monospace structure and Inter
prose. The canonical tokens live in [`brand/tokens.css`](brand/tokens.css)
and the rationale in [`brand/DESIGN.md`](brand/DESIGN.md); both files are
byte-identical across the four repos.
The VitePress theme maps `--vp-*` onto that palette in
`docs/.vitepress/theme/custom.css`.
## License
MIT
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose targeting different data types: cross_search covers both documents and emails, get_person retrieves detailed person info, search_documents focuses on documents, search_flights handles flight logs, and search_persons finds person records. There is no overlap in functionality, making tool selection straightforward for an agent.
All tool names follow a consistent verb_noun pattern using snake_case: cross_search, get_person, search_documents, search_flights, and search_persons. The naming is predictable and readable, with no deviations in style or convention.
With 5 tools, the server is well-scoped for its purpose of exploring Epstein-related data. Each tool serves a specific and necessary function (searching across data types, retrieving person details, and searching documents, flights, and persons), with no redundant or missing tools for the domain.
The tool surface provides complete coverage for the domain of investigating Epstein case data. It includes search capabilities across all key data types (documents, emails, flights, persons) and detailed retrieval for persons, enabling comprehensive exploration without obvious gaps or dead ends.