Skip to main content
Glama
README.md
# turath-mcp

MCP server for [turath.io](https://app.turath.io) — access thousands of classical Arabic and Islamic books via the Model Context Protocol.

Built on the public turath.io API, maintained by [Nuqayah](https://nuqayah.com).

## Features

- **8,500+ books** — classical Islamic texts: tafsir, hadith, fiqh, usul, Arabic language, biography, history, and more
- **No API key required** — zero configuration, works out of the box
- **Full-text search** — search across the entire catalog by keyword, author, category, or century
- **Page-level reading** — retrieve any page from any book as plain text (with chapter headings)
- **Chapter navigation** — every book includes a complete index of chapters with page numbers
- **Author biographies** — comprehensive metadata including full name, death year, and biographical notes

## Tools

### `turath_get_book_info`

Get book metadata, chapter index, and page map.

| Parameter | Required | Description |
|---|---|---|
| `book_id` | ✅ | Turath.io book ID (e.g., `9953` for al-Risala al-Qushayriyya) |

**Example:**
```
turath_get_book_info({ book_id: 9953 })
```

### `turath_get_page`

Get the text content of a specific page.

| Parameter | Required | Description |
|---|---|---|
| `book_id` | ✅ | Turath.io book ID |
| `page` | ✅ | Printed page number to retrieve |

**Example:**
```
turath_get_page({ book_id: 9953, page: 20 })
```

### `turath_search`

Search books in the turath.io catalog by keyword.

| Parameter | Required | Description |
|---|---|---|
| `query` | ✅ | Search keyword(s) in Arabic or English |
| `category` | ❌ | Filter by category ID |
| `author` | ❌ | Filter by author ID |
| `book` | ❌ | Restrict search to a specific book ID |
| `page` | ❌ | Paginate results (page number) |

**Example:**
```
turath_search({ query: "الرسالة" })
```

### `turath_get_author`

Get author biography and metadata.

| Parameter | Required | Description |
|---|---|---|
| `author_id` | ✅ | Turath.io author ID (e.g., `125` for Abd al-Karim al-Qushayri) |

**Example:**
```
turath_get_author({ author_id: 125 })
```

### `turath_get_book_file`

Get full book JSON dump. Only available for books that have a JSON file on the CDN.

| Parameter | Required | Description |
|---|---|---|
| `book_id` | ✅ | Turath.io book ID |

## Requirements

- Node.js >= 22
- An MCP-compatible client (OpenCode, Claude Code, Copilot, etc.)

## Installation

### Option 1: Clone & run

```bash
git clone https://github.com/opin22/turath-mcp
cd turath-mcp
npm install
npm start
```

### Option 2: Use with OpenCode

Add to your `opencode.json`:

```json
{
  "mcp": {
    "turath-mcp": {
      "type": "local",
      "command": ["npx", "--yes", "tsx", "/path/to/turath-mcp/src/index.ts"]
    }
  }
}
```

### Option 3: Use with Claude Code / other MCP clients

Configure it in your MCP settings file:

```json
{
  "mcpServers": {
    "turath-mcp": {
      "command": "npx",
      "args": ["--yes", "tsx", "/path/to/turath-mcp/src/index.ts"]
    }
  }
}
```

## How to find book IDs

1. Go to [app.turath.io](https://app.turath.io)
2. Search for a book
3. Open a book and look at the URL: `https://app.turath.io/book/9953`
4. The number (`9953`) is the book ID

Alternatively, use `turath_search` to find books by name and get their IDs from the results.

## Ethics & Rate Limiting

This server wraps a public, free API. Please be respectful:

- Avoid hammering the API with concurrent requests
- Cache results when possible
- If you build something that generates significant traffic, consider self-hosting

## Data Source

All content is served from [turath.io](https://app.turath.io), a project by [Nuqayah](https://nuqayah.com). The books are digitized classical Islamic texts — the vast majority are public domain.

## License

MIT

TDQS

B3.4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct aspect of the domain (author, book file, book info, page content, catalog search) with no functional overlap.

Naming Consistency4/5

Four tools use a consistent 'turath_get_' pattern, but 'turath_search' deviates by omitting the 'get_' prefix, causing a minor inconsistency.

Tool Count5/5

Five tools is well-scoped for a cultural heritage book server, covering core read operations without being too few or excessive.

Completeness4/5

The set covers essential read operations (search, book info, page content, author info, full file dump), though a browse or list tool could be a minor addition.

Maintenance

ActivityStale
ResponsivenessNo issues