Skip to main content
Glama
RashJrEdmund

weather-mcp

by RashJrEdmund

изображение предпросмотра

weather-mcp

TypeScript MCP сервер, предоставляющий инструменты для работы с погодой на базе OpenWeatherMap.

Инструменты

Инструмент

Описание

get_current_weather

Текущие погодные условия по названию города или широте/долготе

get_forecast

Прогноз на 5 дней / 3 часа по широте/долготе

Транспорты

Режим

Переменная окружения

Когда использовать

stdio (по умолчанию)

TRANSPORT=stdio

Локальный Cursor / Claude Desktop

Streamable HTTP

TRANSPORT=http

Деплой (Render и т.п.) / удалённый URL

Официальная документация MCP: https://modelcontextprotocol.io/docs/

Удалённый сервер (Render)

Развёрнут на бесплатном тарифе Render:

Конфигурация Cursor (удалённо)

Добавьте это в Settings → MCP или ~/.cursor/mcp.json:

{
  "mcpServers": {
    "weather": {
      "url": "https://weather-mcp-ts.onrender.com/mcp"
    }
  }
}

Локальная сборка или API-ключ в Cursor не нужны — ключ хранится в переменных окружения Render.

Бесплатный тариф Render: сервис выключается после ~15 минут бездействия. Следующий запрос — это холодный старт, который может занять до ~50 секунд, прежде чем MCP ответит. Если инструменты Cursor выглядят зависшими при пробуждении, один раз обратитесь к /health.

Related MCP server: mcp-weatherapi

Предварительные требования (только для локального запуска)

Настройка (локально)

pnpm install
cp .env.example .env

Отредактируйте .env и укажите свой ключ:

OPEN_WEATHER_MAP_API_KEY=your_key_here
TRANSPORT=stdio

Соберите сервер:

pnpm run build

Это создаст исполняемую точку входа в dist/index.js.

Добавление в Cursor (локальный stdio)

Cursor по умолчанию не запускает этот процесс из корня проекта для загрузки переменных окружения, поэтому передайте файл окружения с абсолютным путём через флаг --env-file Node.js.

  1. Откройте Cursor Settings → MCP или отредактируйте ~/.cursor/mcp.json.

  2. Добавьте запись weather в раздел mcpServers:

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": [
        "--env-file",
        "/ABSOLUTE/PATH/TO/weather-mcp/.env",
        "/ABSOLUTE/PATH/TO/weather-mcp/dist/index.js"
      ]
    }
  }
}

Замените /ABSOLUTE/PATH/TO/weather-mcp на реальный путь к проекту (например, выполните pwd из корня репозитория). Оставьте TRANSPORT=stdio (или не задавайте) в .env.

Альтернатива: переменные окружения в строке

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": [
        "/ABSOLUTE/PATH/TO/weather-mcp/dist/index.js"
      ],
      "env": {
        "OPEN_WEATHER_MAP_API_KEY": "your_key_here",
        "TRANSPORT": "stdio"
      }
    }
  }
}

Предпочтительнее использовать .env + --env-file, чтобы ключ не попадал в mcp.json.

  1. Сохраните, затем переключите сервер в Settings → MCP (или перезапустите Cursor).

  2. Убедитесь, что сервер отображается как подключённый и перечисляет get_current_weather и get_forecast.

После изменений в коде

pnpm run build

Затем перезагрузите MCP-сервер в Cursor.

Streamable HTTP (локально)

Режим HTTP обслуживает MCP на POST/GET /mcp (настраивается) плюс GET /health. Streamable HTTP настраивается через официальный SDK createMcpHandler + toNodeHandler.

pnpm run build
TRANSPORT=http PORT=3000 pnpm run start
# or
pnpm run start:http

Вы должны увидеть что-то вроде:

Weather MCP Server running on http://0.0.0.0:3000/mcp (Streamable HTTP)

Деплой на Render

  1. Создайте Web Service из этого репозитория (корень проекта).

  2. Сборка: pnpm install && pnpm run build (или эквивалент для npm).

  3. Запуск: node dist/index.js (или pnpm run start).

  4. Переменные окружения:

    • TRANSPORT=http

    • OPEN_WEATHER_MAP_API_KEY=...

    • PORT задаётся Render автоматически

  5. MCP URL: https://<your-service>.onrender.com/mcp
    Этот деплой: https://weather-mcp-ts.onrender.com/mcp

HTTP-эндпоинт не защищён аутентификацией. Любой, у кого есть URL, может вызывать инструменты. Добавьте аутентификацию перед широким распространением.

Ручная проверка (OpenWeatherMap)

С настроенным .env:

node --env-file=.env -e "
import { getApiKey, buildCurrentWeatherUrl, makeOWMRequest, formatCurrentWeather } from './dist/utils.js';
const apiKey = getApiKey();
const data = await makeOWMRequest(buildCurrentWeatherUrl({ apiKey, city: 'Yaounde,CM', units: 'metric' }));
console.log(data ? formatCurrentWeather(data, 'metric') : 'failed');
"

Удалённая проверка здоровья:

curl -s https://weather-mcp-ts.onrender.com/health

Структура репозитория

weather-mcp/
├── README.md
├── package.json
├── tsconfig.json
├── .env.example
└── src/
    ├── index.ts      # stdio + Streamable HTTP entry
    ├── server.ts     # tool registration
    ├── types.ts
    └── utils.ts

Примечания

  • Никогда не коммитьте .env (он в gitignore).

  • Stdio-серверы не должны писать в stdout ничего, кроме MCP JSON-RPC; логи идут в stderr (console.error).

  • Бесплатные тарифы OpenWeatherMap покрывают текущую погоду и прогноз на 5 дней / 3 часа, используемые здесь.

Лицензия

ISC

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • OpenWeather MCP — wraps the OpenWeatherMap API (openweathermap.org)

  • WeatherAPI.com MCP — wraps WeatherAPI.com (api.weatherapi.com)

  • Visual Crossing Weather MCP — wraps the Visual Crossing Weather Timeline API

View all MCP Connectors

Latest Blog Posts

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/RashJrEdmund/Weather-MCP'

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