get_stations_near
Find nearby weather stations by specifying latitude, longitude, and radius using the WeatherXM Pro MCP Server.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude of the center of the area | |
| lon | Yes | Longitude of the center of the area | |
| radius | Yes | Radius in meters for which stations are queried |
Implementation Reference
- src/index.ts:39-57 (handler)The handler function that executes the logic for the get_stations_near tool by querying the WeatherXM Pro API endpoint '/stations/near' with lat, lon, radius parameters and returning the JSON data or error.async ({ lat, lon, radius }) => { try { const response = await axiosInstance.get('/stations/near', { params: { lat, lon, radius }, }); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }], }; } catch (error: any) { if (axios.isAxiosError(error)) { return { content: [{ type: "text", text: `WeatherXM API error: ${error.response?.data.message ?? error.message}` }], isError: true, }; } throw error; } } );
- src/index.ts:34-38 (schema)Zod input schema defining parameters lat (number), lon (number), radius (number) for the get_stations_near tool.{ lat: z.number().describe("Latitude of the center of the area"), lon: z.number().describe("Longitude of the center of the area"), radius: z.number().describe("Radius in meters for which stations are queried"), },
- src/index.ts:32-57 (registration)The registration of the get_stations_near tool via McpServer.tool() call, including inline schema and handler function.server.tool( "get_stations_near", { lat: z.number().describe("Latitude of the center of the area"), lon: z.number().describe("Longitude of the center of the area"), radius: z.number().describe("Radius in meters for which stations are queried"), }, async ({ lat, lon, radius }) => { try { const response = await axiosInstance.get('/stations/near', { params: { lat, lon, radius }, }); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }], }; } catch (error: any) { if (axios.isAxiosError(error)) { return { content: [{ type: "text", text: `WeatherXM API error: ${error.response?.data.message ?? error.message}` }], isError: true, }; } throw error; } } );