Skip to main content
Glama

Weather MCP Server

by gmailhasan
README.md3.92 kB
# Weather MCP Server A Model Context Protocol (MCP) server that provides weather data from the Open-Meteo API. ## Overview This MCP server fetches weather data from the Open-Meteo API endpoint and communicates over **HTTP** using the Streamable HTTP transport. ``` https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m ``` ## Features - **HTTP Transport**: Communicate over HTTP for remote access - **Current Weather**: Get current temperature and wind speed - **Hourly Forecast**: Access hourly temperature, relative humidity, and wind speed data - **Flexible Coordinates**: Query weather for any latitude/longitude coordinates - **Session Management**: Supports multiple concurrent client sessions ## Installation 1. Install dependencies: ```bash npm install ``` 2. Build the server: ```bash npm run build ``` 3. Start the server: ```bash node build/index.js ``` The server will start on `http://localhost:3000` by default. You can customize the port: ```bash PORT=8080 node build/index.js ``` ## Endpoints - `POST /mcp` - Main MCP endpoint for tool calls and requests - `GET /mcp` - Server-Sent Events (SSE) endpoint for streaming - `DELETE /mcp` - Close session endpoint - `GET /health` - Health check endpoint ## Tools ### get_weather Fetches current weather and hourly forecast data for specified coordinates. **Parameters:** - `latitude` (number): Latitude coordinate (e.g., 52.52 for Berlin) - `longitude` (number): Longitude coordinate (e.g., 13.41 for Berlin) **Returns:** - Current temperature (°C) - Current wind speed (km/h) - Hourly forecast data arrays - Complete raw API response ## Usage with MCP Clients ### HTTP Client (Recommended) Use the provided HTTP client to connect to the running server: ```bash # Start the server in one terminal node build/index.js # Run the client in another terminal node mcp-http-client.js ``` Or create your own HTTP client using the MCP SDK: ```javascript import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; const client = new Client( { name: "my-client", version: "1.0.0", }, { capabilities: {} } ); const transport = new StreamableHTTPClientTransport( new URL("http://localhost:3000/mcp") ); await client.connect(transport); // List tools const tools = await client.listTools(); // Call a tool const result = await client.callTool({ name: "get_weather", arguments: { latitude: 47.6162, longitude: -122.0356 }, }); ``` ### VS Code Add to your `.vscode/mcp.json`: ```json { "servers": { "weather-mcp-server": { "type": "http", "url": "http://localhost:3000/mcp" } } } ``` ### Claude Desktop The HTTP server can be accessed by any MCP client that supports HTTP transport. Configure your client to connect to: ``` http://localhost:3000/mcp ``` ## Example Queries Once connected to an MCP client, you can ask questions like: - "What's the current weather in Berlin?" (latitude: 52.52, longitude: 13.41) - "Get weather forecast for San Francisco" (latitude: 37.77, longitude: -122.42) - "Show me the hourly temperature forecast for Tokyo" (latitude: 35.68, longitude: 139.65) ## Development The server is built using: - **MCP SDK**: [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk) - **Zod**: For schema validation - **TypeScript**: For type safety ## API Reference Weather data is sourced from [Open-Meteo](https://open-meteo.com/), a free weather API that provides: - Real-time weather data - Hourly forecasts - No API key required ## License ISC

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gmailhasan/mcpexample'

If you have feedback or need assistance with the MCP directory API, please join our Discord server