Skip to main content
Glama
terryso

tv-recommender-mcp-server

get_show_details

Retrieve detailed information about a TV show by providing its title. This tool supports accurate data lookup for enhanced show discovery and recommendations.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
show_titleYes剧集名称,用于获取详细信息

Implementation Reference

  • Main handler function that implements the get_show_details tool logic: searches TMDb for the show by title, fetches details, extracts relevant info like cast, rating, status, and returns structured data or error message.
    export async function getShowDetails(params: GetShowDetailsParams): Promise<ShowDetails | string> {
      try {
        const { show_title } = params;
    
        // 1. 搜索剧集获取ID
        const searchUrl = `https://api.themoviedb.org/3/search/tv`;
        const searchResponse = await axios.get(searchUrl, {
          params: {
            api_key: config.tmdbApiKey,
            query: show_title,
            language: 'zh-CN',
            include_adult: false
          }
        });
    
        const searchResults = searchResponse.data.results;
    
        // 如果没有搜索结果
        if (!searchResults || searchResults.length === 0) {
          return `抱歉,未能找到您提供的剧集"${show_title}"。`;
        }
    
        // 2. 获取第一个匹配结果的ID
        const showId = searchResults[0].id;
    
        // 3. 获取剧集详情
        const detailsUrl = `https://api.themoviedb.org/3/tv/${showId}`;
        const detailsResponse = await axios.get(detailsUrl, {
          params: {
            api_key: config.tmdbApiKey,
            language: 'zh-CN',
            append_to_response: 'credits'
          }
        });
    
        const details = detailsResponse.data;
    
        // 4. 提取年份
        const year = details.first_air_date ? Number.parseInt(details.first_air_date.split('-')[0], 10) : null;
    
        // 5. 提取类型
        const genres = details.genres.map((genre: { name: string }) => genre.name);
    
        // 6. 提取主要演员 (前5名)
        const cast = details.credits.cast
          .sort((a: { order: number }, b: { order: number }) => a.order - b.order)
          .slice(0, 5)
          .map((actor: { name: string }) => actor.name);
    
        // 7. 映射状态
        const status = STATUS_MAP[details.status] || '未知状态';
    
        // 8. 构建返回结果
        return {
          title: details.name,
          year,
          rating: details.vote_average,
          genres,
          overview: details.overview,
          cast,
          numberOfSeasons: details.number_of_seasons,
          status
        };
      } catch (error) {
        // console.error('获取剧集详情错误:', error);
        return '获取剧集信息时发生错误,请稍后再试。';
      }
  • TypeScript interfaces defining input parameters (GetShowDetailsParams) and output structure (ShowDetails) for the getShowDetails function.
    export interface GetShowDetailsParams {
      show_title: string;
    }
    
    // 定义剧集详情接口
    export interface ShowDetails {
      title: string;
      year: number | null;
      rating: number;
      genres: string[];
      overview: string;
      cast: string[];
      numberOfSeasons: number;
      status: string;
    }
  • src/server.ts:63-71 (registration)
    MCP server tool registration for 'get_show_details', including Zod input schema validation and handler invocation.
    server.tool("get_show_details",
      { show_title: z.string().describe('剧集名称,用于获取详细信息') },
      async (params) => {
        console.log(`收到获取剧集详情请求,剧集名称: ${params.show_title}`);
        const results = await getShowDetails(params);
        return {
          content: [{ type: "text", text: JSON.stringify(results) }]
        };
      }
  • Helper constant mapping TMDb status strings to Chinese translations, used in the handler to format the status field.
    const STATUS_MAP: Record<string, string> = {
      'Ended': '已完结',
      'Returning Series': '连载中',
      'Canceled': '已取消',
      'In Production': '制作中'
    };
  • Re-export of the getShowDetails handler and types from details.ts, used by server.ts import.
    export {
      getShowDetails,
      type GetShowDetailsParams,
      type ShowDetails
    } from './details'; 
Install Server

Other Tools

Related Tools

Latest Blog Posts

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/terryso/tv-recommender-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server