npm package: @source-library/mcp-server
Description: Search, read, and cite 1,200+ rare historical texts from the terminal or via MCP. 9 research tools + feedback, CLI + MCP server, no API key needed.
Author: Source Library
Latest version: 4.2.0

# Source Library MCP Server

[![npm version](https://badge.fury.io/js/@source-library%2Fmcp-server.svg)](https://www.npmjs.com/package/@source-library/mcp-server)

Search, read, and cite 1,200+ rare historical texts from the terminal or via MCP. 9 tools (search, read, cite, feedback), CLI + MCP server, no API key needed.

## Quick Start

### Claude Code

```bash
claude mcp add source-library -- npx -y @source-library/mcp-server
```

### Claude Desktop

Add to your Claude Desktop config:

**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "source-library": {
      "command": "npx",
      "args": ["-y", "@source-library/mcp-server"]
    }
  }
}
```

### CLI

```bash
# Install globally
npm install -g @source-library/mcp-server

# Or run directly
npx @source-library/mcp-server search "philosopher's stone"
```

### From Source

```bash
git clone https://github.com/Embassy-of-the-Free-Mind/sourcelibrary-v2.git
cd sourcelibrary-v2/mcp-server
npm install && npm run build
npm start
```

## 9 Tools

### Search & Discovery

#### search_library

Full-text search across books and page content. Returns matching books and pages with citation URLs.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | Search query |
| `language` | string | No | Filter: Latin, German, Greek, Sanskrit, etc. |
| `year_from` | number | No | Publication year start |
| `year_to` | number | No | Publication year end |
| `has_doi` | boolean | No | Only books with DOIs |
| `has_translation` | boolean | No | Only translated books |
| `sort` | string | No | relevance, date_asc, date_desc, title |
| `limit` | number | No | Max results (default 10, max 100) |

#### search_translations

Search inside translated text across the entire library. Find what historical authors wrote about any topic. Returns passage snippets with page numbers, book info, and citation URLs.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | Search inside page text |
| `language` | string | No | Filter by book's original language |
| `year_from` | number | No | Publication year start |
| `year_to` | number | No | Publication year end |
| `book_id` | string | No | Search within a specific book only |
| `limit` | number | No | Max results (default 20, max 50) |

#### search_within_book

Search inside a specific book's pages. Returns matching pages with snippets and citation URLs.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `book_id` | string | Yes | The book ID to search within |
| `query` | string | Yes | Search query |

#### list_books

Browse the collection with filters. Returns title, author, language, year, and translation progress.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `search` | string | No | Filter by title/author (diacritic-insensitive) |
| `language` | string | No | Filter by language |
| `category` | string | No | Filter by category |
| `sort` | string | No | recent-translation, recent, title-asc, title-desc |
| `limit` | number | No | Max results (default 100, max 200) |

### Reading

#### get_book

Detailed book metadata: summary, index stats, chapters, edition info, DOI.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `book_id` | string | Yes | Book ID |

#### get_book_text

Read a book. Returns 50+ pages of text in one call, each with a citation URL. OCR, translation, or both.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `book_id` | string | Yes | Book ID |
| `content` | string | No | ocr, translation, or both (default) |
| `from` | number | No | Start page (inclusive) |
| `to` | number | No | End page (inclusive) |
| `format` | string | No | json (structured) or plain (concatenated text) |

### Gallery

#### search_images

Search 50,000+ historical illustrations, emblems, engravings, and diagrams.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | Text search across descriptions |
| `type` | string | No | woodcut, engraving, emblem, diagram, etc. |
| `subject` | string | No | Subject (alchemy, astronomy, anatomy) |
| `figure` | string | No | Depicted figure (Mercury, philosopher, king) |
| `symbol` | string | No | Symbol (ouroboros, caduceus, sun) |
| `year_from` | number | No | Publication year start |
| `year_to` | number | No | Publication year end |
| `book_id` | string | No | Only images from a specific book |
| `min_quality` | number | No | Min quality score 0-1 (default 0.5) |
| `limit` | number | No | Max results (default 20, max 50) |

### Feedback

#### submit_feedback

Submit feedback, bug reports, or feature requests directly to the Source Library team.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `message` | string | Yes | Your feedback (2-5000 characters) |
| `name` | string | No | Your name |
| `email` | string | No | Email for follow-up |
| `page` | string | No | Related page URL |

## CLI

All 9 tools are available as a standalone CLI with colored terminal output.

```bash
# Search the collection
source-library search "Paracelsus" --language=German

# Search inside translations
source-library translations "harmony of the spheres"

# Read a book
source-library text 694f49d3... --from=1 --to=50

# Book details
source-library book 694f49d3...

# Browse the gallery
source-library images --subject=alchemy --type=emblem

# Submit feedback
source-library feedback "Great translation of Fludd!" --name="Jane"

# JSON output for piping
source-library search "alchemy" --json | jq .results
```

## Example Research Prompts

> "Search for references to 'prima materia' across the collection. Which authors discuss it, and how do their treatments differ?"

> "Read the full translation of Fludd's History of Both Worlds, pages 1-50. Summarize the cosmological framework."

> "Find all alchemical emblems depicting the ouroboros. What texts are they from?"

> "What does Copernicus say about the Sun's centrality in De Revolutionibus? Find the key passages with citation URLs."

## Citation URLs

Every page returned by the tools includes a citation URL:

```
https://sourcelibrary.org/book/fludd-utriusque?page=57
```

Published editions include DOIs minted via Zenodo.

## Development

```bash
npm run dev    # Run with hot reload (tsx)
npm run build  # Compile TypeScript
npm start      # Run compiled version
npm run cli    # Run CLI in dev mode
```

## License

MIT

## Links

- **Website:** [sourcelibrary.org](https://sourcelibrary.org)
- **Developers:** [sourcelibrary.org/developers](https://sourcelibrary.org/developers)
- **GitHub:** [Embassy-of-the-Free-Mind/sourcelibrary-v2](https://github.com/Embassy-of-the-Free-Mind/sourcelibrary-v2)