Skip to main content
Glama
madankumarpichamuthu

Weather MCP Agent

README.md
# Weather MCP Agent

A small JavaScript MCP server that exposes a single `get_weather` tool over stdio. The tool accepts a city name and returns the current weather response generated through the configured classroom proxy endpoint.

## Features

- One MCP tool: `get_weather`
- Runs in Node.js
- Uses stdio transport for MCP clients
- Calls the proxy endpoint with the required `fetch()` configuration

## Project Structure

```text
weatherAgentMCP/
├── package.json
├── src/
│   ├── llm.js
│   └── mcp-server.js
├── test-client.js
└── README.md
```

## Installation

From the project root, install dependencies:

```bash
npm install
```

## Run the MCP Server

### Local stdio server

Start the original stdio-based server:

```bash
npm start
```

The server will stay running and wait for MCP clients over stdio.

### HTTP server for Render

A simple HTTP-based MCP endpoint is also available for hosting:

```bash
npm run start:http
```

This starts an HTTP server at `/mcp` on port `3000` (or the port provided by the environment).

## Render deployment guide

### 1. Push the repository to GitHub

Make sure your project is committed and pushed to GitHub.

### 2. Create a new Render web service

In Render:

- click New +
- choose Web Service
- connect your GitHub repository
- select the repository

### 3. Configure the service

Use these settings:

- Build Command: `npm install`
- Start Command: `npm run start:http`
- Environment: `Node`
- Port: Render will provide this automatically through `PORT`

### 4. Deploy

Render will build and start the app. Once it is live, your MCP endpoint will be available at:

```text
https://your-render-app.onrender.com/mcp
```

### 5. Use it from an MCP client

A client that supports HTTP MCP can point to the URL above.

## Local Test

A simple local test client is included. Run it from the project root:

```bash
node test-client.js
```

This client will:

1. Launch the MCP server over stdio
2. List the available tools
3. Invoke `get_weather` for London
4. Print the tool result

## Files

- `src/llm.js`: Contains the `callLLM(prompt)` helper and the proxy request logic.
- `src/mcp-server.js`: Registers the MCP tool and handles tool execution.
- `test-client.js`: A minimal local client used to verify the server end to end.

TDQS

B3.4/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion. The purpose is singular and unambiguous.

Naming Consistency5/5

The single tool 'get_weather' follows a clear verb_noun pattern, which is consistent and predictable.

Tool Count3/5

A single tool for a weather service is on the low end; while it covers basic current weather, it feels thin for a full-featured weather agent.

Completeness2/5

The tool set lacks coverage for forecasts, alerts, historical data, and other common weather-related functionalities, leaving significant gaps.

Maintenance

ActivityStale
ResponsivenessNo issues