plaier-mcp-server
Version:
MCP Server for Plaier Football API - Advanced football analytics and predictions
71 lines • 3.58 kB
JavaScript
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