nas-mcp-server
Browse and explore personal media collection. List movies and TV shows, get detailed information, check watch status, view active streaming sessions, and get personalized recommendations.
Automate movie downloads and organization. Search and add movies, monitor download progress, manage quality profiles, remove monitoring, and check disk space.
Discover popular and trending content. Get trending and popular movies, most watched by period, and search the Trakt.tv database.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nas-mcp-serverShow me my recently added movies"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NAS MCP Server
MCP server for managing your media server stack: Plex, Radarr, Overseerr, Bazarr, Prowlarr, and Trakt.tv.
Use natural language to browse your library, request movies, manage subtitles, search indexers, and discover trending films.
Installation
uvx nas-mcp-serverRelated MCP server: overseerr-mcp
Configuration
Add to your Claude Desktop or Claude Code MCP configuration:
{
"mcpServers": {
"nas-mcp-server": {
"command": "uvx",
"args": ["nas-mcp-server"],
"env": {
"PLEX_URL": "http://your-nas:32400",
"PLEX_TOKEN": "your_plex_token",
"RADARR_URL": "http://your-nas:7878",
"RADARR_API_KEY": "your_radarr_api_key",
"OVERSEERR_URL": "http://your-nas:5055",
"OVERSEERR_API_KEY": "your_overseerr_api_key",
"BAZARR_URL": "http://your-nas:6767",
"BAZARR_API_KEY": "your_bazarr_api_key",
"PROWLARR_URL": "http://your-nas:9696",
"PROWLARR_API_KEY": "your_prowlarr_api_key",
"TRAKT_CLIENT_ID": "your_trakt_client_id"
}
}
}
}Note: Only configure the services you use. Each service is optional and will be disabled if not configured.
Environment Variables
Variable | Description | Required |
| Plex server URL (e.g., | Yes |
| Plex authentication token (how to find) | Yes |
| Radarr server URL (e.g., | No |
| Radarr API key (Settings → General → API Key) | No |
| Overseerr server URL (e.g., | No |
| Overseerr API key (Settings → General → API Key) | No |
| Bazarr server URL (e.g., | No |
| Bazarr API key (Settings → General → API Key) | No |
| Prowlarr server URL (e.g., | No |
| Prowlarr API key (Settings → General → API Key) | No |
| Trakt.tv Client ID (create app) | No |
Features
🎬 Plex - Your Media Library
Browse and explore your personal media collection.
List movies and TV shows in your library
Get detailed information about any title
Check watch status and progress
View active streaming sessions
Get personalized recommendations based on your library
🎥 Radarr - Movie Management
Automate movie downloads and organization.
Search and add movies to your collection
Monitor download progress and queue
Manage movie quality profiles
Remove movies from monitoring
Check disk space and system status
🎭 Overseerr - Discovery & Requests
Discover new content and manage requests.
Search for actors and view their complete filmography
Find which movies from an actor are missing from your library
Browse popular and trending movies
Submit and manage movie/TV show requests
Check request status and approval history
📝 Bazarr - Subtitle Management
Automate subtitle downloads for your media.
List movies and episodes with missing subtitles
Search and download subtitles in any language
View subtitle download history
Manage subtitle providers (OpenSubtitles, Addic7ed, etc.)
Sync with Radarr/Sonarr libraries
Reset throttled providers
🔍 Prowlarr - Indexer Management
Centralized indexer management for your *arr apps.
List and manage all configured indexers
Test indexer connectivity
Search across all indexers simultaneously
View indexer statistics and performance
Manage connected applications (Radarr, Sonarr, etc.)
Monitor indexer health
📈 Trakt.tv - Trending & Discovery
Discover what's popular and trending worldwide.
Get trending movies (most watched right now)
Browse popular movies (highest rated + most votes)
View most watched movies by period (weekly, monthly, yearly)
Search the Trakt database
🔧 Unified Tools
High-level tools that combine multiple services.
System Health Check: Get a unified status report of all your services
Discover Top Rated Missing: Find highly-rated movies you don't have yet, with genre filtering
Example Queries
Once configured, you can ask Claude things like:
"What movies do I have with Tom Hanks?"
"Show me my recently added movies"
"What's downloading right now?"
"Find movies with Timothée Chalamet that I don't have"
"Download French subtitles for Inception"
"What are the trending movies this week?"
"Show me the top 10 missing movies excluding horror and animation"
"Check the health of all my services"
"Search for 'Dune' on my indexers"
"Which subtitle providers are working?"
How to Get API Keys
Plex Token
Sign in to Plex Web App
Browse to any media item
Click "Get Info" → "View XML"
Find
X-Plex-Tokenin the URL
Radarr / Sonarr / Prowlarr / Bazarr API Key
Open the application web UI
Go to Settings → General
Copy the API Key
Overseerr API Key
Open Overseerr web UI
Go to Settings → General
Copy the API Key
Trakt Client ID
Go to Trakt API Applications
Create a new application
Copy the Client ID
License
MIT
Available Tools
12 toolsdiscover_top_rated_missingA
Découvre les films bien notés que tu n'as pas encore dans ta collection.
Args: source: Source Trakt (popular, trending, watched) period: Période pour 'watched' (weekly, monthly, yearly, all) min_imdb_rating: Note IMDB minimum (défaut: 6.0) limit: Nombre de films à retourner (défaut: 10) exclude_genres: Liste de genres à exclure (ex: ["animation", "anime"])
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | popular | |
| period | No | weekly | |
| min_imdb_rating | No | ||
| limit | No | ||
| exclude_genres | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It explains the tool discovers movies from Trakt sources with rating filters, suggesting read-only behavior. However, it omits details like external API dependency, rate limits, or potential delays, which are relevant for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: one sentence for purpose and a bullet list of parameters. No repeated or redundant information. Each element serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5 parameters, optional nature, and existence of an output schema, the description adequately explains the tool's behavior and parameter semantics. However, it lacks usage guidelines relative to siblings and is in French, which may hinder some agents. It is mostly complete for a discovery tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden for parameter semantics. It provides French explanations for each parameter (source, period, min_imdb_rating, limit, exclude_genres), adding meaning beyond the schema's default values and types. The language barrier slightly reduces clarity but still adds substantive value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: discovering highly rated movies not yet in the user's collection. It uses a specific verb ('discover') and resource ('missing top-rated movies'), and the context of sibling Plex tools (e.g., plex_search, plex_get_libraries) makes it distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like plex_search or plex_search_movies. It implies use for missing items but doesn't explicitly state scenarios or contrast with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_get_librariesA
Liste toutes les bibliothèques Plex (Films, Séries, Musique, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether the operation is read-only, any authentication requirements, rate limits, or pagination. For a read/list tool, basic safety is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters, the description is mostly complete. However, it does not describe the output format or fields of the libraries, which might be useful. Still, it adequately covers the core functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%. The description adds no parameter info, which is acceptable since none are needed. The baseline of 4 applies for no-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all Plex libraries, specifying types (Movies, Series, Music). It uses a specific verb and resource, and the purpose is easily distinguishable from sibling tools like search or get details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It only states what it does, without any when-to-use or when-not-to-use context relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_get_movie_detailsB
Récupère les détails complets d'un film ou d'une série.
Args: rating_key: L'identifiant du média
| Name | Required | Description | Default |
|---|---|---|---|
| rating_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It implies a read operation ('Récupère'), but does not explicitly state read-only, safe, or any side effects. Adequate for a simple get, but could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences plus an Args section. Front-loaded with purpose. No unnecessary words, but French language may reduce clarity for some agents. Still highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and an output schema present, description does not need to detail return values. It states 'complete details' which is sufficient for simple retrieval. Lacks mentions of error conditions or edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must add meaning. It explains 'rating_key' as 'L'identifiant du média' (media identifier), providing basic semantics beyond type string. However, it lacks detail like format or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves complete details of a movie or series (verb+resource). It distinguishes from sibling tools like plex_search or plex_get_watched by specifying it gets details of a single item by ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Sibling tools exist for search or aggregated views, but description does not mention when to prefer this over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_get_on_deckA
Récupère les médias 'À suivre' (en cours de visionnage, à reprendre).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only covers purpose. It does not disclose behavioral traits such as read-only nature, side effects, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and contains no unnecessary words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema that defines return values, the description adequately covers the tool's purpose. It does not mention additional details like ordering or pagination, but these are likely not needed for this simple endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. The description adds meaning by explaining the concept of 'on deck' (currently watching, to resume), which goes beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool retrieves 'À suivre' media (in progress, to resume), using a clear verb and resource. It distinguishes from sibling tools like plex_get_unwatched and plex_get_watched.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving in-progress media but does not provide explicit guidance on when to use vs alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_get_recently_addedC
Récupère les médias récemment ajoutés à la bibliothèque.
Args: limit: Nombre maximum de résultats
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states that it retrieves recently added media, without disclosing ordering, pagination, side effects, or whether the results can be filtered further. This lacks sufficient behavioral context for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short (2 sentences) but includes an unnecessary 'Args:' prefix. While not verbose, it omits important context that would justify its length. Every sentence provides some value, but it could be more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (so return values need not be detailed), the description lacks completeness given the 11 sibling tools. It does not explain how results are ordered, whether it returns all libraries or a specific one, or any constraints like authentication. The minimal description is insufficient for correct agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter (limit) with 0% schema coverage. The description adds the meaning: 'limit: Nombre maximum de résultats' (maximum number of results), which is helpful beyond the schema's default and type. This compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Retrieves media recently added to the library'. It is specific to the tool's function but does not differentiate from sibling tools like plex_get_on_deck or plex_get_recommendations, which could similarly retrieve recent content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of typical use cases, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_get_recommendationsB
Récupère des recommandations basées sur un film ou une série.
Args: rating_key: L'identifiant du média (obtenu via plex_search ou autres outils)
| Name | Required | Description | Default |
|---|---|---|---|
| rating_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic purpose. It does not disclose behavior such as whether the tool requires a server with recommendations enabled, rate limits, or the structure of the output. More detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences, front-loading the purpose. No redundant information, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description is minimally adequate but could be improved by briefly describing the output (e.g., returns a list of recommendations).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning by explaining that rating_key is a media identifier obtained via plex_search. However, it does not specify the expected format (e.g., integer) or provide further semantic details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recommendations based on a movie or series, which distinguishes it from siblings like plex_search or plex_get_movie_details. However, it could specify the type of recommendations (e.g., similar content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions the rating_key is obtained via plex_search, implying when to use, but lacks explicit guidance on prerequisites, when not to use, or alternatives. The usage is implied but not fully clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_get_unwatchedA
Récupère les films ou séries non vus.
Args: library_key: Clé de la bibliothèque (optionnel, utiliser plex_get_libraries pour trouver les clés) limit: Nombre maximum de résultats
| Name | Required | Description | Default |
|---|---|---|---|
| library_key | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description only states basic functionality without disclosing behavioral traits such as pagination behavior, returned metadata, auth requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with a single purpose line and brief parameter explanations. No wasted sentences, front-loaded with core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return format. However, it omits context like whether it returns episodes or series-level data, or any prerequisites. Adequate for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description adds value by explaining 'library_key' is optional and referencing 'plex_get_libraries', and 'limit' indicates max results. However, details like format or allowed values are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves unwatched movies or series, using a specific verb ('Récupère') and resource, distinguishing it from siblings like 'plex_get_watched' and 'plex_get_recently_added'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at using 'plex_get_libraries' to find library keys, but lacks explicit guidance on when to use this tool versus alternatives like 'plex_get_watched' or 'plex_get_recently_added'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_get_watchedA
Récupère l'historique de visionnage (films et séries déjà vus).
Args: limit: Nombre maximum de résultats
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states the tool retrieves watch history but does not mention authentication requirements, rate limits, pagination, or any side effects. For a read operation, safety is implied but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences covering purpose and parameter. No superfluous information. It is front-loaded with the primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (so return format need not be explained) and only one parameter, the description is mostly complete. However, it could mention that results include both movies and series (already stated) and any default ordering. Minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, so the description must compensate. It adds meaning to the 'limit' parameter by explaining it as 'Nombre maximum de résultats' (maximum number of results), which is helpful. However, it does not describe any other parameters (none exist).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves watch history for movies and series, which distinguishes it from siblings like 'plex_get_unwatched' and others. The verb 'Récupère' and resource 'historique de visionnage' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'plex_get_unwatched' or 'plex_get_recently_added'. The description does not provide context for when it's appropriate to call this function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_searchA
Recherche du contenu dans Plex par titre, acteur, réalisateur, etc.
Args: query: Terme de recherche (titre, acteur, réalisateur, genre...) media_type: Type de média à rechercher (movie, show, episode, artist, album, track). Si non spécifié, recherche tous les types.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| media_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains the basic function and parameters, but does not disclose search behavior, pagination, rate limits, or result handling. Output schema exists, so return values are covered elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence plus parameter explanations. No fluff; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, no need to detail return values. Parameters are fully described. However, missing differentiation from sibling tools and any usage boundaries slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning: 'query' is defined as a search term (title, actor, director, genre), and 'media_type' lists possible values (movie, show, episode, etc.) with default behavior. This compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Recherche du contenu dans Plex' (search content in Plex) with specific verbs and resources, and lists search criteria (title, actor, director). It distinguishes from siblings like 'plex_search_movies' by implying a broader scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings. The sibling 'plex_search_movies' exists but is not mentioned as an alternative. Only a note on default media_type behavior is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_search_moviesA
Recherche avancée de films dans la bibliothèque Plex avec filtres combinés.
Tous les critères sont combinés avec une logique AND.
Args: library_key: Clé de bibliothèque (optionnel, sinon toutes les bibliothèques de films) actor: Nom de l'acteur (ex: "Brad Pitt") director: Nom du réalisateur (ex: "Steven Spielberg") genre: Genre du film (ex: "Action", "Comedy", "Drama") year: Année de sortie exacte (ex: 2023) year_min: Année minimum (ex: 2000) year_max: Année maximum (ex: 2023) min_rating: Note IMDB minimum (ex: 7.0) watch_status: "watched", "unwatched", ou None pour tous added_within_days: Films ajoutés dans les X derniers jours (ex: 30) sort_by: Tri des résultats (audienceRating:desc, addedAt:desc, year:desc, title:asc) limit: Nombre maximum de résultats
Exemples: - Films avec Brad Pitt non vus: actor="Brad Pitt", watch_status="unwatched" - Comédies bien notées des 5 dernières années: genre="Comedy", year_min=2019, min_rating=7.0 - Films ajoutés ce mois-ci: added_within_days=30
| Name | Required | Description | Default |
|---|---|---|---|
| library_key | No | ||
| actor | No | ||
| director | No | ||
| genre | No | ||
| year | No | ||
| year_min | No | ||
| year_max | No | ||
| min_rating | No | ||
| watch_status | No | ||
| added_within_days | No | ||
| sort_by | No | audienceRating:desc | |
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions that filters are combined with AND logic, but does not discuss safety (e.g., read-only nature), potential side effects, or prerequisites. Given the absence of annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but well-structured, starting with a brief purpose, then a key behavioral note (AND logic), followed by a parameter list with examples. While it is lengthy, the complexity of 12 parameters justifies the length. It could be slightly more concise, but overall effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers how to use the tool with examples and parameter guidance. Since an output schema exists, the absence of return value details is acceptable. However, it does not provide guidance on when to use this tool versus siblings like plex_search or plex_get_recommendations, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds extensive meaning beyond the schema. It provides detailed explanations for all 12 parameters, including types, examples, and usage notes. This compensates for the 0% schema description coverage, making parameter usage very clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs an advanced search for movies with combined filters, using AND logic. It specifies the resource (films in Plex library) and the action (advanced search with filters). The name itself indicates movies, and the description further distinguishes it from general search tools like plex_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage scenarios through examples, such as searching for unwatched movies with Brad Pitt or well-rated comedies from the last 5 years. However, it does not explicitly state when to avoid this tool in favor of alternatives like plex_get_unwatched or plex_search, which are simpler or broader in scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plex_server_statusA
Récupère les informations et le statut du serveur Plex.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and a minimal description, the tool lacks disclosure of read-only behavior, authentication needs, or edge cases like server unavailability. The description only says it retrieves status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise and front-loaded with the action. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status tool, the description is adequate but missing details about the output schema content (e.g., what fields are returned) and any behavioral context. With no annotations, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty (0 parameters), so no parameter documentation is needed. Baseline 4 applies as per guidelines for tools with zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves Plex server information and status, using a specific French verb 'Récupère'. It distinguishes from sibling tools that focus on specific content like movies or libraries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool over alternatives such as 'system_health_check'. There is no context about preconditions or intended usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_health_checkA
Vérifie l'état de santé de tous les services du NAS.
Retourne un rapport unifié avec le statut de chaque service (Plex, Radarr, Overseerr, Bazarr, Prowlarr).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the burden. It states the return type (unified report with status) but does not disclose whether the tool is read-only, any side effects, or auth requirements. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that efficiently describe purpose and output. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an existing output schema, the description fully covers the tool's behavior. It lists the specific services checked, which is sufficient for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist in the schema, so the description is not required to add parameter details. The baseline score of 4 applies, and no information is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Vérifie') and resource ('état de santé de tous les services du NAS'), listing exact services. It clearly distinguishes from sibling tools that focus on Plex content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. However, the tool's purpose is inherently clear compared to content-focused siblings, earning a baseline score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v0.0.8- First observed
discover_top_rated_missing - First observed
plex_get_libraries - First observed
plex_get_movie_details - First observed
plex_get_on_deck - First observed
plex_get_recently_added - First observed
plex_get_recommendations - First observed
plex_get_unwatched - First observed
plex_get_watched - First observed
plex_search - First observed
plex_search_movies - First observed
plex_server_status - First observed
system_health_check
TDQS
Most tools have distinct purposes, but there is some overlap between plex_search and plex_search_movies, both handling search with different levels of filtering. However, descriptions clarify the differences, and the remaining tools (discover, health check) are well-separated.
The naming follows a consistent snake_case pattern, but there is a mix of prefixes: 'plex_', 'discover_', and 'system_'. Within the Plex group, naming is consistent (verb_noun). The 'discover_top_rated_missing' breaks from the 'plex_' prefix, causing minor inconsistency.
12 tools is a reasonable count for a NAS media server focused on Plex functionality. The set covers browsing, searching, recommendations, status checks, and a unique discovery feature, without being overwhelming or too sparse.
The tool set covers many Plex operations (retrieve, search, recommend) but lacks media management capabilities (add, update, delete) and direct interaction with other services (Radarr, etc.) beyond a health check. Notable gaps for a full-featured NAS server.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for Producer/Riffusion AI music generation
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn MCP server that gives AI assistants control over your Sonarr, Radarr, Prowlarr, qBittorrent, and Jellyfin homelab media stack.5MIT
- FlicenseNot gradedqualityBmaintenanceMCP server for Overseerr that enables searching, requesting, and managing media (movies and TV shows) through natural language, with integration to Radarr/Sonarr for automated downloads.-
- FlicenseAqualityCmaintenanceMCP server for Overseerr media request management. Enables AI assistants to search for media, view requests, and manage media requests through the Model Context Protocol.12-
- AlicenseBqualityBmaintenanceEnables control and management of a self-hosted media stack (Radarr, Sonarr, Prowlarr, SABnzbd, qBittorrent) through natural language via MCP.15GPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/matthieurosset/nas-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server