weather-mcp

weather-mcp
TypeScript MCP сервер, предоставляющий инструменты для работы с погодой на базе OpenWeatherMap.
Инструменты
Инструмент | Описание |
| Текущие погодные условия по названию города или широте/долготе |
| Прогноз на 5 дней / 3 часа по широте/долготе |
Транспорты
Режим | Переменная окружения | Когда использовать |
|
| Локальный Cursor / Claude Desktop |
Streamable HTTP |
| Деплой (Render и т.п.) / удалённый URL |
Официальная документация MCP: https://modelcontextprotocol.io/docs/
Удалённый сервер (Render)
Развёрнут на бесплатном тарифе Render:
Базовый URL | |
MCP-эндпоинт | |
Проверка здоровья |
Конфигурация 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
Предварительные требования (только для локального запуска)
Node.js 20+
pnpm (или npm/yarn)
API-ключ OpenWeatherMap (получить здесь)
Настройка (локально)
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.
Откройте Cursor Settings → MCP или отредактируйте
~/.cursor/mcp.json.Добавьте запись
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.
Сохраните, затем переключите сервер в Settings → MCP (или перезапустите Cursor).
Убедитесь, что сервер отображается как подключённый и перечисляет
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
Создайте Web Service из этого репозитория (корень проекта).
Сборка:
pnpm install && pnpm run build(или эквивалент дляnpm).Запуск:
node dist/index.js(илиpnpm run start).Переменные окружения:
TRANSPORT=httpOPEN_WEATHER_MAP_API_KEY=...PORTзадаётся Render автоматически
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
This server cannot be deployed
Maintenance
Related MCP Connectors
OpenWeather MCP — wraps the OpenWeatherMap API (openweathermap.org)
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
Weather MCP — wraps Open-Meteo API (free, no auth)
MCP server for weather with reasoning — umbrella advice, outdoor checks, city comparisons.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceWraps the OpenWeatherMap API to provide weather data through MCP, enabling AI agents to query current conditions, forecasts, and other weather information via natural language.11 npmMIT
- AlicenseNot gradedqualityBmaintenanceProvides weather data from WeatherAPI.com through MCP, enabling AI agents to query current conditions and forecasts via natural language.13 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables MCP clients like Kiro and Claude to access current weather conditions and forecasts for any location using the OpenWeatherMap API.-
- AlicenseNot gradedqualityDmaintenanceIntegrates OpenWeatherMap API with MCP to provide weather data, forecasts, air quality, maps, alerts, and geocoding via natural language.19 npmMIT