@siva-sub/mcp-public-transport
Version:
A Model Context Protocol server for Singapore transport data with real-time information and routing
72 lines (71 loc) • 2.03 kB
TypeScript
import { CacheService } from './cache.js';
export interface WeatherStation {
id: string;
deviceId: string;
name: string;
labelLocation?: {
latitude: number;
longitude: number;
};
location?: {
latitude: number;
longitude: number;
};
}
export interface WeatherReading {
timestamp: string;
data: Array<{
stationId: string;
value: number;
}>;
}
export interface WeatherData {
stations: WeatherStation[];
readings: WeatherReading[];
readingType: string;
readingUnit: string;
}
export interface WeatherConditions {
temperature: number;
rainfall: number;
humidity: number;
windSpeed: number;
windDirection: number;
location: {
latitude: number;
longitude: number;
};
timestamp: string;
}
export interface WeatherAdvisory {
severity: 'low' | 'medium' | 'high';
type: 'rain' | 'heat' | 'wind' | 'humidity';
message: string;
routingImpact: {
walkingTimeMultiplier: number;
preferredModes: string[];
avoidedAreas: string[];
};
}
export declare class WeatherService {
private cache;
private timeout;
private client;
private readonly baseUrl;
constructor(cache: CacheService, timeout?: number);
private setupInterceptors;
getRainfall(date?: string): Promise<WeatherData>;
getAirTemperature(date?: string): Promise<WeatherData>;
getRelativeHumidity(date?: string): Promise<WeatherData>;
getWindSpeed(date?: string): Promise<WeatherData>;
getWindDirection(date?: string): Promise<WeatherData>;
getWeatherConditionsForLocation(latitude: number, longitude: number): Promise<WeatherConditions>;
private getAllWeatherData;
private processWeatherData;
private getDefaultWeatherConditions;
generateWeatherAdvisory(conditions: WeatherConditions): WeatherAdvisory[];
private getStationCoordinates;
private findNearestStation;
private getLatestReading;
private calculateDistance;
}