Skip to main content

ERDDAP MCP Servers - Local & Remote

Access oceanographic and environmental data from ERDDAP servers worldwide through Claude Desktop via two complete MCP implementations: local stdio and remote HTTP.

🚀 Now with dynamic server loading from erddaps.json - 63+ ERDDAP servers available!

🌊 Two Servers, All Possibilities

This repository provides both local and remote MCP server implementations:

📍 Local MCP Server (erddapy_mcp_server.py)

  • Traditional stdio-based MCP server for local Claude Desktop use
  • 4 comprehensive ERDDAP tools for data discovery and access
  • Easy setup via claude_desktop_config.json
  • No network dependencies - runs completely locally

☁️ Remote MCP Server (erddap_remote_mcp_oauth.py)

  • HTTP-based MCP server for cloud deployment
  • Production-ready with fly.io deployment configuration
  • mcp-remote proxy compatible for Claude Desktop integration
  • Same 4 core tools optimized for remote performance

🚨 CRITICAL: Remote MCP Connection Requirements

Claude Desktop does NOT support direct remote MCP connections! You MUST use the mcp-remote proxy for remote servers.

The Secret Architecture:

Claude Desktop (stdio) ↔ mcp-remote proxy ↔ Remote MCP Server (HTTP)

What is ERDDAP?

ERDDAP (Environmental Research Division's Data Access Program) is a data server that provides simple, consistent access to scientific datasets in common file formats. These MCP servers make ERDDAP's powerful oceanographic data accessible to AI assistants through natural language queries.

Quick Start

⚠️ IMPORTANT: Disable VPN Before Use

ERDDAP servers may experience severe issues when accessed through VPNs (NordVPN, ExpressVPN, etc.), including:

  • 404 errors on valid datasets
  • Truncated or incomplete data downloads
  • Connection timeouts and failed requests

Solution: Disable your VPN before using these tools. ERDDAP servers often block or rate-limit VPN traffic, causing unreliable behavior.

Option 1: Local MCP Server (Recommended for Getting Started)

1. Install Dependencies:

pip install erddapy mcp pandas

2. Configure Claude Desktop: Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "erddap-local": {
      "command": "python",
      "args": ["/path/to/erddapy_mcp_server.py"]
    }
  }
}

Windows Users: Use %APPDATA%\Claude\claude_desktop_config.json and double backslashes in paths:

{
  "mcpServers": {
    "erddap-local": {
      "command": "python", 
      "args": ["C:\\Users\\YourName\\path\\to\\erddapy_mcp_server.py"]
    }
  }
}

3. Restart Claude Desktop: After updating the configuration, restart Claude Desktop. The server will start automatically and the ERDDAP tools will be available.

Option 2: Remote MCP Server (Access the Cloud Instance)

1. Install mcp-remote proxy:

npm install -g mcp-remote

2. Configure Claude Desktop:

{
  "mcpServers": {
    "erddap-remote": {
      "command": "npx",
      "args": ["mcp-remote", "https://erddap2mcp.fly.dev/"]
    }
  }
}

3. Restart Claude Desktop: The remote server will be accessible through the mcp-remote proxy.

Available Tools

Available Tools (Both Servers)

Tool Description Example Use
list_servers Show well-known ERDDAP servers worldwide "Show me available ERDDAP servers"
search_datasets Search for datasets by keyword "Find temperature datasets on IOOS ERDDAP"
get_dataset_info Get detailed metadata about a dataset "Tell me about dataset jplMURSST41"
to_pandas Download and preview data "Show me temperature data from January 2024"

Usage Examples

List Available ERDDAP Servers

You: "Show me available ERDDAP servers"

Claude: Here are some well-known ERDDAP servers you can access:

Search for Datasets

You: "Search for glider datasets on GCOOS ERDDAP"

Claude: I found 26 glider datasets on the GCOOS ERDDAP server. Here are some examples:

  • Stommel-20200813T1200: Ocean glider deployment
  • usf-sam-20210331T0000: University of South Florida glider
  • mote-dora-20210318T1200: Mote Marine Laboratory glider

These datasets contain oceanographic measurements collected by autonomous underwater gliders.

Analyze Data

You: "Get information about the dataset mote-dora-20210318T1200"

Claude: This dataset contains oceanographic measurements from a Mote Marine Laboratory glider deployment:

Time Coverage: March 18, 2021 - April 15, 2021
Variables: Temperature, salinity, density, dissolved oxygen, chlorophyll
Location: Eastern Gulf of Mexico coastal waters

Architecture Comparison

Local Server

  • Communication: stdio (standard input/output)
  • Deployment: Runs on your local machine
  • Tools: 4 comprehensive data access tools
  • Setup: Single config file entry
  • Dependencies: Python + MCP library

Remote Server

  • Communication: HTTP with JSON-RPC 2.0
  • Deployment: Cloud platforms (fly.io, AWS, etc.)
  • Tools: Same 4 data access tools
  • Setup: Requires mcp-remote proxy
  • Dependencies: FastAPI + Docker + HTTPS

For Developers: Cloud Deployment

This section is for developers who want to deploy their own instance of the remote server.

fly.io Deployment (Recommended)

The remote server is configured for one-command deployment to fly.io:

# Deploy from the erddap2mcp directory
fly deploy

fly.toml Configuration:

app = 'erddap2mcp'
primary_region = 'mia'

[http_service]
  internal_port = 8000
  force_https = true
  auto_stop_machines = 'stop'
  auto_start_machines = true

[[vm]]
  memory = '1gb'
  cpu_kind = 'shared'
  cpus = 1

Key Features:

  • ✅ Automatic HTTPS - SSL certificates managed automatically
  • ✅ Auto-scaling - Machines start/stop based on traffic
  • ✅ Global CDN - Fast access worldwide
  • ✅ Zero-downtime deploys - Seamless updates

Container Deployment (Other Platforms)

# Build container
docker build -t erddap-mcp-server .

# Run locally
docker run -p 8000:8000 erddap-mcp-server

# Deploy to other platforms:
# - AWS Lambda (requires HTTPS setup)
# - Railway/Render (usually provide HTTPS automatically)
# - Google Cloud Run
# - Azure Container Instances

Testing Your Setup

For Users: Verify Installation

After configuring Claude Desktop, restart it and check if the ERDDAP tools appear in the tools list.

For Developers: Manual Testing

Test Local Server

# Test the server directly (for debugging)
python erddapy_mcp_server.py

# Send test commands:
echo '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}' | python erddapy_mcp_server.py

Test Remote Server

# Test basic connectivity
curl http://localhost:8000/

# Test MCP protocol
curl -X POST http://localhost:8000/ \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'

# Test with mcp-remote proxy
npx mcp-remote http://localhost:8000/ --test

Configuration Examples

Both Servers Together

You can run both local and remote servers simultaneously:

{
  "mcpServers": {
    "erddap-local": {
      "command": "python",
      "args": ["/Users/rdc/src/mcp/erddap2mcp/erddapy_mcp_server.py"]
    },
    "erddap-remote": {
      "command": "npx", 
      "args": ["mcp-remote", "https://erddap2mcp.fly.dev/"]
    }
  }
}

This gives you the full local toolset plus cloud accessibility!

Common Tool Parameters

Both servers accept these parameters:

  • server_url: ERDDAP server URL (defaults to NOAA CoastWatch)
  • protocol: Either "tabledap" (tabular data) or "griddap" (gridded data)
  • dataset_id: The dataset identifier
  • variables: List of variables to retrieve
  • constraints: Dictionary of constraints (e.g., time/space bounds)

Tips for Best Results

  1. Start with local: Local server has easier setup and no proxy requirement
  2. Use remote for sharing: Remote server can be accessed by multiple users
  3. Check metadata first: Use get_dataset_info before downloading data
  4. Use constraints: Limit data requests to avoid timeouts
  5. Choose correct protocol: tabledap for tabular, griddap for gridded data

Troubleshooting

Local Server Issues

  • "No such file": Check Python path in configuration
  • "Connection failed": Verify server is running
  • Tool errors: Check stderr for debug output

Remote Server Issues

  • "No tools available": Ensure mcp-remote proxy is installed (npm install -g mcp-remote)
  • "Connection failed": Verify server URL is accessible and uses HTTPS
  • Protocol errors: Check server logs with fly logs -a erddap2mcp

General ERDDAP Issues

  • Timeouts: Reduce spatial/temporal extent of requests
  • Protocol errors: Specify correct protocol (tabledap vs griddap)
  • Server unavailable: Some ERDDAP servers may be temporarily down

The Remote MCP Discovery Journey

This remote implementation represents months of debugging the Remote MCP mystery:

Failed Approaches:

  1. Direct SSE connections - Claude Desktop doesn't support this
  2. Config file remote URLs - Only works for local stdio servers
  3. Connector UI attempts - Also doesn't support direct connections

The Breakthrough:

The mcp-remote proxy requirement was buried in third-party documentation. This critical piece enables Claude Desktop to talk to remote MCP servers via HTTP.

Credits

  • ERDDAP was developed by Bob Simons at NOAA's Environmental Research Division. Learn more at the ERDDAP website.
  • erddapy is the official Python client for ERDDAP, developed by Filipe Fernandes and the IOOS community. Visit the erddapy documentation.
  • mcp-remote proxy enables remote MCP connections to Claude Desktop

Common Use Cases

  • Climate Research: Access historical temperature, salinity, and current data
  • Marine Biology: Find chlorophyll concentrations and ocean color data
  • Coastal Management: Monitor sea level, wave heights, and coastal conditions
  • Fisheries: Access environmental data for fisheries management
  • Education: Explore real oceanographic data for teaching and learning

Server List Management

ERDDAP servers are now loaded dynamically from erddaps.json:

  • 63 ERDDAP servers pre-configured (worldwide coverage)
  • Easy to add/remove servers by editing JSON file
  • Automatic fallback if file is missing
  • Servers grouped by public/private access
  • Each server entry includes name, short_name, url, and public flag

To add new servers, simply edit erddaps.json:

{
  "name": "Your ERDDAP Server",
  "short_name": "YES",
  "url": "https://your-erddap.org/erddap/",
  "public": true
}

Contributing

Contributions welcome! This project demonstrates how to build both local and remote MCP servers. Key areas for improvement:

  • Additional ERDDAP tools and data processing capabilities
  • Enhanced error handling and performance optimization
  • Multi-server load balancing and caching strategies
  • Adding more ERDDAP servers to erddaps.json

License

This project is open source and available under the MIT License.

Metadata

Release files for iflow-mcp_robertdcurrier-erddap2mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iflow-mcp_robertdcurrier-erddap2mcp 0.1.0
File Size Uploaded
iflow_mcp_robertdcurrier_erddap2mcp-0.1.0.tar.gz 27.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iflow-mcp_robertdcurrier-erddap2mcp 0.1.0
File Interpreter ABI Platform
iflow_mcp_robertdcurrier_erddap2mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 74.0 kB

Release files / iflow_mcp_robertdcurrier_erddap2mcp-0.1.0.tar.gz

Download URL iflow_mcp_robertdcurrier_erddap2mcp-0.1.0.tar.gz
Size 27.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f2b03833b45dd9f5a1d8a24f57a103b66b7cc17e5485bafc468ee6a094614110
BLAKE2b-256 checksum
How to use checksums
7bfceb4618d93335b28c48aa4a1f9c13f9f03c32ae2f8e627dd7aa7786886fcd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / iflow_mcp_robertdcurrier_erddap2mcp-0.1.0-py3-none-any.whl

Download URL iflow_mcp_robertdcurrier_erddap2mcp-0.1.0-py3-none-any.whl
Size 46.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c6eca95a2a65c4c824525902d8385fd45028cc5c9840e79f09e053a70cccdf9f
BLAKE2b-256 checksum
How to use checksums
aaa6de3f46f2e9da77289c10fab330aba036ea2549d75f1bde1503ad9cb14ce3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page