Excel Reader — MCP сервер для чтения Excel файлов
Сервер реализует протокол MCP (Model Context Protocol) и предназначен для чтения файлов Excel с автоматической разбивкой данных на управляемые части (chunking) и поддержкой пагинации. Основан на библиотеке SheetJS и TypeScript. Позволяет эффективно обрабатывать большие файлы, избегая перегрузки памяти.
Возможности
- Чтение
.xlsx и .xls файлов с автоматическим ограничением размера обрабатываемых данных.
- Автоматическая разбивка больших таблиц на чанки (по умолчанию 100 КБ).
- Выбор листа по имени; если не указан — читается первый лист.
- Пагинация по строкам: можно задать начальную строку и количество строк для чтения.
- Корректная обработка дат.
- Обработка ошибок и валидация (проверка существования файла, формата, обработка повреждённых файлов).
- Поддержка метаданных для пагинации (информация о следующем чанке).
Установка
Через Smithery (рекомендовано для Claude Desktop)
npx -y @smithery/cli install @ArchimedesCrypto/excel-reader-mcp-chunked --client claude
Как MCP-сервер (глобально)
npm install -g @archimdescrypto/excel-reader
После установки добавьте конфигурацию сервера в MCP settings (обычно ~/.config/claude/settings.json или аналогичный файл):
{
"mcpServers": {
"excel-reader": {
"command": "excel-reader",
"env": {}
}
}
}
Затем перезапустите клиент (Claude и т.п.).
Для разработки
Клонируйте репозиторий и установите зависимости вручную:
git clone https://github.com/ArchimdesCrypto/mcp-excel-reader.git
cd mcp-excel-reader
npm install
npm run build
Использование
Сервер предоставляет единый инструмент read_excel со следующими параметрами:
filePath (строка, обязательный) — путь к файлу Excel.
sheetName (строка, необязательный) — имя листа. По умолчанию первый лист.
startRow (число, необязательный) — номер начальной строки для чтения (пагинация).
maxRows (число, необязательный) — максимальное количество строк для возврата.
Формат ответа:
{
"fileName": "string",
"totalSheets": 3,
"currentSheet": {
"name": "Sheet1",
"totalRows": 10000,
"totalColumns": 5,
"chunk": {
"rowStart": 1,
"rowEnd": 1000,
"columns": ["ID", "Name", "Date", "Amount", "Status"],
"data": [ ... ]
},
"hasMore": true,
"nextChunk": {
"rowStart": 1001,
"columns": ["ID", "Name", "Date", "Amount", "Status"]
}
}
}
Пример в чате с ИИ
При использовании с Claude или другим MCP-совместимым агентом просто попросите:
Прочитай файл Excel по пути path/to/file.xlsx
ИИ самостоятельно вызовет read_excel и, если файл большой, получит данные частями.
Расширение функциональности с помощью SheetJS
Сервер построен на SheetJS, и вы можете при необходимости добавить поддержку следующих возможностей:
- Формулы: включите
cellFormula: true при чтении.
- Стили ячеек: доступ к
worksheet[key].s.
- Проверка данных:
worksheet['!dataValidation'].
- Объединённые ячейки:
worksheet['!merges'].
- Скрытые строки/столбцы:
worksheet['!rows'], worksheet['!cols'].
- Защита листа:
worksheet['!protect'].
Подробнее — в документации SheetJS.
Вклад в проект
- Форкните репозиторий.
- Создайте ветку для новой функции:
git checkout -b feature/amazing-feature.
- Сделайте коммит:
git commit -m 'Add some amazing feature'.
- Запушьте ветку:
git push origin feature/amazing-feature.
- Откройте Pull Request.
Лицензия
Проект распространяется под лицензией MIT. Подробнее — в файле LICENSE.
Благодарности
Комментарии
Комментариев пока нет. Будьте первым.