find_shows_by_actor
Discover TV shows and series featuring a specific actor by entering their name. Ideal for finding performances by your favorite actors across various programs.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| actor_name | Yes | 演员名称,如"布莱恩·科兰斯顿"、"安东尼·斯塔尔"等 |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"actor_name": {
"description": "演员名称,如\"布莱恩·科兰斯顿\"、\"安东尼·斯塔尔\"等",
"type": "string"
}
},
"required": [
"actor_name"
],
"type": "object"
}
Implementation Reference
- src/tools/discoverShowsTool.ts:364-377 (handler)Core handler function that implements the tool logic: searches for the actor's person ID using TMDb search, then fetches their TV credits (shows) using the person/{id}/tv_credits endpoint.export async function findShowsByPersonName(personName: string): Promise<DiscoverShowsResponse> { try { // 先查找人物ID const personId = await findPersonId(personName); if (!personId) { throw new ApiError(`未找到人物: ${personName}`, 404); } // 然后获取其电视作品 return getPersonTvCredits(personId); } catch (error) { throw new ApiError(`查找人物电视作品失败: ${formatErrorMessage(error)}`, 500); } }
- src/server.ts:111-123 (registration)Tool registration in the MCP server, including input schema (actor_name) and thin wrapper handler that delegates to the core implementation.server.tool("find_shows_by_actor", { actor_name: z.string().describe('演员名称,如"布莱恩·科兰斯顿"、"安东尼·斯塔尔"等') }, async (params) => { console.log(`收到获取演员作品请求,演员名称: ${params.actor_name}`); const { findShowsByPersonName } = require('./tools/discoverShowsTool'); const results = await findShowsByPersonName(params.actor_name); return { content: [{ type: "text", text: JSON.stringify(results) }] }; } );
- src/server.ts:112-114 (schema)Zod input schema for the tool parameters.{ actor_name: z.string().describe('演员名称,如"布莱恩·科兰斯顿"、"安东尼·斯塔尔"等') },
- Helper function that fetches TV show credits for a given person ID using TMDb's person/{id}/tv_credits endpoint and formats the response.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); } }
- src/tools/discoverShowsTool.ts:82-92 (helper)Helper function to search for a person ID by name using TMDb search API.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; } }