searchLocation
Search for Swiss locations to retrieve detailed hourly and daily weather forecasts using weather data from the LandiWetter MCP Server.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| locationName | Yes | The name of the location to search for |
Implementation Reference
- src/index.js:48-74 (registration)Registration of the 'searchLocation' MCP tool, including input schema and handler function.server.tool( "searchLocation", { locationName: z.string().describe("The name of the location to search for") }, async ({ locationName }) => { const locations = await searchLocation(locationName); if (locations.length === 0) { return { content: [{ type: "text", text: `No locations found for "${locationName}".` }] }; } const formattedLocations = locations.map(loc => `${loc.name}${loc.plz ? ` (${loc.plz})` : ''}, ${loc.land} - ID: ${loc.id}` ).join('\n'); return { content: [{ type: "text", text: `Found ${locations.length} location(s):\n\n${formattedLocations}` }] }; } );
- src/index.js:51-73 (handler)The handler function for the searchLocation tool. It calls the helper to search locations and formats the response as text.async ({ locationName }) => { const locations = await searchLocation(locationName); if (locations.length === 0) { return { content: [{ type: "text", text: `No locations found for "${locationName}".` }] }; } const formattedLocations = locations.map(loc => `${loc.name}${loc.plz ? ` (${loc.plz})` : ''}, ${loc.land} - ID: ${loc.id}` ).join('\n'); return { content: [{ type: "text", text: `Found ${locations.length} location(s):\n\n${formattedLocations}` }] }; }
- src/index.js:50-50 (schema)Input schema for the searchLocation tool using Zod, defining locationName as a string.{ locationName: z.string().describe("The name of the location to search for") },
- src/index.js:20-30 (helper)Helper function that performs the API call to search for locations by name.// Helper function to search for locations async function searchLocation(locationName) { try { const response = await axios.get(`https://www.landi.ch/weather/api/geosuche/de/${encodeURIComponent(locationName)}`); console.error('Search Location API Response:', JSON.stringify(response.data, null, 2)); return response.data.orte || []; } catch (error) { console.error("Error searching for location:", error.message); return []; } }