Skip to main content
Glama
jefercort

Weather MCP Server

by jefercort
README.md
# Practice MCP JS

A Model Context Protocol (MCP) server implementation in TypeScript that provides weather information tools for AI assistants.

## Description

This project demonstrates how to create an MCP server that exposes weather-related tools to Large Language Models (LLMs). The server provides a `fetch-weather` tool that retrieves current weather data and forecasts for any city using the Open-Meteo API.

## Features

- **Weather Tool**: Fetch current weather conditions and forecasts for any city
- **Input Validation**: Uses Zod for robust input/output validation
- **MCP Protocol**: Compatible with AI assistants that support the Model Context Protocol
- **TypeScript**: Fully typed implementation for better development experience

## Prerequisites

- Node.js (version 14 or higher)
- npm or yarn package manager

## Installation

1. Clone the repository:
```bash
git clone <repository-url>
cd practice-mcp-js
```

2. Install dependencies:
```bash
npm install
```

## Usage

### Running the Server

To start the MCP server:

```bash
npx tsx main.ts
```

The server will start and listen for MCP connections via stdio transport.

### Available Tools

#### fetch-weather

Retrieves weather information for a specified city.

**Parameters:**
- `city` (string): Name of the city to get weather information for

**Example Response:**
The tool returns current weather conditions including:
- Temperature
- Precipitation
- Day/night status
- Rain information
- Hourly forecast data

## Project Structure

```
practice-mcp-js/
├── main.ts           # Main server implementation
├── package.json      # Project configuration and dependencies
├── package-lock.json # Dependency lock file
└── README.md         # This file
```

## Dependencies

- **@modelcontextprotocol/sdk**: Core MCP SDK for server implementation
- **zod**: Schema validation library for input/output validation

## API Integration

This project integrates with the following external APIs:

1. **Open-Meteo Geocoding API**: For converting city names to coordinates
2. **Open-Meteo Weather API**: For retrieving weather data and forecasts

## How It Works

1. The server creates an MCP server instance with the name "PRO INDUSTRIAL MCP SERVER"
2. It defines a `fetch-weather` tool that:
   - Accepts a city name as input
   - Geocodes the city name to get coordinates
   - Fetches weather data using the coordinates
   - Returns formatted weather information
3. The server connects via stdio transport for communication with AI assistants

## Development

The main server logic is implemented in `main.ts:7-55`. Key components include:

- Server initialization (`main.ts:7-10`)
- Tool definition (`main.ts:13-50`)
- Transport setup (`main.ts:54-55`)

## Error Handling

The weather tool includes error handling for:
- Cities that cannot be found
- API request failures
- Invalid input parameters (via Zod validation)

## License

ISC

## Contributing

This is a practice project for learning MCP server development. Feel free to fork and experiment with additional tools and features.