qweather-mcp
The qweather-mcp server provides comprehensive weather data query capabilities via the QWeather API using Model Context Protocol (MCP). With this server, you can:
Look up city information by name
Get current weather conditions
Retrieve multi-day weather forecasts (3, 7, 10, 15, or 30 days)
Obtain minute-by-minute precipitation forecasts for the next 2 hours
Access hourly weather forecasts for up to 168 hours
Check for real-time weather warning information
Query various weather-related life indices (e.g., sports, car wash, dressing)
Fetch real-time air quality data
Get hourly and daily air quality forecasts
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@qweather-mcpwhat's the weather forecast for Tokyo for the next 3 days?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
qweather-mcp
English | 简体中文
MCP server for QWeather API, providing comprehensive weather information query capabilities through Model Context Protocol (MCP).
✨ Features
🌤️ Real-time weather queries
📅 Multi-day weather forecasts (3/7/10/15/30 days)
🔐 JWT (EdDSA/Ed25519) and legacy API Key authentication
🔌 Custom API base URL support
🛠️ Complete tool integration
Related MCP server: OpenWeatherMap MCP Server
📦 Installation
Via Smithery
Recommended: Install automatically for Claude Desktop using Smithery:
npx -y @smithery/cli install @overstarry/qweather-mcp --client claudeManual Configuration
First, get your credentials from the QWeather Console.
Start the server:
# stdio server
npx -y qweather-mcpConfigure environment variables (pick one of the two auth modes below).
🔐 JWT Authentication (recommended)
QWeather has announced that API Key authentication will be deprecated in 2027 and recommends migrating to JWT (EdDSA + Ed25519). Generate an Ed25519 key pair, upload the public key to the QWeather console, and configure:
QWEATHER_API_BASE=https://<your-host>.qweatherapi.com
QWEATHER_PROJECT_ID=<project-id>
QWEATHER_KEY_ID=<credential-id>
# Either pass the PEM path…
QWEATHER_PRIVATE_KEY_PATH=/path/to/ed25519-private.pem
# …or the PEM content directly (newlines preserved)
# QWEATHER_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"If both QWEATHER_PRIVATE_KEY_PATH and QWEATHER_PRIVATE_KEY are provided, the path takes precedence. For QWEATHER_PRIVATE_KEY, the literal two-character sequence \n is auto-converted to real newlines, so the single-line form above works in shells, .env files, and JSON configs.
JSON config example:
{
"mcpServers": {
"qweather": {
"command": "npx",
"args": ["-y", "qweather-mcp"],
"env": {
"QWEATHER_API_BASE": "https://<your-host>.qweatherapi.com",
"QWEATHER_PROJECT_ID": "<project-id>",
"QWEATHER_KEY_ID": "<credential-id>",
"QWEATHER_PRIVATE_KEY_PATH": "/path/to/ed25519-private.pem"
}
}
}
}JWT details: tokens are signed with alg=EdDSA, iat is back-dated 30s to tolerate clock skew, exp = iat + 900s (15 min, well under QWeather's 24h cap), and tokens are cached and reused until ~30s before expiry. See the official authentication docs.
🔑 API Key Authentication (legacy)
QWEATHER_API_BASE=https://api.qweather.com
QWEATHER_API_KEY=<your-api-key>JSON config example:
{
"mcpServers": {
"qweather": {
"command": "npx",
"args": ["-y", "qweather-mcp"],
"env": {
"QWEATHER_API_BASE": "<your-api-url>",
"QWEATHER_API_KEY": "<your-api-key>"
}
}
}
}Mode detection
Env vars present | Mode |
Full JWT vars ( | JWT (wins even if |
Full JWT vars + | JWT (API Key is ignored) |
Partial JWT vars + | API Key, with a startup warning to stderr |
Partial JWT vars only | startup error |
| API Key |
neither | startup error |
The active mode is logged to stderr at startup, e.g. Weather MCP Server running on stdio (auth: JWT/EdDSA).
🛠️ Available Tools
get-weather-now
Get current weather information for a specified location.
get-weather-forecast
Get weather forecast information for a specified location with customizable forecast days:
3-day forecast
7-day forecast
10-day forecast
15-day forecast
30-day forecast
Forecast data includes:
Temperature range (min/max)
Day/night weather conditions
Sunrise/sunset times
Precipitation
Humidity
Wind conditions
UV index
get-minutely-precipitation
Provides minute-by-minute precipitation forecast for the next 2 hours, including:
Precipitation type (rain/snow)
Precipitation amount per minute
Precise time predictions
Real-time forecast descriptions
get-hourly-forecast
Provides hourly weather forecasts for 24, 72, or 168 hours, including:
Temperature changes
Weather conditions
Wind direction and force
Relative humidity
Atmospheric pressure
Precipitation probability
Cloud coverage
get-weather-warning
Provides real-time weather warning information, including:
Warning issuing authority
Warning level and type
Detailed warning content
Warning validity period
Related recommendations
get-weather-indices
Provides weather life indices information, supporting various index types:
Sports index
Car wash index
Dressing index
Fishing index
UV index
Tourism index
Allergy index and 16 other life indices
get-air-quality
Provides real-time air quality data, including:
AQI index
Air quality level
Primary pollutants
Health advice
Pollutant concentrations
get-air-quality-hourly
Provides hourly air quality forecast for the next 24 hours:
Hourly AQI predictions
Pollutant concentration changes
Health impact assessment
Protection recommendations
get-air-quality-daily
Provides air quality forecast for the next 3 days:
Daily AQI predictions
Primary pollutant forecasts
Air quality level changes
Health protection advice
🤝 Contributing
Issues and improvements are welcome! Please check our contribution guidelines.
📄 License
MIT
🔗 Related Links
Available Tools
2 toolsget-weather-nowC
Get current weather for a location using QWeather API
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | Location ID for the city |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a read operation but lacks details about API key requirements, error handling, or response format. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single sentence. Could be improved by adding a hint about the sibling tool or output format without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity, the description is incomplete. It does not explain how to obtain the location ID or what the output contains, missing essential context for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the parameter described as 'Location ID for the city'. The description adds no extra parameter info, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get current weather for a location' with a specific API mention. However, it does not differentiate from sibling 'lookup-city', which likely provides city IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention that the location parameter might come from the sibling tool 'lookup-city'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup-cityC
Look up city information by name
| Name | Required | Description | Default |
|---|---|---|---|
| cityName | Yes | Name of the city to look up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. The description only states the basic action, with no mention of side effects, authentication needs, rate limits, or error handling (e.g., if city not found). This is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the action. It could be more structured (e.g., listing what information is returned), but it is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with one parameter and no output schema, the description does not specify what fields of city information are returned, nor any behavioral context. This leaves the agent uncertain about the response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (single parameter well-described in schema). The description adds no extra meaning beyond 'by name', but the schema already provides a clear description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'look up city information by name', specifying verb and resource. However, it does not differentiate from the sibling tool 'get-weather-now', which may also involve city queries. The description lacks detail on what information is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of prerequisites, limitations, or cases to avoid. The sibling tool exists but is not differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v1.0.0- First observed
get-weather-now - First observed
lookup-city
TDQS
The two tools serve clearly distinct purposes: one retrieves current weather data, and the other looks up city information. There is no overlap or ambiguity.
Both tools follow a consistent verb_noun pattern using snake_case: get-weather-now and lookup-city. The naming is predictable and clear.
With only 2 tools, the set is on the lower end of reasonable. While it covers the basics, it feels minimal for a weather API, which typically includes more operations like forecasts or alerts.
The tool set lacks essential weather features such as forecasts, historical data, or severe weather alerts. For a weather-focused server, the absence of these common operations is a notable gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
OpenWeather MCP — wraps the OpenWeatherMap API (openweathermap.org)
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
1Smarter Weather MCP: forecasts, alerts, outlooks, observations, AQI, grids, and map imagery.
WeatherAPI.com MCP — wraps WeatherAPI.com (api.weatherapi.com)
Related MCP Servers
- -licenseBqualityNot gradedmaintenancemcp server for weather information query2-
- AlicenseNot gradedqualityDmaintenanceIntegrates OpenWeatherMap API with MCP to provide weather data, forecasts, air quality, maps, alerts, and geocoding via natural language.67MIT
- AlicenseNot gradedqualityDmaintenanceEnables to interact with comprehensive weather data through the MCP protocol, including current conditions, multi-day forecasts, hourly forecasts, and geocoding.22MIT
- FlicenseAqualityBmaintenanceProvides real-time weather and 3-day forecast for Chinese cities using the QWeather API, working with any MCP-compatible client.2-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/overstarry/qweather-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server