NetCDF文件管理服务器

一个简单而强大的MCP服务器,用于探索、分析和交互NetCDF格式文件,通过直观的API和高效的数据处理简化NetCDF数据管理。

  • by HanchaoLi
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 HanchaoLi/nc-mcp

使用说明

NetCDF Explorer MCP服务器

一个简单而强大的MCP(消息通信协议)服务器,用于探索、分析NetCDF格式文件并与之交互。旨在通过直观的API和高效的数据处理简化NetCDF数据管理。

概述

NetCDF(网络通用数据表)是一种广泛用于存储科学数据的格式。此MCP服务器提供了一个简化的界面来处理NetCDF文件,提供列出文件、检查结构、提取数据和分析变量的基本功能,同时通过智能采样高效地处理大型数据集。

特性

  • 📁 文件发现:列出所有NetCDF文件(.nc, .cdf, .netcdf, .nc4)在指定的目录中。
  • 🔍 结构检查:检索NetCDF文件的详细元数据,包括维度、变量、属性和全局属性。
  • 📊 数据提取:读取支持灵活切片的可变数据(例如。, lat: "0:10:2" 提取子集)。
  • 🧠 智能采样:自动对大型数据集进行采样,以防止内存溢出,并具有可配置的元素限制。
  • ⏰ 时间序列分析:使用可选的自定义位置坐标从空间变量中提取时间数据。
  • 🔎 搜索功能:按关键字查找变量和属性,简化复杂文件中的导航。
  • 📋 变量摘要:生成人类可读的变量摘要,包括维度、数据类型和属性。

安装

先决条件

  • Python≥3.13

通过pip安装

pip install nc-mcp

从源代码安装

  1. 克隆存储库:

    git clone https://github.com/HanchaoLi/nc-mcp.git
    cd nc-mcp
    
  2. 安装依赖项(使用 uv 为了更快地进行依赖关系管理):

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

快速开始

启动服务器

python -m nc_mcp_server.main

api参考

核心功能

功能 说明 参数
list_netcdf_files 列出目录中的所有NetCDF文件。 directory (str):搜索路径(默认值: .).
get_netcdf_info 返回NetCDF文件的元数据和结构(维度、变量、属性)。 file_path (str):NetCDF文件的路径。
get_variable_data 从特定变量中提取数据(支持切片和采样)。 file_path (str), variable_name (str), slices (dict,可选), max_elements (int,默认值:1000)。
search_variables 在变量和属性中搜索关键字(不区分大小写)。 file_path (str), search_term (str)。
extract_timeseries 从空间变量中提取时间序列数据。 file_path (str), variable_name (str), location (dict,可选:空间坐标,如 {"lat": 10, "lon": 20}).

测试

运行测试套件以验证功能:

uv run pytest tests/ -v

测试包括:

  • 文件发现逻辑
  • NetCDF结构解析
  • 切片数据提取
  • 大型数据集的采样
  • 无效输入的错误处理

许可证

该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。

贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

链接

作者

李