This is a Model Context Protocol (MCP) server that provides weather information using the National Weather Service (NWS) API. Features Get weather alerts for a US state Get weather forecast for a specific location (using latitude and longitude)
This is a Model Context Protocol (MCP) server that provides weather information using the National Weather Service (NWS) API.
python -m venv .venv
source .venv/bin/activate # On Windows, use `.venv\Scripts\activate`
uv add "mcp[cli]" httpx
The server uses a configuration file config.py
with the following settings:
NWS_API_BASE
: The base URL for the National Weather Service APIUSER_AGENT
: The User-Agent string used when making requests to the NWS APILOG_LEVEL
: The logging level (e.g., "INFO", "DEBUG")LOG_FORMAT
: The format string for log messagesREQUEST_TIMEOUT
: The timeout for API requests in secondsYou can modify these settings in the config.py
file to customize the server behavior.
To run the server standalone:
source .venv/bin/activate # On Windows, use `.venv\Scripts\activate`
python weather.py
The Weather MCP Server has been added to the Cline configuration. To use it within Cline:
Ensure that Cline is properly set up and running.
The Weather MCP Server will be available as a tool named "weather".
You can use the following tools within Cline:
a. get_alerts(state: str)
: Get weather alerts for a US state (use two-letter state code, e.g., "CA" for California)
b. get_forecast(latitude: float, longitude: float)
: Get weather forecast for a specific location
Example usage in Cline:
# Get alerts for California
result = await mcp.call_tool("weather.get_alerts", state="CA")
print(result)
# Get forecast for San Francisco (approximate coordinates)
result = await mcp.call_tool("weather.get_forecast", latitude=37.7749, longitude=-122.4194)
print(result)
Note: The exact syntax for calling MCP tools may vary depending on your Cline setup. Refer to Cline documentation for the most up-to-date usage instructions.
The server includes improved error handling for API requests and logging. If an error occurs during a request, the server will log the error and return an appropriate error message. Logs are printed to the console with the configured log level and format.
To run the unit tests:
python -m unittest test_weather.py
These tests cover the basic functionality of the get_alerts
and get_forecast
tools.
To manually test the server, you can use the MCP client to call the provided tools. Here are some example commands:
# Get alerts for California result = await mcp.call_tool("get_alerts", state="CA") print(result) # Get forecast for San Francisco (approximate coordinates) result = await mcp.call_tool("get_forecast", latitude=37.7749, longitude=-122.4194) print(result)
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!