get_tourist_attractions
Find tourist attractions in Colombia by city or keyword to plan visits and discover destinations. Returns names, descriptions, locations, and images.
Instructions
Obtiene atracciones turísticas de Colombia. Puedes buscar por ciudad o por palabra clave.
Args:
city_id (number, opcional): ID de la ciudad para filtrar
search (string, opcional): Palabra clave para buscar (ej: "playa", "museo", "parque")
Returns: Lista de atracciones con nombre, descripción, ubicación e imágenes.
Ejemplo de uso:
"¿Qué lugares turísticos hay en Cartagena?"
"Busca atracciones relacionadas con playas"
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| city_id | No | ID de la ciudad | |
| search | No | Palabra clave para buscar |
Implementation Reference
- src/index.ts:448-494 (handler)The main handler function for the get_tourist_attractions tool. It fetches tourist attractions from the external API based on optional city_id or search parameters, processes up to 20 results, and returns a formatted JSON response or error message.async ({ city_id, search }) => { try { let attractions: TouristAttraction[]; if (city_id) { attractions = await apiRequest<TouristAttraction[]>(`/City/${city_id}/touristattractions`); } else if (search) { attractions = await apiRequest<TouristAttraction[]>(`/TouristAttraction/search/${encodeURIComponent(search)}`); } else { attractions = await apiRequest<TouristAttraction[]>("/TouristAttraction"); } const resultado = { total: attractions.length, atracciones: attractions.slice(0, 20).map(a => ({ id: a.id, nombre: a.name, descripcion: a.description, coordenadas: { latitud: a.latitude, longitud: a.longitude, }, imagenes: a.images || [], ciudad_id: a.cityId, })), }; return { content: [ { type: "text", text: JSON.stringify(resultado, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error al obtener atracciones: ${error instanceof Error ? error.message : "Error desconocido"}`, }, ], }; } } );
- src/index.ts:437-440 (schema)Zod input schema defining optional parameters city_id (number) and search (string) for the tool.inputSchema: { city_id: z.number().int().optional().describe("ID de la ciudad"), search: z.string().optional().describe("Palabra clave para buscar"), },
- src/index.ts:421-422 (registration)Registers the tool named 'get_tourist_attractions' with the MCP server.server.registerTool( "get_tourist_attractions",
- src/index.ts:77-86 (schema)TypeScript interface defining the TouristAttraction data structure used to type the API response in the tool handler.interface TouristAttraction { id: number; name: string; description: string; images: string[]; latitude: string; longitude: string; cityId: number; city?: City; }