UNPKG

plaier-mcp-server

Version:

MCP Server for Plaier Football API - Advanced football analytics and predictions

71 lines 3.58 kB
import { formatError, formatWarning } from '../utils/formatting.js'; export function createNationalityTools(client) { return [ { name: "get_nationalities", description: "Get a list of all nationalities available in the Plaier API with their IDs, which can be used for filtering players.", inputSchema: { type: "object", properties: { search: { type: "string", description: "Optional search term to filter nationalities by name" }, limit: { type: "number", description: "Maximum number of nationalities to return (default: all)", default: 0 } } } } ]; } export async function handleNationalityTool(toolName, args, client) { try { switch (toolName) { case "get_nationalities": { try { const nationalities = await client.getNationalities(); if (!nationalities || !Array.isArray(nationalities) || nationalities.length === 0) { return formatWarning("No nationality data available."); } // Filter by search term if provided let filteredNationalities = nationalities; if (args.search && typeof args.search === 'string' && args.search.trim() !== '') { const searchTerm = args.search.toLowerCase().trim(); filteredNationalities = filteredNationalities.filter(n => n.nationality.toLowerCase().includes(searchTerm)); if (filteredNationalities.length === 0) { return formatWarning(`No nationalities found matching "${args.search}".`); } } // Sort alphabetically by name filteredNationalities.sort((a, b) => a.nationality.localeCompare(b.nationality)); // Apply limit if specified const limit = args.limit && args.limit > 0 ? parseInt(args.limit) : filteredNationalities.length; const nationalitiesToShow = filteredNationalities.slice(0, limit); // Format the result let result = `**Nationalities (${nationalitiesToShow.length}${filteredNationalities.length > limit ? ' of ' + filteredNationalities.length : ''}):**\n\n`; // Create a table for better presentation result += `| ID | Nationality |\n`; result += `|----|-------------|\n`; nationalitiesToShow.forEach(nationality => { result += `| ${nationality.nationality_id} | ${nationality.nationality} |\n`; }); // Add help text result += `\n**Tip:** You can use these nationality IDs when filtering players with the rank_players tool.`; return result; } catch (error) { return formatError(`Error retrieving nationalities: ${error}`); } } default: throw new Error(`Unknown nationality tool: ${toolName}`); } } catch (error) { return formatError(`Tool execution failed: ${error}`); } } //# sourceMappingURL=nationality-tools.js.map