Skip to main content
Glama
terryso

tv-recommender-mcp-server

get_recommendations_by_actor

Discover TV show recommendations based on a specific actor. Input the actor's name to receive a curated list of shows, with an option to limit the number of results. Ideal for finding new series featuring your favorite actors.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actor_nameYes演员名称,如"布莱恩·科兰斯顿"、"安东尼·斯塔尔"等
limitNo返回结果数量限制,默认为10

Implementation Reference

  • The core handler function implementing the logic for get_recommendations_by_actor: finds actor ID, retrieves TV credits via TMDB API, sorts results by vote_average descending, applies limit, and formats the DiscoverShowsResponse.
    export async function getRecommendationsByActor(actorName: string, limit = 10): Promise<DiscoverShowsResponse> {
      try {
        // 获取演员ID
        const actorId = await findPersonId(actorName);
        if (!actorId) {
          throw new ApiError(`未找到演员: ${actorName}`, 404);
        }
        
        // 获取演员的电视剧作品
        const response = await getPersonTvCredits(actorId);
        
        // 按流行度排序并限制结果数量
        let sortedResults = [...response.results];
        sortedResults.sort((a, b) => (b.vote_average || 0) - (a.vote_average || 0));
        sortedResults = sortedResults.slice(0, limit);
        
        return {
          page: 1,
          results: sortedResults,
          total_pages: 1,
          total_results: sortedResults.length
        };
      } catch (error) {
        throw new ApiError(`获取演员推荐电视剧失败: ${formatErrorMessage(error)}`, 500);
      }
    } 
  • src/server.ts:126-139 (registration)
    Registers the get_recommendations_by_actor tool with the MCP server, defines Zod input schema (actor_name required string, limit optional number default 10), and provides async handler that requires and invokes the implementation function.
    server.tool("get_recommendations_by_actor",
      { 
        actor_name: z.string().describe('演员名称,如"布莱恩·科兰斯顿"、"安东尼·斯塔尔"等'),
        limit: z.number().optional().default(10).describe('返回结果数量限制,默认为10')
      },
      async (params) => {
        console.log(`收到获取演员推荐请求,演员名称: ${params.actor_name},限制: ${params.limit || 10}`);
        const { getRecommendationsByActor } = require('./tools/discoverShowsTool');
        const results = await getRecommendationsByActor(params.actor_name, params.limit);
        return {
          content: [{ type: "text", text: JSON.stringify(results) }]
        };
      }
    );
  • Key helper function called by the handler to fetch TV credits for a given person ID from TMDB API and format them into DiscoverShowsResponse.
    export async function getPersonTvCredits(personId: number): Promise<DiscoverShowsResponse> {
      try {
        // 调用person/{person_id}/tv_credits API获取此人参与的所有电视剧
        const response = await tmdbClient.getPersonTvCredits(personId);
        
        // 格式化结果以匹配DiscoverShowsResponse格式
        const results = response.cast || [];
        const formattedResults = formatDiscoverResults(results);
        
        return {
          page: 1,
          results: formattedResults,
          total_pages: 1,
          total_results: formattedResults.length
        };
      } catch (error) {
        throw new ApiError(`获取人物电视作品失败: ${formatErrorMessage(error)}`, 500);
      }
    }
  • Helper function to search for a person by name in TMDB and return the first matching ID, used to resolve actorName to actorId in the handler.
    export async function findPersonId(personName: string): Promise<number | null> {
      try {
        const response = await tmdbClient.searchPerson(personName);
        if (response.results && response.results.length > 0) {
          return response.results[0].id;
        }
        return null;
      } catch (error) {
        return null;
      }
    }
  • TypeScript interface defining the output structure returned by getRecommendationsByActor and related functions.
    export interface DiscoverShowsResponse {
      page: number;
      results: DiscoverShowsResult[];
      total_pages: number;
      total_results: number;
    }
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