使用说明

项目简介

Dataset Viewer MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为 LLM 客户端提供访问和操作 Hugging Face Hub 数据集的能力。通过该服务器,LLM 可以方便地获取数据集的元信息、浏览数据内容、执行数据分析和搜索等操作,从而更好地利用 Hugging Face Hub 上丰富的 NLP 数据资源。

主要功能点

  • 数据集资源访问: 使用 'dataset://' URI 方案访问 Hugging Face 数据集,支持数据集配置和切分 (split)。
  • 数据集信息查询: 获取数据集的详细信息,包括描述、特征、配置、切分等。
  • 数据内容浏览: 分页浏览数据集内容,支持指定配置和切分。
  • 数据集统计分析: 获取数据集切分的统计信息。
  • 数据集搜索: 在数据集内容中执行文本搜索。
  • 数据过滤: 使用 SQL-like 的 WHERE 条件过滤数据集行。
  • Parquet 导出: 将整个数据集导出为 Parquet 格式文件。
  • 访问控制: 支持通过 Hugging Face API token 访问私有数据集。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/privetin/dataset-viewer.git
    cd dataset-viewer
  2. 创建并激活虚拟环境:
    # 创建虚拟环境
    uv venv
    
    # 激活虚拟环境
    # On Unix:
    source .venv/bin/activate
    # On Windows:
    .venv\Scripts\activate
  3. 安装项目依赖:
    uv add -e .

服务器配置

MCP 客户端需要配置服务器的启动命令和参数才能连接 Dataset Viewer MCP Server。以下是 Claude Desktop 客户端的配置示例,其他 MCP 客户端的配置方式类似。

在 Claude Desktop 的配置文件 ('claude_desktop_config.json') 中添加 'mcpServers' 配置:

{
  "mcpServers": {
    "dataset-viewer": {
      "command": "uv",
      "args": [
        "run",
        "dataset-viewer"
      ]
    }
  }
}
  • 'server name': 'dataset-viewer' (服务器名称,客户端用于识别和调用)
  • 'command': 'uv' (启动服务器的命令,这里使用 'uv run' 来运行 Python 脚本)
  • 'args':
    • '"run"': 'uv run' 的子命令,用于运行指定的 Python 模块或脚本。
    • '"dataset-viewer"': 要运行的 Python 模块名,对应项目中的 'src/dataset_viewer/init.py' 文件,该文件定义了服务器的入口 'main()' 函数。

环境变量配置

Dataset Viewer MCP Server 允许通过环境变量 'HUGGINGFACE_TOKEN' 配置 Hugging Face API Token,用于访问私有数据集。您可以在启动服务器前设置该环境变量,或者在调用工具时通过参数 'auth_token' 显式指定。

基本使用方法

Dataset Viewer MCP Server 通过 JSON-RPC 协议与客户端通信。客户端发送 JSON-RPC 请求调用服务器提供的工具 (Tools) 和资源 (Resources)。

资源 (Resources)

  • 使用 'dataset://{dataset_id}' 格式的 URI 访问数据集资源,例如 'dataset://stanfordnlp/imdb'。
  • 可以通过 MCP 客户端的资源列表功能查看可用的数据集资源。
  • 可以通过 MCP 客户端的读取资源功能获取数据集的元信息。

工具 (Tools)

Dataset Viewer MCP Server 提供了以下工具,客户端可以调用这些工具来操作数据集:

  1. validate: 验证数据集是否存在和可访问。
    {
      "tool_name": "validate",
      "arguments": {
        "dataset": "stanfordnlp/imdb"
      }
    }
  2. get_info: 获取数据集详细信息。
    {
      "tool_name": "get_info",
      "arguments": {
        "dataset": "stanfordnlp/imdb"
      }
    }
  3. get_rows: 获取数据集数据行 (分页)。
    {
      "tool_name": "get_rows",
      "arguments": {
        "dataset": "stanfordnlp/imdb",
        "config": "plain_text",
        "split": "train",
        "page": 0
      }
    }
  4. get_first_rows: 获取数据集前几行数据。
    {
      "tool_name": "get_first_rows",
      "arguments": {
        "dataset": "stanfordnlp/imdb",
        "config": "plain_text",
        "split": "train"
      }
    }
  5. get_statistics: 获取数据集统计信息。
    {
      "tool_name": "get_statistics",
      "arguments": {
        "dataset": "stanfordnlp/imdb",
        "config": "plain_text",
        "split": "train"
      }
    }
  6. search_dataset: 搜索数据集内容。
    {
      "tool_name": "search_dataset",
      "arguments": {
        "dataset": "stanfordnlp/imdb",
        "config": "plain_text",
        "split": "train",
        "query": "great movie"
      }
    }
  7. filter: 过滤数据集数据行。
    {
      "tool_name": "filter",
      "arguments": {
        "dataset": "stanfordnlp/imdb",
        "config": "plain_text",
        "split": "train",
        "where": "label = 'positive'",
        "orderby": "text DESC",
        "page": 0
      }
    }
  8. get_parquet: 导出数据集为 Parquet 文件。
    {
      "tool_name": "get_parquet",
      "arguments": {
        "dataset": "stanfordnlp/imdb"
      }
    }

客户端需要根据 MCP 协议规范构造 JSON-RPC 请求,并发送到 Dataset Viewer MCP Server。服务器会处理请求并返回 JSON-RPC 响应。

信息

分类

网页与API