# The One MCP

> The One MCP Server gives your AI client instant access to the entire Middle-earth database. It lets you browse books, characters, iconic quotes, and movie details from The Lord of the Rings and The Hobbit series without leaving your chat window. Need a character's birth date? Or all quotes from 'The Two Towers'? This server handles it.

## Overview
- **Category:** databases
- **Price:** Free
- **Tags:** lord-of-the-rings, lotr, middle-earth, tolkien, pop-culture

## Description

**The One MCP Server** gives your AI client direct, structured access to everything in Middle-earth lore and media data. You're not just getting a webpage dump; you're pulling clean datasets for every book, character, movie, and quote from The Lord of the Rings and The Hobbit series. This server lets you work with huge amounts of interconnected data without ever leaving your chat window.

### Character Profiles & Lore
To start, you can pull a list of every single person in the database using `list_characters`, filtering by name or category. When you know who you want, use `get_character` to grab a full profile for that character—you'll get their race, gender, and exact life dates. To trace a specific individual’s sayings, run `list_character_quotes`; this returns every quote specifically attributed to one name. If you need general lore data on a book or the overall dataset, use `get_book` by its unique ID to retrieve all associated metadata.

### Books and Chapters
Need to map out the narrative structure? You start by listing every available title using `list_books`. Once you have a book's name, check the chapters inside it. The `list_book_chapters` tool returns a complete list of chapter IDs for that specific book. To get the actual content and details for any given section, use `get_chapter`, feeding it the required chapter ID. For comprehensive data on an entire volume, you can call `get_book` directly using its unique identifier.

### Cinematic Data & Quotes
For everything movie-related, start by calling `list_movies` to see all available films from the universe. To pull core cinematic metrics for any given title—like how long it runs or what the budget was—you'll use `get_movie`. You can also get a general list of every quote ever recorded in the dataset using `list_quotes`, but if you want quotes tied to an entire film, run `list_movie_quotes` against a movie ID. If your query is character-focused, stick with `list_character_quotes`; it handles that specific attribution.

### Working Mechanisms
The server provides dedicated tools for every piece of media. You can get the full text of any standalone quote using `get_quote`, simply by providing its unique ID. For working across books, you'll use `list_book_chapters` to map out the structure before fetching details with `get_chapter`. When dealing with chapters in general, remember that the `list_chapters` tool is available but requires authentication.

This setup means you don't have to jump between dozens of separate APIs. You get clean, structured data for everything from a character’s birth year to a movie’s runtime and every single quote attributed to them. The whole database—books, characters, films, and quotes—is ready for your AI client to chew on.

## Tools

### get_book
Retrieves all data for a single book by its unique ID.

### get_chapter
Gets the content and details for one specific book chapter by ID.

### get_character
Pulls a complete profile for one specific character, including race and dates.

### get_movie
Retrieves detailed metrics for a specific movie, like budget and runtime.

### get_quote
Retrieves the full text of one specific quote using its unique ID.

### list_book_chapters
Returns a list of every chapter found within a specified book.

### list_books
List all The Lord of the Rings books

### list_chapters
Requires authentication.

List all book chapters

### list_character_quotes
Lists every quote attributed to a single character name.

### list_characters
Lists every character available in the database by name or category.

### list_movie_quotes
Gets all quotes recorded from an entire film.

### list_movies
Lists all available films from The Lord of the Rings or The Hobbit universe.

### list_quotes
Returns a list of all available movie quotes across the whole dataset.

## Prompt Examples

**Prompt:** 
```
List all the books in The Lord of the Rings series.
```

**Response:** 
```
I've retrieved the books from the database. The series includes 'The Fellowship of the Ring', 'The Two Towers', and 'The Return of the King'. Would you like to see the chapters for any of these?
```

**Prompt:** 
```
Show me some quotes from the movie 'The Return of the King'.
```

**Response:** 
```
Fetching quotes from 'The Return of the King' (ID: 5cd95395de30eff6ebccde5d)... Here are a few: 'I am glad you are here with me. Here at the end of all things, Sam.' and 'My friends, you bow to no one.'
```

**Prompt:** 
```
Get details for the character Frodo Baggins.
```

**Response:** 
```
Inspecting character data... Frodo Baggins is a Hobbit of the Shire. He was born on September 22, TA 2968. His wiki link is available for more deep lore if you're interested.
```

## Capabilities

### Retrieve full character profiles
Get detailed metadata for any known Middle-earth character, including race, gender, and life dates.

### List all narrative books
Pull a complete list of every book title in the series using `list_books`.

### Get movie statistics
Access core cinematic data, including runtime and budget information for any LOTR or Hobbit film via `get_movie`.

### Fetch character-specific quotes
Retrieve every quote associated with one character using `list_character_quotes`.

### Map book chapters to books
List all chapters belonging to a specific book title via the `list_book_chapters` tool.

## Use Cases

### Creating a character dossier for an RPG campaign.
The GM asks the agent: 'Give me everything on Aragorn.' The agent uses `get_character` and immediately returns his full profile, including race (Man), key dates, and relevant quotes via `list_character_quotes`. The problem is solved in seconds, not hours of Google searching.

### Writing a scene that references specific lore.
A writer asks: 'What were the main events covered in the second book?' The agent calls `list_books` to confirm the title and then uses `list_book_chapters` on the correct ID. It provides chapter names, allowing the writer to pinpoint the exact moment needed for their dialogue.

### Analyzing movie themes.
A student needs to compare quotes from two films. They prompt: 'List all major quotes from The Fellowship and then list them all again from The Two Towers.' The agent uses `list_movie_quotes` twice, pulling side-by-side datasets for comparison.

### Building a movie database index.
A developer asks: 'What are the runtime and budget details for all films?' The agent calls `list_movies`, which returns a list of titles. For each title, it then executes `get_movie` to compile a clean, structured table.

## Benefits

- Stop manually checking multiple wikis. With `get_character`, you pull a full profile—race, gender, birth/death dates—in one step, keeping your research linear and fast.
- Need to build out a narrative timeline? Use `list_books` combined with `list_book_chapters`. You get the entire story structure mapped out, eliminating guessing games about canon order.
- Film details are always structured. Instead of searching for movie facts, just call `get_movie` and instantly pull accurate metrics like budget and runtimes for your scripts.
- Quote management is simple. If you only care about what Samwise Gamgee says, use `list_character_quotes`. It filters out everything else automatically.
- Handling massive data sets? The server includes pagination and sorting tools to manage lists of thousands of quotes or characters efficiently, so your agent doesn't crash on volume.

## How It Works

The bottom line is that you stop searching wikis and start asking questions that get instant, structured answers.

1. Subscribe to The One MCP Server and enter your required API Key.
2. Your AI client sends a natural language query (e.g., 'What are the chapters in Fellowship?').
3. The server translates this into tool calls (`list_book_chapters`) and returns structured, validated data directly to your agent.

## Frequently Asked Questions

**How do I find a book's chapters using the list_book_chapters tool?**
You need two pieces of information: first, the Book ID (use `get_book` if you don't know it), and second, that ID. Then, pass both to `list_book_chapters`. This gives you all chapter titles for that book.

**Does get_movie provide character details?**
No, `get_movie` only handles cinematic metrics like budget and runtime. To get a character's details, use the dedicated tool: `get_character`.

**Can I list all quotes from every film at once? Use list_movies or list_quotes?**
You can run `list_quotes`, but it might be too much data. If you want to limit the search, first use `list_movies` and then call `list_movie_quotes` for each specific movie ID.

**What is the difference between list_books and get_book?**
`list_books` gives you a roster of all book titles in the series. `get_book` requires a specific Book ID, and it pulls all the deep details for just that single title.

**When using list_characters, how do I filter results by specific criteria like race or gender?**
You pass filters as parameters to the list_characters tool. The API allows you to specify fields such as 'race' or 'gender' directly in your query. This narrows down thousands of entries instantly.

**What happens if I try to get a book using get_book with an invalid ID?**
The tool returns a structured error object indicating the bad input ID and the specific failure code. Your AI client reads this response, allowing it to prompt you for corrected data without crashing.

**If I need to process many chapters, should I use list_book_chapters or get_chapter?**
Use list_book_chapters first. It gives you an overview of all available chapter IDs for a given book. Then, pass those specific IDs to the get_chapter tool when needed.

**How do I handle large datasets from list_movies without running into limits?**
You must use the pagination parameters (like limit and offset) within your MCP client. This processes massive result sets in controlled batches, preventing timeouts and keeping data transfer efficient.

**Can I get all quotes spoken by a specific character like Gandalf?**
Yes! Use the `list_character_quotes` tool with the character's unique ID. The agent will return a list of all recorded movie quotes for that specific character.

**Does this server include data from The Hobbit movies?**
Yes, the `list_movies` tool retrieves data for both The Lord of the Rings trilogy and The Hobbit trilogy, including metadata like runtime and academy award wins.

**How do I browse the chapters of a specific book?**
First, use `list_books` to find the book's ID, then use the `list_book_chapters` tool with that ID to see all chapters contained within that volume.