feat(mcp): add season filtering and presentation guide for better UX

This commit is contained in:
Deivid Soto 2026-02-12 18:44:22 +01:00
parent b6f0af707c
commit d48b91f554
9 changed files with 941 additions and 18 deletions

View file

@ -2,6 +2,57 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
export function registerPrompts(server: McpServer): void {
server.prompt(
"presentation_guide",
"Guide for presenting torrent search results in a user-friendly format",
{},
() => ({
messages: [
{
role: "user",
content: {
type: "text",
text: `When presenting torrent search results to users, follow these best practices:
1. **Magnet Links**: Always make magnet links clickable using markdown format:
- Format: [📥 Download](magnet:?xt=urn:btih:HASH...)
- Or: [🧲 Magnet Link](magnet:?xt=urn:btih:HASH...)
- Never show raw magnet URIs without making them clickable
2. **Content URL**: Include the TorrentClaw content URL for browsing all seasons/episodes:
- Format: [🔗 View all seasons on TorrentClaw](https://torrentclaw.com/shows/...)
- This allows users to explore other seasons/episodes
3. **Presentation Format**: Use clear, readable formatting:
- Group by episode/season for TV shows
- Show quality, size, and seeder count prominently
- Highlight torrents with active seeders
- Warn if torrents have 0 seeders
4. **Example Format for TV Shows**:
**Entrevías - Temporada 4**
**Episodio 1** (S04E01)
- 720p HDTV 879 MB 6 seeders [📥 Download](magnet:?xt=...)
**Episodio 2** (S04E02)
- 1080p WEB-DL 2.5 GB 0 seeders [📥 Download](magnet:?xt=...)
- 720p HDTV 976 MB 1 seeder [📥 Download](magnet:?xt=...)
[🔗 View all seasons on TorrentClaw](URL)
5. **Helpful Information**:
- Recommend torrents with more seeders
- Suggest alternatives if requested season/episode has no seeders
- Offer to search for different quality if user wants
Apply these practices to make results actionable and user-friendly.`,
},
},
],
}),
);
server.prompt(
"search_movie",
"Search for a movie by title and get torrent download options",
@ -12,7 +63,7 @@ export function registerPrompts(server: McpServer): void {
role: "user",
content: {
type: "text",
text: `Search for the movie "${title}" using search_content with type="movie". Present the results showing: title, year, ratings, and the top torrents sorted by quality score with their magnet links. If results are found, also call get_watch_providers with the content_id to check streaming availability.`,
text: `Search for the movie "${title}" using search_content with type="movie". Present the results with clickable magnet links using markdown format [📥 Download](magnet:...), include the content URL for more details, and show quality/size/seeders clearly. If results are found, also call get_watch_providers with the content_id to check streaming availability.`,
},
},
],
@ -22,14 +73,23 @@ export function registerPrompts(server: McpServer): void {
server.prompt(
"search_show",
"Search for a TV show by title and get torrent download options",
{ title: z.string().describe("TV show title to search for") },
({ title }) => ({
{
title: z.string().describe("TV show title to search for"),
season: z.number().optional().describe("Specific season number"),
},
({ title, season }) => ({
messages: [
{
role: "user",
content: {
type: "text",
text: `Search for the TV show "${title}" using search_content with type="show". Present the results showing: title, year, ratings, and the top torrents sorted by quality score with their magnet links.`,
text: `Search for the TV show "${title}" using search_content with type="show"${season ? ` and season=${season}` : ""}. Present results grouped by episode with:
- Episode identifier (e.g., S04E01)
- Quality, size, and seeder count
- Clickable magnet links using markdown: [📥 Download](magnet:...)
- Content URL for browsing all seasons: [🔗 View all seasons](URL)
- Recommendations for torrents with most seeders
- Warnings if torrents have 0 seeders`,
},
},
],