open-meteo
by Jose24San
README.md
# mcp-open-meteo
Owned sample MCP server for [Claude Desktop](https://claude.ai/download) or [Cursor](https://cursor.com). Two tools talk to [Open-Meteo](https://open-meteo.com/en/docs) (public weather API). **No API key.**
This is a portfolio demo, not a client deliverable. It shows the SKU shape: tool definitions, client config, README.
## Tools
| Tool | What it does |
| --- | --- |
| `geocode_city` | City name → lat/lon |
| `get_forecast` | Geocode a city, then current conditions + 1–7 day forecast |
## Requirements
- Node 18+
- A client that speaks MCP over stdio: **Cursor** (any paid Cursor plan you already use) or **Claude Desktop**
You do **not** need ChatGPT Plus. Free ChatGPT cannot attach a local custom MCP.
Claude.ai free can add **one remote** custom connector (a public HTTPS MCP). A local stdio server like this one is wired in **Claude Desktop** (`claude_desktop_config.json`) or **Cursor** (`~/.cursor/mcp.json`). Test with no LLM at all via MCP Inspector:
```bash
npm install
npm run inspect
```
## Install
```bash
git clone https://github.com/Jose24San/mcp-open-meteo.git
cd mcp-open-meteo
npm install
```
## Cursor
Settings → MCP → add a server, or merge into `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"open-meteo": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/mcp-open-meteo/src/index.js"]
}
}
}
```
Restart MCP (toggle the server off/on). In chat: "What's the 3-day forecast for McKinney, Texas?" Cursor should call `get_forecast`.
## Claude Desktop
Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
```json
{
"mcpServers": {
"open-meteo": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/mcp-open-meteo/src/index.js"]
}
}
}
```
Use an absolute `node` path if Desktop cannot see nvm (`which node`). Fully quit and reopen Claude Desktop. Enable the `open-meteo` connector on a new chat, then ask for a forecast.
## Not this sample
- Marketing automation, email, SMS, GHL
- OAuth or a private CRM (that's a paid gig, Standard/Premium)
- A whole product or a RAG chatbot
TDQS
A3.7/5.0
Scored across 2 tools
Disambiguation4/5
The two tools have distinct purposes: one resolves coordinates, the other returns weather. However, get_forecast internally geocodes a city, creating slight overlap that could confuse an agent about whether geocode_city is a required prerequisite.
Naming Consistency5/5
Both names follow a clear snake_case verb_noun pattern (geocode_city, get_forecast) with no deviations.
Tool Count3/5
Only two tools is thin for a weather API server. While the tools are focused, the surface feels underdeveloped for the apparent scope of Open-Meteo.
Completeness3/5
The server covers basic geocoding and a short forecast, but notable operations like hourly forecasts, historical weather, reverse geocoding, and access to additional weather variables are missing.
Maintenance
ActivityMaintained
ResponsivenessNo issues