AccuWeather MCP

io.github.JonJamPublished by GitHub account JonJamv1.4.11Updated Oct 24, 2026

MCP server providing weather tools with data sourced from AccuWeather.

VerifiedSTDIODesktop onlyLocation & Lifestyle

Overview

AI-generated overview

An MCP server that gives an assistant weather tools backed by AccuWeather data, such as current conditions and forecasts.

What you can do
Provides weather tools whose data comes from AccuWeather, so an assistant can look up weather information on request. The README shows an example prompt asking for the current weather in a named place. The manifest does not list the individual tool names or their parameters.
When to use it
Worth adding when you want an assistant to answer weather questions using AccuWeather data during a chat. It is a desktop-only local server, so it suits users running an MCP client such as Claude Desktop or Cursor on their own machine.
Requirements
Runs locally as a Java process (a jar or the published Docker image) over stdio. Requires an AccuWeather API key supplied as the ACCUWEATHER_API_KEY environment variable, and network access to reach the AccuWeather API.
Before you install
The AccuWeather API key is a secret passed via the ACCUWEATHER_API_KEY environment variable; keep it out of shared configuration and logs. Weather lookups send the requested locations to AccuWeather as a third party. Enabling a Java debugger writes to standard output, which the README notes breaks the stdio MCP protocol.

Installation

In SourceWeft

  1. Open AccuWeather MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

accuweather-mcp

Setup

  • Define the following environment variables in your system
export ACCUWEATHER_API_KEY=replace-with-your-api-key
  • Define a application-local.yaml in src/main/resources/application.yaml with the following content:
YAML
logging:  console:    enabled: true

Run

  • Run with SPRING_PROFILES_ACTIVE=local ./gradlew bootRun

Testing

Note: If you enable the Java debugger, it will produce output to standard out which will trigger errors in the stdio MCP protocol.

Unit and integration testing

Unit and integration tests use mockito and wiremock. To run the tests, use:

bash
./gradlew build

Mutation testing

This project uses PIT mutation testing via the gradle-pitest-plugin to verify that tests detect injected faults, complementing JaCoCo line coverage.

  • ./gradlew pitest — run mutation tests over com.jonjam.accuweathermcp.* (excluding DTOs and the bootstrap class).
  • Open build/reports/pitest/index.html to review results. Surviving mutants indicate code that is executed by tests but where a fault would not be caught.

MCP Inspector

To test with MCP Inspector, run the following from the root of the repo:

bash
npx @modelcontextprotocol/inspector -e 'JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005' java -jar "build/libs/accuweather-mcp-local-snapshot.jar"

This was sourced from this blog.

AI chat (Claude, Cursor)

  1. Add this configuration to the MCP settings:
json
{  "mcpServers": {    "accuweather-mcp": {      "command": "PATH_TO_JAVA",      "args": ["-jar", "ABSOLUTE_PATH_TO_REPO/build/libs/accuweather-mcp-local-snapshot.jar"],      "env": {        "ACCUWEATHER_API_KEY": "API_KEY"      }    }  }}

If you are using SDKMAN, command should be ~/.sdkman/candidates/java/current/bin/java

This was sourced from the MCP docs.

Example user prompt:

Use the accuweather-mcp to look up the current weather in Manchester, UK.

Docker

This project uses the Jib Gradle plugin to build a Docker image.

  • Build and load the image into your local Docker daemon:
bash
./gradlew jibDockerBuild

The default image name is jonjam/accuweather-mcp.

To use the docker image with MCP Inspector, the command looks as follows:

bash
npx @modelcontextprotocol/inspector docker run --rm -i --env "ACCUWEATHER_API_KEY=$ACCUWEATHER_API_KEY" jonjam/accuweather-mcp:latest

Patterns and practies

More information about patterns and practises for this project can be found in AGENTS.md.

Git

This project uses semantic-release to automate versioning, changelog generation, and publishing.

Important: Commit messages that are intended to trigger a release must be prefixed according to the Conventional Commits standard. For example:

  • feat: add new forecast endpoint
  • fix: correct hourly forecast time calculation

Spotless

This project uses the Spotless Gradle plugin to enforce a consistent Java style.

  • ./gradlew spotlessApply — format sources and fix style issues.
  • ./gradlew spotlessCheck — verify formatting without changing files.

Checkstyle

Static analysis and broader code-quality checks are handled by Checkstyle using a Google-style-based configuration (with formatting delegated to Spotless):

  • ./gradlew checkstyleMain — run Checkstyle over main sources.
  • ./gradlew checkstyleTest — run Checkstyle over test sources.

MCP

  • Tools Ensure to handle errors (i.e. validation) according to the specification

MCP Registry

This server is published to the MCP Registry.

When using an MCP client that supports the registry (e.g. Cursor, Claude Desktop), you can add io.github.jonjam/accuweather-mcp from the registry and configure your AccuWeather API key as the ACCUWEATHER_API_KEY environment variable.

Future improvements

  • Improve error handling in gateway classes based upon AccuWeather status codes
  • Add in-memory caching for AccuWeather API calls that caches data according to expires header
  • Add ability to specify desired metric (i.e. Celsius or Fahrenheit) in Tools
  • End to end integration tests based on Spring AI Examples

Source: README.md at commit 84f01a1

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.4.11LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts