About Smarter Weather
Smarter Weather is a stdio-to-Streamable-HTTP bridge that lets local MCP clients connect to Smarter Weather’s hosted service. It handles API-key resolution and message forwarding; weather tools and schemas are provided remotely.
Key features
- 01Connect to the hosted weather MCP service
- 02Resolve keys from environment or .env
- 03Pass through mcp-remote flags
- 04Override the MCP endpoint
Use cases
- 01Call weather tools from Claude Desktop
- 02Connect Cursor to the remote weather MCP
- 03Configure an API key for a local MCP client
MCP support
The client receives MCP messages over stdio and proxies them to Smarter Weather’s Streamable HTTP endpoint. Weather logic and tool schemas reside on the remote MCP server.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.smarterweather.comclaude mcp add --transport http smarterweather-weather https://mcp.smarterweather.com{"mcpServers":{"smarterweather-weather":{"type":"http","url":"https://mcp.smarterweather.com"}}}Open in Cursor{"servers":{"smarterweather-weather":{"type":"http","url":"https://mcp.smarterweather.com"}}}Open in VS Code{"mcpServers":{"smarterweather-weather":{"type":"http","url":"https://mcp.smarterweather.com"}}}{"mcpServers":{"smarterweather-weather":{"serverUrl":"https://mcp.smarterweather.com"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
14| Parameter | Type | Required | Description |
|---|---|---|---|
| fuzzy | boolean | No | Autosuggest mode for partial/misspelled input. Default false (exact search). |
| limit | integer | No | Maximum candidates to return (1-10). Default 5. |
| query | string | Yes | Place query: city, "city, state", ZIP, partial text, or venue/address where enabled. |
| near_lat | number | No | Rank venues/addresses near this point; pair with near_lon. |
| near_lon | number | No |
Details
From the project README@smarterweather/mcp-weather
A stdio-to-Streamable-HTTP bridge for the Smarter Weather hosted MCP server at https://mcp.smarterweather.com. It lets local-only MCP clients (Claude Desktop, Claude Code, Cursor, MCP Inspector, etc.) reach sw-mcp over the network with your API key.
Requires Node.js 22 or later.
The package is a thin wrapper around mcp-remote: no weather logic ships here, and the protocol implementation is not forked. All tools, schemas, rate limiting and metering live server-side in sw-mcp.
Get an API key
Run one of these in your project directory:
# A human is present: device sign-in in the browser (free account, no card)
npx -y @smarterweather/mcp-onboarding@latest login
# No human present: mint a trial key you can claim into a free account later
npx -y @smarterweather/mcp-onboarding@latest trial
Both write SMARTERWEATHER_API_KEY to ./.env (mode 0600, gitignored) and print only a key prefix, never the key.
The bridge resolves the key from:
SMARTERWEATHER_API_KEYin the process environment- the file named by
SMARTERWEATHER_ENV_FILE .envin the working directory (skipped when the working directory is/or$HOME)
Unexpanded ${…} placeholders count as unset. The bridge passes the key to mcp-remote as Authorization:${SMARTERWEATHER_AUTH_HEADER}, with the bearer only in the child process environment, never on argv.
Without a key the bridge still connects, and discovery tools such as search_locations and search_catalog stay free. Other tool calls return x402 payment requirements (USDC on Base) with next_steps that point back to login and trial. OAuth sign-in through the bridge is not available yet; use an API key.
Install
npx -y @smarterweather/mcp-weather --version
Claude Desktop
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"smarterweather": {
"command": "npx",
"args": ["-y", "@smarterweather/mcp-weather"],
"env": {
"SMARTERWEATHER_ENV_FILE": "/absolute/path/to/your/project/.env"
}
}
}
}
Claude Desktop does not interpolate env placeholders, so point the bridge at the .env that login / trial wrote, by absolute path. Never paste the key into this file. The bridge sends Authorization: Bearer <key> on every proxied request.
Cursor
Use envFile in the project .cursor/mcp.json (envFile requires "type": "stdio"):
{
"mcpServers": {
"smarterweather": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@smarterweather/mcp-weather"],
"envFile": "${workspaceFolder}/.env"
}
}
}
Or ${env:NAME} from the process environment:
{
"mcpServers": {
"smarterweather": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@smarterweather/mcp-weather"],
"env": {
"SMARTERWEATHER_API_KEY": "${env:SMARTERWEATHER_API_KEY}"
}
}
}
}
Environment variables
| Variable | Purpose | Default |
|---|---|---|
SMARTERWEATHER_API_KEY | API key. Takes precedence when set; an unexpanded ${…} falls through. | unset (then SMARTERWEATHER_ENV_FILE, then .env) |
SMARTERWEATHER_ENV_FILE | Absolute .env path, read when the process env key is unset. | unset → cwd/.env (not / or $HOME) |
SMARTERWEATHER_MCP_URL | Override the target MCP endpoint. A positional URL argument wins over it. | https://mcp.smarterweather.com |
Any mcp-remote flag passes through unchanged. Examples:
--debug: verbose logs at~/.mcp-auth/{server_hash}_debug.log.--transport http-only: force Streamable HTTP (skip the SSE fallback).--header "X-Custom:value": add a header. Use the no-space form for cross-platform argument escaping.
"args": [
"-y", "@smarterweather/mcp-weather",
"--debug",
"--transport", "http-only"
]
Troubleshooting
- Tool calls return "Payment required": the bridge found no key. Its stderr names every place it checked. Run
loginortrialin the project directory, or setSMARTERWEATHER_ENV_FILEto the.envpath, then restart the MCP client. - "Incompatible auth server: does not support dynamic client registration": the server rejected the key (unknown, revoked or expired), and the bridge has no sign-in fallback. Mint a new key with
loginortrialand restart the client. The bridge passes the key verbatim. - "Connection error: fetch failed": check that the endpoint is reachable from your machine.
curl -i https://mcp.smarterweather.comshould return HTTP405withMethod not allowed. Use POST.(the endpoint accepts POST only). - Cursor doesn't see the server: make sure
.cursor/mcp.jsonis valid JSON, then restart Cursor. The MCP panel logs the spawned process's stderr.
How it works
The bin is a small Node script. It resolves the URL (positional arg → SMARTERWEATHER_MCP_URL → default) and the API key (see above), sets SMARTERWEATHER_AUTH_HEADER in the child environment, appends --header "Authorization:${SMARTERWEATHER_AUTH_HEADER}" when a key was found, then spawn()s mcp-remote's dist/proxy.js. mcp-remote reads JSON-RPC over stdio and proxies each message to the hosted Streamable HTTP endpoint. Signals (SIGINT/SIGTERM/SIGHUP) are forwarded and exit codes propagate. The wrapper does not transform or inspect MCP traffic.
License
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.