Skip to main content
Glama
yuqie6

MCP Sheet Parser

README.md
# MCP Sheet Parser

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/)

MCP Sheet Parser 是一个基于模型上下文协议(Model Context Protocol, MCP)构建的服务器。它为 AI 代理提供解析、转换和修改电子表格文件的能力。

该服务器通过标准输入输出(stdio)与兼容 MCP 的客户端(如 Claude Desktop)通信,允许 AI 代理以工具调用的方式处理包括 XLSX、XLSM、XLS、XLSB 和 CSV 在内的多种表格格式。

## 工作原理

当 AI 代理需要处理一个表格文件时,它会通过 MCP 向本服务器发送一个 JSON-RPC 请求。服务器接收请求,调用内部相应的处理函数,并将结构化的 JSON 数据返回给代理。这个过程使得 AI 代理能够理解和操作传统上难以访问的表格数据。

其基本架构如下:
1.  **MCP 客户端**: AI 代理的运行环境,例如 Claude Desktop 或其他 IDE。
2.  **通信协议**: 客户端与服务器之间通过标准输入输出(stdio)进行 JSON-RPC 通信。
3.  **MCP 服务器**: 本项目,一个独立的 Python 进程,负责监听和响应来自客户端的请求。
4.  **核心服务**: 服务器内部的业务逻辑,调用特定的解析器或转换器来完成任务。

## 核心功能

服务器提供三个核心工具来完成一个完整的数据处理闭环:

1.  **`parse_sheet`**: 解析电子表格文件。此工具将文件内容转换为结构化的 JSON 对象,该对象为 AI 代理的上下文进行了优化。默认情况下,它只返回文件的概览信息(如尺寸、列名和数据预览),以避免消耗过多的令牌。代理可以根据需要请求获取完整数据或样式信息。

2.  **`convert_to_html`**: 将电子表格转换为 HTML 文件。此功能可以保留原始文件中的大部分样式,包括字体、颜色、边框和合并单元格,使得数据可以在浏览器中进行可视化查阅。

3.  **`apply_changes`**: 将 AI 代理修改后的 JSON 数据写回到原始电子表格文件中。此工具接收从 `parse_sheet` 获取并由代理处理过的数据,完成数据的修改和保存。

## 安装与配置

### 前置要求
- Python 3.8 或更高版本
- [uv](https://docs.astral.sh/uv/) (推荐的包管理器)

### 安装步骤
```bash
git clone https://github.com/yuqie6/MCP-Sheet-Parser.git
cd MCP-Sheet-Parser
uv sync
```

### 客户端配置
要将此服务器与兼容 MCP 的客户端一同使用,需要在客户端的配置文件中进行设置。

以 Claude Desktop 为例,配置文件路径如下:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%/Claude/claude_desktop_config.json`

在配置文件中添加以下 `mcpServers` 条目:
```json
{
  "mcpServers": {
    "sheet-parser": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/MCP-Sheet-Parser-cot",
        "run",
        "main.py"
      ]
    }
  }
}
```
**注意**: 请将 `/path/to/MCP-Sheet-Parser-cot` 替换为本项目的绝对路径。

## 使用指南

配置完成后,重启客户端即可开始使用。您可以向 AI 代理发出自然语言指令来处理表格文件。

- **解析文件**: "请解析 `/path/to/sales.xlsx` 文件并提供一份摘要。"
- **转换文件**: "将 `/path/to/data.csv` 转换为 HTML 文件。"
- **修改数据**: "读取库存表 `/path/to/inventory.xlsx`,然后将所有'笔记本电脑'的数量增加10,最后保存修改。"

## 工具定义

### `parse_sheet`
解析一个表格文件,返回其结构化的 JSON 表示。

- **`file_path`** (字符串, 必需): 表格文件的绝对路径。
- **`sheet_name`** (字符串, 可选): 需要解析的特定工作表名称。如果留空,则解析第一个工作表。
- **`range_string`** (字符串, 可选): 指定单元格范围,例如 "A1:D10"。
- **`include_full_data`** (布尔值, 可选, 默认 `false`): 是否返回所有行的数据。
- **`include_styles`** (布尔值, 可选, 默认 `false`): 是否在返回的数据中包含样式信息。
- **`preview_rows`** (整数, 可选, 默认 `5`): 在概览模式下,返回的数据预览行数。
- **`max_rows`** (整数, 可选): 限制返回的最大行数,用于处理大型文件。

### `convert_to_html`
将一个表格文件转换为 HTML。

- **`file_path`** (字符串, 必需): 源表格文件的绝对路径。
- **`output_path`** (字符串, 可选): 输出 HTML 文件的路径。如果留空,则在源文件相同目录下生成同名 HTML 文件。
- **`sheet_name`** (字符串, 可选): 指定要转换的单个工作表名称。如果留空,则转换所有工作表。
- **`page_size`** (整数, 可选, 默认 `100`): 分页时每页显示的行数。
- **`page_number`** (整数, 可选, 默认 `1`): 查看分页结果时的页码。
- **`header_rows`** (整数, 可选, 默认 `1`): 将文件顶部的指定行数视为固定表头。

### `apply_changes`
将修改后的数据写回表格文件。

- **`file_path`** (字符串, 必需): 目标文件的绝对路径。
- **`table_model_json`** (对象, 必需): 从 `parse_sheet` 工具获取并由 AI 代理修改后的数据对象。
- **`create_backup`** (布尔值, 可选, 默认 `true`): 是否在写入前创建原始文件的备份。

## 许可证

本项目采用 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: parse_sheet reads data, convert_to_html transforms it for viewing, and apply_changes writes modifications back. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency4/5

The tools follow a consistent verb_noun pattern (parse_sheet, convert_to_html, apply_changes), which is predictable and readable. The minor deviation is that 'apply_changes' uses a plural noun while others use singular, but this does not hinder usability.

Tool Count5/5

With 3 tools, the server is well-scoped for parsing and manipulating spreadsheet files. Each tool serves a distinct and necessary function in the data workflow, avoiding bloat or thin coverage.

Completeness4/5

The tools cover core operations: reading (parse_sheet), transforming (convert_to_html), and writing (apply_changes). A minor gap is the lack of a tool for creating new files from scratch, but agents can work around this by modifying parsed data.

Maintenance

ActivityInactive
ResponsivenessNo issues