Skip to main content
Glama

baseline-mcp

MCP server exposing Baseline as agent tools — statistically rigorous weather and climate context, not just current conditions. Thin translation layer only: no climate logic lives here, every tool call is an HTTP request to the Baseline API. See baseline_mcp_server_plan.md in the Baseline project for the full design, and METHODOLOGY.md for how the underlying data and rankings are computed.

Tools

  • get_climate_context — natural-language weather and climate questions, full context back (forecast + 35-year historical percentile ranking).

  • get_context_for_coordinates — same, for an exact lat/lon rather than a place name.

  • get_water_year_status — precipitation/temperature status since the start of the water year (Oct 1 US / Jan 1 elsewhere), ranked against 35 years.

  • compare_to_normal — how unusual current or forecast conditions are at one location.

  • compare_locations — rank precipitation, temperature, or snowfall across 2-10 locations (or a curated category like colorado_ski_resorts) in a single call, over a water year, season, month, or ski season.

Related MCP server: mcp-weather

Installation

Requires a Baseline API key. Self-serve signup isn't available yet — during this early period, contact Chad McNutt (chadmcnutt@gmail.com) for a key.

pip install baseline-mcp
# or: uvx baseline-mcp

Then add it to your MCP client's config, with your API key:

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "baseline": {
      "command": "uvx",
      "args": ["baseline-mcp"],
      "env": {
        "BASELINE_API_URL": "https://api.baselinecontext.com",
        "BASELINE_API_KEY": "your-key-here"
      }
    }
  }
}

Claude Code: claude mcp add baseline --env BASELINE_API_URL=https://api.baselinecontext.com --env BASELINE_API_KEY=your-key-here -- uvx baseline-mcp

Cursor (.cursor/mcp.json or global MCP settings): same shape as the Claude Desktop config above, under whatever key Cursor's MCP settings use for server name.

Local development

The venv lives outside this directory (~/.venvs/baseline-mcp) rather than in .venv/ here, because this project sits under iCloud-synced ~/Documents — iCloud evicts/re-materializes files inside large venvs unpredictably, which causes intermittent ModuleNotFoundErrors. Keep it that way.

python3 -m venv ~/.venvs/baseline-mcp
~/.venvs/baseline-mcp/bin/pip install -e .
cp .env.example .env   # fill in BASELINE_API_URL and a free_api-tier BASELINE_API_KEY

Run against a local Baseline instance (python3 app.py in ../baseline), then:

~/.venvs/baseline-mcp/bin/mcp dev src/baseline_mcp/server.py

Status

All 5 tools built and tested against a live local Baseline instance, including tool-selection validation in Claude Desktop. Verified end-to-end against the production Baseline API as of the 2026-08-01 soft-launch prep (data freshness, temporal query handling, and climatology all fixed and confirmed live).

The Baseline API each tool wraps was additionally exercised against production the week of 2026-08-05 through a ~150-question adversarial stress-test corpus (spatial, temporal, and phrasing edge cases) — real bugs were found and fixed at every layer this server depends on: location extraction, temporal-window parsing, and geocoding, all deployed and reverified live, zero regressions.

METHODOLOGY.md (trust collateral) complete. Production now served over TLS at api.baselinecontext.com. See baseline_mcp_server_plan.md in the Baseline project for full task history. Published to PyPI as of 0.1.2.

Available Tools

1 tool
get_climate_contextA

Get statistically rigorous weather and climate context for any location on Earth (land only). Answers natural-language questions with 10-day forecast data and historical percentile rankings against a 35-year ERA5 daily climatology (1991-2025, WMO 1991-2020 normals). Use this when you need to know not just what conditions are or will be, but how unusual they are relative to history.

query MUST be phrased as a question in one of these forms (the location goes where LOCATION is shown; the underlying parser matches these patterns specifically and will fail on other phrasings, e.g. "weather context for LOCATION" does not work):

  • "Will LOCATION be warmer/wetter than normal this week?"

  • "Has LOCATION been dry this water year?" / "this year?"

  • "How cold/warm/wet was last winter/spring/summer/fall in LOCATION?"

  • "What is the wettest/driest month in LOCATION?"

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations present, so description must disclose all behaviors. It specifies 'land only', data sources (ERA5, WMO normals), and query format requirements. It also transparently notes that alternative phrasings will fail, giving clear behavioral expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is two efficient paragraphs: first states core purpose and data context, second provides vital usage guidelines. Every sentence adds value, no redundancy. Front-loaded with the essential function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's single parameter and presence of an output schema, the description covers all needed aspects: what it does, when to use, how to phrase queries, and failure modes. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% coverage, but description compensates thoroughly by detailing the exact required structure of the 'query' parameter, including multiple valid patterns and explicit examples. This adds essential semantic meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it provides statistically rigorous weather/climate context using forecast and historical percentiles. It explicitly contrasts with simple weather queries by emphasizing 'how unusual' conditions are, effectively distinguishing its purpose from basic weather tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: needing unusualness relative to history. Provides exact query formats and warns against failing phrasings. No sibling tools exist, but description fully covers usage context and constraints.

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.

  1. 1 tool updatev0.1.1
    • First observedget_climate_context

TDQS

A4.6/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The single tool's purpose is clearly defined.

Naming Consistency5/5

The single tool name 'get_climate_context' follows a clear verb_noun pattern. Consistency is trivial with one tool.

Tool Count2/5

A single tool is too few for what could be a broader climate data server. While the tool is detailed, one tool makes the server feel incomplete and limited in scope.

Completeness2/5

The tool only handles specific query forms (e.g., 'Will LOCATION be warmer...?') and excludes other natural language questions. There are clear gaps in functionality, such as providing raw data or different time ranges.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server built with the mcp-framework to provide weather-related tools and data to AI clients. It enables integration of weather capabilities and custom tools into the MCP ecosystem for use with platforms like Claude Desktop.
    8
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for NASA POWER climate data, offering a climatology tool to retrieve long-term monthly averages for any coordinate. Supports natural language queries through the Pipeworx gateway.
    14
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides weather data using the OpenWeather One Call API 3.0. This server allows AI agents to access current weather, forecasts, and historical weather data for any location.
    11
    -

Latest Blog Posts

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/elninyo-ops/baseline-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server