Skip to main content

NetCDF Explorer MCP Server

A simple and powerful MCP (Message Communication Protocol) server for exploring, analyzing, and interacting with NetCDF format files. Designed to simplify NetCDF data management with intuitive APIs and efficient data handling.

Overview

NetCDF (Network Common Data Form) is a widely used format for storing scientific data. This MCP server provides a streamlined interface to work with NetCDF files, offering essential functionalities to list files, inspect structures, extract data, and analyze variables—all while handling large datasets efficiently through smart sampling.

Features

  • 📁 File Discovery: List all NetCDF files (.nc, .cdf, .netcdf, .nc4) in a specified directory.
  • 🔍 Structure Inspection: Retrieve detailed metadata of NetCDF files, including dimensions, variables, attributes, and global properties.
  • 📊 Data Extraction: Read variable data with support for flexible slicing (e.g., lat: "0:10:2" to extract subsets).
  • 🧠 Smart Sampling: Automatically sample large datasets to prevent memory overflow, with configurable element limits.
  • ⏰ Time Series Analysis: Extract temporal data from spatial variables, with optional custom location coordinates.
  • 🔎 Search Functionality: Find variables and attributes by keyword, simplifying navigation in complex files.
  • 📋 Variable Summaries: Generate human-readable summaries of variables, including dimensions, data types, and attributes.

Installation

Prerequisites

  • Python ≥ 3.13

Install via pip

pip install nc-mcp

Install from Source

  1. Clone the repository:

    git clone https://github.com/HanchaoLi/nc-mcp.git
    cd nc-mcp
    
  2. Install dependencies (using uv for faster dependency management):

    # Install uv (if not already installed)
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # Sync dependencies
    uv sync --all-groups
    

Quick Start

Start the Server

python -m nc_mcp_server.main

API Reference

Core Functions

Function Description Parameters
list_netcdf_files Lists all NetCDF files in a directory. directory (str): Path to search (default: .).
get_netcdf_info Returns metadata and structure of a NetCDF file (dimensions, variables, attributes). file_path (str): Path to the NetCDF file.
get_variable_data Extracts data from a specific variable (supports slicing and sampling). file_path (str), variable_name (str), slices (dict, optional), max_elements (int, default: 1000).
search_variables Searches variables and attributes for a keyword (case-insensitive). file_path (str), search_term (str).
extract_timeseries Extracts time series data from a spatial variable. file_path (str), variable_name (str), location (dict, optional: spatial coordinates like {"lat": 10, "lon": 20}).

Testing

Run the test suite to verify functionality:

uv run pytest tests/ -v

Tests cover:

  • File discovery logic
  • NetCDF structure parsing
  • Data extraction with slicing
  • Sampling for large datasets
  • Error handling for invalid inputs

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Author

John Li

Metadata

Release files for nc-mcp 0.1.2

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

Source distribution (sdist)

Source distribution for nc-mcp 0.1.2
File Size Uploaded
nc_mcp-0.1.2.tar.gz 9.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nc-mcp 0.1.2
File Interpreter ABI Platform
nc_mcp-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 16.6 kB

Release files / nc_mcp-0.1.2.tar.gz

Download URL nc_mcp-0.1.2.tar.gz
Size 9.3 kB
Tags Source
SHA-256 checksum
How to use checksums
4c3f4d8049619a26070af1807c8715eec89e1395cbf89b12c4fa47bd6cd7de66
BLAKE2b-256 checksum
How to use checksums
0416989507fd3f77570412da1a678b6305fdcb407292e87800e59d8a3c8c44e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2025.

Transparency log

Release files / nc_mcp-0.1.2-py3-none-any.whl

Download URL nc_mcp-0.1.2-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eca8b4455a0f333f7422661271a34758b954187cf94895ed42c53a36fa082367
BLAKE2b-256 checksum
How to use checksums
ae41bb182533fbdf8193f36bdced6b0272581c4d854f34550bbcd675911ca15b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

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