# R&M Metadata MCP

> Rick and Morty Alternative MCP Server lets your AI agent query structured data about characters, locations, and episodes from the show's full database. Use tools like `list_characters` to filter by species or gender, or run `get_multiple_episodes` to gather metadata for a whole season at once.

## Overview
- **Category:** artificial-intelligence
- **Price:** Free
- **Tags:** api-integration, metadata, multiverse, character-data, graphql, entertainment

## Description

You'll connect this MCP Server to your agent and it lets you query structured data about characters, locations, and episodes from the full show database. You don't have to talk in vague ideas; you tell your AI client exactly what data points you need.

**Character Data Retrieval**

The `list_characters` tool searches the character database, letting you narrow results by species, gender, name, or status. If you know a specific ID, use the `get_character` tool to pull all metadata for that single figure; it gives you their full history and type in one go. When you need details on several characters at once, run `get_multiple_characters`, which processes an entire list of IDs and returns structured data for every name you specify.

**Location Data Retrieval**

The `list_locations` tool displays a filtered rundown of planets or dimensions based on type or name. For deep specs on any single spot—whether it's a planet or a dimension—you run `get_location`. If your query requires data for several locations, you use `get_multiple_locations`; this retrieves the full metadata set for every location ID in one batch.

**Episode Data Retrieval**
The `list_episodes` tool lets you filter and find episodes using either their code or their title. To pull all the complete details for just one episode, run `get_episode` with its unique ID. If you're tracking a season full of adventures, use `get_multiple_episodes`, which processes a batch of episode IDs and gives you organized metadata for every single one.

**Batch Data Handling Across Domains**

You can gather multiple records simultaneously across all types—characters, locations, or episodes. For instance, if your script needs to cross-reference lore by pulling the details on several characters using `get_multiple_characters` and then fetching metadata for those same character IDs' associated episode data via a list of episode codes processed by `get_multiple_episodes`, you don't have to make multiple round trips. The system manages these large data sets, returning structured information for every record requested.

**Working with Specific Data Points**

The tools support granular filtering on the front end: if you only want characters who are 'human' and are 'alive,' `list_characters` handles that filter instantly. If you just need to know which dimensions exist, running `list_locations` lets you filter by type (planet or dimension) without fetching unnecessary records. For episodes, filtering by code means your agent doesn't waste time parsing titles; it targets the exact episode record needed.

The system is built for immediate use: list tools provide a quick overview and filters, while the 'get' tools ensure you get every piece of metadata associated with that single ID or batch. You simply tell your AI client what data you need, and your agent pulls the structured records directly from the source.

## Tools

### get_character
Fetches all metadata for one specific character ID.

### get_episode
Retrieves full details for a single episode using its unique ID.

### get_location
Pulls all data for one location, whether it's a planet or a dimension.

### get_multiple_characters
Takes a list of character IDs and returns the full metadata set for all of them.

### get_multiple_episodes
Processes a batch of episode IDs, returning organized data for every single one.

### get_multiple_locations
Retrieves the full metadata for several location IDs at once.

### list_characters
Lists characters and lets you filter the results by species, gender, name, or status.

### list_episodes
Lists available episodes and allows filtering by episode code or title.

### list_locations
Displays a list of locations, letting you filter them by type (planet/dimension) or name.

## Prompt Examples

**Prompt:** 
```
List all characters named 'Rick' who are alive.
```

**Response:** 
```
I've found several characters named Rick who are alive, including Rick Sanchez (ID: 1) from Earth (C-137) and Rick Sanchez (ID: 2) from the Replacement Dimension. Would you like details on a specific one?
```

**Prompt:** 
```
Show me the details for the location with ID 1.
```

**Response:** 
```
Location ID 1 is 'Earth (C-137)'. It is a Planet located in the Dimension 'Dimension C-137'. It currently has 27 residents listed in the database.
```

**Prompt:** 
```
Get the metadata for episodes 1, 2, and 3.
```

**Response:** 
```
I've retrieved the data for the first three episodes: 'Pilot' (S01E01), 'Lawnmower Dog' (S01E02), and 'Anatomy Park' (S01E03). They aired between December 2013 and December 2013. Which one should we look into?
```

## Capabilities

### List and Filter Characters
The `list_characters` tool searches the character database and lets you filter results by criteria like species or gender.

### Get Specific Character Details
Use `get_character` to pull all metadata for a single character ID, giving you their full history and type.

### Find Multiple Characters by IDs
The `get_multiple_characters` tool processes several IDs at once, returning structured data for each one in a single call.

### List and Filter Locations
Run `list_locations` to get a filtered list of planets or dimensions, then use `get_location` on an ID for deep specs.

### Retrieve Episode Metadata
The `list_episodes` tool lets you filter and find episodes by name or code. The `get_episode` tool pulls all metadata for one specific episode.

### Batch Data Retrieval (All Types)
You can gather multiple records of characters, locations, or episodes simultaneously using specialized 'get_multiple' tools.

## Use Cases

### Need to compare multiple characters' traits.
A lore researcher needs to know the differences between three specific Rick Sanchez versions. They use `get_multiple_characters` with the three IDs, getting a clean comparison of species and status for all in one go.

### Writing an article about a dimension.
A content creator needs to write about Dimension C-137. They first use `list_locations` to find the ID, then run `get_location` on that ID to pull all the necessary metadata—dimension type and resident count.

### Tracking a season's episode details.
A fan wants an overview of all episodes from Season 1. They use `list_episodes` to filter by the correct range, then process the results using `get_multiple_episodes` for full metadata on each title.

### Checking character links between locations.
A developer needs to check if multiple characters (e.g., Rick and Morty) have been recorded at a specific planet. They run `get_location` first, then use the resulting location ID in subsequent queries.

## Benefits

- Get comprehensive character profiles with `get_character`. Instead of clicking through pages to check a species or gender, you get all that data instantly when your agent runs the tool.
- Cross-reference multiple entities at once. Use `get_multiple_characters` and `get_multiple_locations` together to build complex lore maps without writing manual loops or API calls.
- Filter massive datasets fast. The `list_episodes` tool lets you narrow down hundreds of episodes by code or name, so you don't have to scroll through every single entry.
- Never miss a detail on a location. Use `get_location` to pull exact dimension names and current resident counts for any place in the show.
- Settle trivia instantly. Need to know if a character is alive or what their species is? A simple call to `list_characters` gives you that status immediately.

## How It Works

The bottom line is: Your agent runs a specialized function call, gets organized facts back, and gives you an answer—no manual searching required.

1. First, tell your agent exactly what you need. For example: 'Find all living alien characters.'
2. Your AI client invokes the appropriate tool (like `list_characters`) and passes any necessary filters or IDs.
3. The server executes the query against the database and returns clean, structured JSON data that your agent uses to answer you.

## Frequently Asked Questions

**How do I use list_characters to find all alien characters?**
You pass 'alien' as a filter parameter when calling `list_characters`. This tool handles the filtering, so you get a clean list of only the aliens without having to manually check every character entry.

**Can I use get_multiple_episodes for an entire season?**
Yes. You first run `list_episodes` to gather all the episode codes for the season, and then you pass that list of codes into `get_multiple_episodes`. It gathers all the metadata in one shot.

**What's the difference between get_character and list_characters?**
The difference is scope. Use `list_characters` when you need to search or filter a large pool of characters (e.g., 'all female characters'). Use `get_character` only when you have the exact ID for one specific character.

**Do I need an API key for list_locations?**
No, this public dataset doesn't require a separate API key to run queries. You just connect your agent client and start asking questions.

**If I run many queries using list_characters in quick succession, will there be rate limits?**
The server handles standard API throttling. If your AI client sends too many requests too fast, you'll receive a clear error message indicating the limit was reached. Wait about 30 seconds and try again; it usually resolves itself quickly.

**How can I use get_multiple_characters if I only know their names, not IDs?**
The tool requires specific character IDs to function. You must first run list_characters using the name filter to pull a list of corresponding IDs. Then, pass those retrieved IDs into get_multiple_characters.

**What should I do if I use get_episode but provide an ID that doesn't exist?**
The tool returns a specific HTTP error code (404). Your AI client will catch this and report back to you that the episode ID is invalid. Always confirm your input IDs using another query first.

**When I use get_location, what specific data fields can I retrieve about a dimension?**
You get the location's formal name, its classified type (like 'Planet'), and the exact Dimension ID it belongs to. The response also lists any residents associated with that spot in the database.

**Can I filter characters by their status like 'Alive' or 'Dead'?**
Yes! Use the `list_characters` tool and provide the `status` parameter (alive, dead, or unknown). You can also combine this with name or species filters.

**How do I get details for a specific episode?**
You can use the `get_episode` tool by providing the unique Episode ID. If you don't know the ID, use `list_episodes` first to search by name or episode code (e.g., 'S01E01').

**Can I look up multiple locations at once?**
Absolutely. Use the `get_multiple_locations` tool and provide a comma-separated string of IDs (e.g., '1,2,3') to fetch metadata for all of them in a single request.