by PSU3D0 (community) Claude Desktop, Claude Code, OpenCode, Windows, macOS, Linux
MCP-сервер для анализа и редактирования электронных таблиц. Компактный, token-эффективный набор инструментов для LLM-агентов.
Token-эффективный MCP-сервер для работы с табличными данными. Индексация CSV/Excel, запросы к строкам, агрегация — экономия 99%+ …
MCP-сервер для доступа к актуальной документации библиотек прямо в контексте LLM. Вместо устаревших обучающих данных — …
Официальный MCP от команды Chrome DevTools: дает AI-агентам полный доступ к инструментам разработчика браузера. Автоматизация через …
Официальный MCP-сервер от Microsoft для управления браузером через Playwright. Использует accessibility tree вместо скриншотов — быстрее, …
npm i -g agent-spreadsheet asp --help # CLI cargo install spreadsheet-kit --features recalc --bin asp --bin agent-spreadsheet # MCP server cargo install spreadsheet-mcp # Read-only / slim docker pull ghcr.io/psu3d0/spreadsheet-mcp:latest # Write + recalc + screenshots docker pull ghcr.io/psu3d0/spreadsheet-mcp:latest-full npm i spreadsheet-kit-sdk

spreadsheet-kit — это сервис взаимодействия с инструментами для работы агентов с электронными таблицами.
Он даёт агентам безопасный, проверяемый и экономный по токенам способ читать, анализировать, изменять, верифицировать и применять книги Excel в реальной работе без обращения к хрупкой автоматизации пользовательского интерфейса.
Если вы хотите, чтобы агент работал с таблицами как настоящая система, а не как марионетка, управляемая скриншотами, — это именно тот стек.
spreadsheet-kit поставляет единый слой взаимодействия с таблицами на четырёх поверхностях:
| Поверхность | Бинарник / Пакет | Режим | Лучше всего подходит для |
|---|---|---|---|
| CLI | asp / agent-spreadsheet |
Без состояния | Одноразовые чтения, безопасные правки, пайплайны, CI, вызовы инструментов агентом |
| MCP-сервер | spreadsheet-mcp |
С состоянием | Многоходовые сессии агента, кэширование книг, рабочие процессы fork/recalc |
| JS SDK | spreadsheet-kit-sdk |
Не зависит от бэкенда | Интеграции в приложения, которые сегодня могут работать через MCP, а со временем — через WASM/сессионные бэкенды |
| WASM-рантайм | spreadsheet-kit-wasm |
Внутрипроцессный | Экспериментальное встраивание байтов/сессий для локальных рантаймов |
Поддерживаемые режимы работы с книгами:
.xlsx / .xlsm — чтение + запись.xls / .xlsb — только рабочие процессы обнаружения/чтенияТекущая поверхность гораздо мощнее простого инструмента «прочитать несколько ячеек». Основные возможности теперь включают:
asp как основной CLI, где agent-spreadsheet сохранён как псевдоним совместимостиasp verify proof и asp verify diffwrite appendwrite clone-template-rowwrite clone-row-bandwrite name define|update|delete)write formulas replace)npm i -g agent-spreadsheet
asp --help
Устанавливает оба:
- asp — основную команду
- agent-spreadsheet — псевдоним совместимости
Загружает предсобранный нативный бинарник для вашей платформы. Инструментарий Rust не требуется.
# CLI
cargo install spreadsheet-kit --features recalc --bin asp --bin agent-spreadsheet
# MCP server
cargo install spreadsheet-mcp
Formualizer (нативный движок пересчёта на Rust) включён по умолчанию.
# Read-only / slim
docker pull ghcr.io/psu3d0/spreadsheet-mcp:latest
# Write + recalc + screenshots
docker pull ghcr.io/psu3d0/spreadsheet-mcp:latest-full
npm i spreadsheet-kit-sdk
Загрузите из GitHub Releases.
Опубликованные нативные артефакты включают: - Linux x86_64 - macOS x86_64 - macOS arm64 - Windows x86_64
# What sheets are here?
asp read sheets data.xlsx
# What regions/tables/parameter blocks does this sheet contain?
asp read overview data.xlsx "Model"
# What named items are available?
asp read names data.xlsx
# Read a structured region as a table
asp read table data.xlsx --sheet "Model"
# Raw values for exact ranges
asp read values data.xlsx Model A1:C20
# Detail-view for targeted cells (value / formula / cached / style triage)
asp read cells data.xlsx Model B2 D10:F12
# Layout-aware rendering for a bounded range
asp read layout data.xlsx Model --range A1:H30 --render both
# Export a bounded range to csv or grid json
asp read export data.xlsx Model A1:H30 --format csv --output model.csv
asp workbook copy data.xlsx /tmp/draft.xlsx
asp write cells /tmp/draft.xlsx Inputs "B2=500" "C2==B2*1.1"
asp workbook recalculate /tmp/draft.xlsx
asp verify proof data.xlsx /tmp/draft.xlsx --targets Summary!B2,Summary!B3 --named-ranges
asp verify diff data.xlsx /tmp/draft.xlsx --details --limit 50
Пример поиска в режиме меток:
asp analyze find-value data.xlsx "Net Income" --mode label --label-direction below
asp analyze ref-impact data.xlsx --ops @structure_ops.json --show-formula-delta
Этот режим намеренно доступен только для чтения. Он выявляет смещённые диапазоны, предупреждения об абсолютных ссылках, количество токенов и опциональные примеры формул «до/после».
# Stateless batch writes
asp write batch transform data.xlsx --ops @ops.json --dry-run
asp write batch style data.xlsx --ops @style_ops.json --dry-run
# Append rows into a detected region or table, respecting footer rows when present
asp write append data.xlsx --sheet Revenue --table-name RevenueTable --from-csv rows.csv --header --dry-run
# Clone one template row with preview-first planning
asp write clone-template-row data.xlsx --sheet Inputs --source-row 8 --after 8 --count 3 --dry-run
# Clone a contiguous row band repeatedly
asp write clone-row-band data.xlsx --sheet Forecast --source-rows 12:16 --after 16 --repeat 4 --dry-run
asp session start --base data.xlsx --workspace .
asp session op --session <id> --ops @edit.json --workspace .
asp session apply --session <id> <staged_id> --workspace .
asp session materialize --session <id> --output result.xlsx --workspace .
А когда вам нужны полноценная история и ветвление:
asp session log --session <id> --workspace .
asp session fork --session <id> scenario-a --workspace .
asp session undo --session <id> --workspace .
asp session redo --session <id> --workspace .
asp session checkout --session <id> <op_id> --workspace .
# Discover candidate ports from workbook structure
asp sheetport manifest candidates model.xlsx
# Validate or normalize a manifest
asp sheetport manifest validate manifest.yaml
asp sheetport manifest normalize manifest.yaml
# Bind-check a workbook against a manifest
asp sheetport bind-check model.xlsx manifest.yaml
# Execute the manifest with JSON inputs
asp sheetport run model.xlsx manifest.yaml --inputs @inputs.json
Основной CLI — это asp.
agent-spreadsheet остаётся доступен как псевдоним для совместимости, поэтому оба варианта корректны:
asp read sheets data.xlsx
agent-spreadsheet read sheets data.xlsx
asp read ...asp analyze ...asp write ...asp workbook ...asp verify ...asp session ...asp sheetport ...Устаревшие плоские команды по-прежнему нормализуются к новому вложенному интерфейсу там, где это возможно. Это упрощает миграцию для старых промптов, документации и автоматизации.
Когда агент не уверен в структуре полезной нагрузки, он может спросить об этом сам инструмент:
asp schema write batch transform
asp example write batch transform
asp schema session op transform.write_matrix
asp example session op transform.write_matrix
Это ключевой принцип проектирования: интерфейс должен объяснять себя агенту самостоятельно.
read — извлечение и инспекция| Команда | Назначение |
|---|---|
asp read sheets <file> |
Список листов со сводными метаданными |
asp read overview <file> <sheet> |
Определение регионов, заголовков и ориентации |
asp read values <file> <sheet> <range> [range...] |
Получение сырых значений для точных диапазонов A1 |
asp read export <file> <sheet> <range> |
Экспорт ограниченного диапазона в csv или grid json |
asp read cells <file> <sheet> <target> [target...] |
Инспекция конкретных ячеек/диапазонов со снимками значения/формулы/кэша/стиля |
asp read page <file> <sheet> ... |
Детерминированная пагинация листа с next_start_row |
asp read table <file> ... |
Структурированное чтение таблицы/региона с детерминированным next_offset |
asp read names <file> |
Именованные диапазоны, именованные формулы и элементы таблиц |
asp read workbook <file> |
Метаданные на уровне книги |
asp read layout <file> <sheet> |
Рендеринг с учётом макета: ширины, объединения, границы и опциональный ascii-вывод |
Агентам редко нужна «вся таблица целиком». Им нужно: - правильный регион - правильная страница - правильные ячейки - ровно столько сведений о макете, чтобы понять замысел
Именно поэтому поверхность чтения сочетает определение регионов, структурированное чтение, детальную инспекцию и явное продолжение.
analyze — поиск, диагностика и понимание влияния изменений| Команда | Назначение |
|---|---|
asp analyze find-value <file> <query> |
Поиск по значению или по семантике меток |
asp analyze find-formula <file> <query> |
Текстовый поиск внутри формул |
asp analyze formula-map <file> <sheet> |
Сводка формул по сложности/частоте |
asp analyze formula-trace <file> <sheet> <cell> <precedents\|dependents> |
Отслеживание зависимостей с продолжением |
asp analyze scan-volatiles <file> |
Поиск волатильных формул |
asp analyze sheet-statistics <file> <sheet> |
Статистика плотности и типов данных |
asp analyze table-profile <file> |
Профилирование заголовков/типов/кардинальности |
asp analyze ref-impact <file> --ops @structure_ops.json |
Предварительная оценка влияния структурных правок без внесения изменений |
Автоматизация работы с электронными таблицами без графического интерфейса побеждает тогда, когда она способна объяснять последствия, а не просто выполнять изменения. ref-impact, formula-trace и сгруппированная диагностика — всё это часть этой задачи.
write — безопасные изменения и помощники рабочего процесса| Команда | Назначение |
|---|---|
asp write cells <file> <sheet> ... |
Прямое редактирование ячеек в сокращённом синтаксисе |
asp write import <file> <sheet> ... |
Импорт grid json или csv в диапазон книги |
asp write append ... |
Добавление строк с учётом футера в регион или таблицу |
asp write clone-template-row ... |
Клонирование строки-шаблона с планированием «сначала предпросмотр» |
asp write clone-row-band ... |
Многократное клонирование многострочного шаблонного блока |
asp write formulas replace ... |
Поиск/замена только формул на листе/в диапазоне |
asp write name define|update|delete ... |
Помощники для изменения именованных диапазонов |
asp write batch transform ... |
Конвейер преобразований без состояния |
asp write batch style ... |
Правки стилей без состояния |
asp write batch formula-pattern ... |
Применение формул в стиле автозаполнения |
asp write batch structure ... |
Мутации типа строки/столбцы/листы/копирование/перемещение |
asp write batch column-size ... |
Операции с шириной столбцов |
asp write batch sheet-layout ... |
Закрепление областей, масштаб, настройка страницы, область печати |
asp write batch rules ... |
Проверка данных + условное форматирование |
Большинство изменяющих команд поддерживают матрицу строгих режимов:
- --dry-run
- --in-place
- --output <PATH>
Это важно для агентов, поскольку позволяет: - планирование в режиме dry-run - неразрушающее выполнение - явный контроль перезаписи
Изменение формул теперь является полноценным интерфейсом первого класса:
asp write formulas replace data.xlsx Sheet1 --find '$64' --replace '$65' --dry-run
asp write formulas replace data.xlsx Sheet1 --find 'Sheet1!' --replace 'Sheet2!' --range A1:Z100 --output fixed.xlsx
asp write name define data.xlsx RevenueInput 'Inputs!$B$2'
asp write name update data.xlsx RevenueInput 'Inputs!$B$2:$B$4' --in-place
asp write name delete data.xlsx RevenueInput --in-place
workbook — потоки на уровне файлов| Команда | Назначение |
|---|---|
asp workbook create <path> |
Создать новую книгу |
asp workbook copy <source> <dest> |
Безопасное копирование для рабочих процессов редактирования |
asp workbook recalculate <file> |
Пересчёт формул через настроенный бэкенд |
verify — доказательства, а не ощущения| Команда | Назначение |
|---|---|
asp verify proof <baseline> <current> |
Доказать целевые изменения и изолировать новые/устранённые/имевшиеся ранее ошибки |
asp verify diff <original> <modified> |
Сравнение книг со сводкой на первом месте, группировкой и опциональной постраничной детализацией |
Большинство инструментов автоматизации электронных таблиц останавливаются на «правка применена».
spreadsheet-kit идёт дальше: - изменились ли целевые ячейки так, как мы ожидали? - не появились ли в книге новые ошибки? - какие изменения были прямыми правками, а какие — побочными эффектами пересчёта? - что изменилось в целом, сгруппированное так, чтобы агент мог это осмыслить?
Этот слой верификации — значительная часть того, почему этот проект является серьёзной основой для агентов, а не утилитарным скриптом.
session — редактирование с состоянием на основе событийИнтерфейс сессий предназначен для рабочих процессов, которые слишком сложны для одного изменения без сохранения состояния.
asp session start --base model.xlsx --workspace .
asp session op --session <id> --ops @ops.json --workspace .
asp session apply --session <id> <staged_id> --workspace .
asp session materialize --session <id> --output result.xlsx --workspace .
asp session log --session <id> --workspace .
asp session branches --session <id> --workspace .
asp session fork --session <id> experiment-b --workspace .
asp session switch --session <id> experiment-b --workspace .
asp session undo --session <id> --workspace .
asp session redo --session <id> --workspace .
asp session checkout --session <id> <op_id> --workspace .
Используйте сессии, когда вам нужны повторяемость, аудируемость и безопасность многошаговых операций.
sheetport — интерфейсы электронных таблиц как исполняемые контрактыSheetPort — это рабочий слой для превращения входов/выходов книги в явные машинные контракты.
asp sheetport manifest candidates model.xlsx
asp sheetport manifest schema
asp sheetport manifest validate manifest.yaml
asp sheetport manifest normalize manifest.yaml
asp sheetport bind-check model.xlsx manifest.yaml
asp sheetport run model.xlsx manifest.yaml --inputs @inputs.json --freeze-volatile
Используйте это, когда хотите, чтобы книга вела себя не как непрозрачный файл, а скорее как объявленный сервисный интерфейс.
Все команды по умолчанию используют JSON. Многие также поддерживают:
--shape canonical
--shape compact
Политика: - canonical сохраняет полную стабильную схему - compact убирает обёрточный шум там, где контракт это позволяет, сохраняя поля продолжения и семантику, специфичную для команды
Политика формы:
- Canonical (по умолчанию): сохранять полную схему ответа.
- range-values: возвращает стабильную оболочку values: [...] как в каноническом, так и в компактном режиме.
- range-values кодировка по умолчанию: плотный JSON (dense.encoding = "dense_v1") с dictionary + кодированием длин серий row_runs.
- range-values --include-formulas: включает разреженные координаты формул в плотном режиме (dense.formulas) или матрицу в явном формате json.
- read-table и sheet-page: compact сохраняет активную ветку и поля продолжения (next_offset, next_start_row).
- formula-trace compact: опускает послойные highlights, сохраняя layers и next_cursor.
# sheet-page continuation
asp read page data.xlsx Sheet1 --format compact --page-size 200
asp read page data.xlsx Sheet1 --format compact --page-size 200 --start-row 201
# read-table continuation
asp read table data.xlsx --sheet "Sheet1" --table-format values --limit 200 --offset 0
asp read table data.xlsx --sheet "Sheet1" --table-format values --limit 200 --offset 200
sheet-pageformat перед чтением полей полезной нагрузки.format=full: читайте верхнеуровневый rows плюс опциональные header_row и next_start_row.format=compact: читайте compact.headers, compact.header_row, compact.rows плюс опциональный next_start_row.format=values_only: читайте values_only.rows плюс опциональный next_start_row.next_start_row, когда оно присутствует.--shape compact сохраняет активную ветку sheet-page; он не уплощает полезные нагрузки sheet-page.Пример машинного продолжения:
1. Запросите страницу 1 без --start-row.
next_start_row, снова вызовите sheet-page с --start-row ```html
<next_start_row>.next_start_row отсутствует.Когда агент не уверен, что отправить, запросите схему или пример:
asp schema write batch rules
asp example write batch rules
asp schema session op structure.insert_rows
asp example session op structure.insert_rows
Все пакетные полезные нагрузки используют объект-конверт верхнего уровня. Большинство команд требуют {"ops":[...]}; column-size-batch предпочитает {"sheet_name":"...","ops":[...]} и также принимает sheet_name для каждой отдельной операции внутри {"ops":[...]}.
@transform_ops.json){"ops":[{"kind":"fill_range","sheet_name":"Sheet1","target":{"kind":"range","range":"B2:B4"},"value":"0"}]}{"ops":[{"kind":"replace_in_range","sheet_name":"Sheet1","target":{"kind":"region","region_id":1},"find":"N/A","replace":"","match_mode":"contains","case_sensitive":false,"include_formulas":true}]}@style_ops.json){"ops":[{"sheet_name":"Sheet1","target":{"kind":"range","range":"B2:B2"},"patch":{"font":{"bold":true}}}]}{"ops":[{"sheet_name":"Sheet1","target":{"kind":"cells","cells":["B2","B3"]},"patch":{"number_format":"$#,##0.00","alignment":{"horizontal":"right"}},"op_mode":"merge"}]}@formula_ops.json){"ops":[{"sheet_name":"Sheet1","target_range":"C2:C4","anchor_cell":"C2","base_formula":"B2*2"}]}{"ops":[{"sheet_name":"Sheet1","target_range":"C2:E4","anchor_cell":"C2","base_formula":"B2*2","fill_direction":"both","relative_mode":"excel"}]}relative_mode: excel, abs_cols, abs_rows@structure_ops.json){"ops":[{"kind":"rename_sheet","old_name":"Summary","new_name":"Dashboard"}]}{"ops":[{"kind":"copy_range","sheet_name":"Sheet1","dest_sheet_name":"Summary","src_range":"A1:C4","dest_anchor":"A1","include_styles":true,"include_formulas":true}]}@column_size_ops.json){"sheet_name":"Sheet1","ops":[{"range":"A:A","size":{"kind":"width","width_chars":12.0}}]}{"sheet_name":"Sheet1","ops":[{"target":{"kind":"columns","range":"A:C"},"size":{"kind":"auto","min_width_chars":8.0,"max_width_chars":24.0}}]}{"ops":[{"sheet_name":"Sheet1","range":"A:A","size":{"kind":"width","width_chars":12.0}}]}@layout_ops.json){"ops":[{"kind":"freeze_panes","sheet_name":"Sheet1","freeze_rows":1,"freeze_cols":1}]}{"ops":[{"kind":"set_page_setup","sheet_name":"Sheet1","orientation":"landscape","fit_to_width":1,"fit_to_height":1}]}@rules_ops.json){"ops":[{"kind":"set_data_validation","sheet_name":"Sheet1","target_range":"B2:B4","validation":{"kind":"list","formula1":""A,B,C""}}]}{"ops":[{"kind":"set_conditional_format","sheet_name":"Sheet1","target_range":"C2:C10","rule":{"kind":"expression","formula":"C2>100"},"style":{"fill_color":"#FFF2CC","bold":true}}]}write batch formula-pattern очищает кэшированные результаты для затронутых ячеек с формулами; выполните workbook recalculate, чтобы обновить вычисленные значения.
Команды с поддержкой формул поддерживают:
--formula-parse-policy fail|warn|off
fail — прервать выполнениеwarn — продолжить и приложить сгруппированную диагностикуoff — пропустить без уведомленияЭто позволяет агентам выбирать между строгостью и продвижением вперёд в зависимости от рабочего процесса.
read values <file> <sheet> <range> [range...] [--format dense\|json\|values\|csv] [--include-formulas]read cells <file> <sheet> <target> [target...] [--include-empty]read page <file> <sheet> --format <full|compact|values_only> [--start-row ROW] [--page-size N]workbook create <path> [--sheets Inputs,Calc,...] [--overwrite]analyze find-value <file> <query> [--sheet S] [--mode value\|label] [--label-direction right\|below\|any]write batch transform <file> --ops @ops.json (--dry-run\|--in-place\|--output PATH)write_path_provenance)Команды записи формул выдают необязательные метаданные происхождения для устранения неполадок:
- written_via: путь записи (edit, transform_batch, apply_formula_pattern)
- formula_targets: цели вида лист/ячейка или лист/диапазон, затронутые записью формул
Рабочий процесс сравнения при отладке: 1. Примените одну и ту же цель формулы через два разных пути.
2. Сравните `write_path_provenance.written_via` и `formula_targets` в ответах.
3. Используйте `inspect-cells` вместе с `recalculate`, чтобы сравнить итоговое поведение.
#### Стартовые настройки по умолчанию для финансовых презентаций
- Явно задавайте ширину столбцов с подписями (обычно столбец A) (примерно `24–36` символов), чтобы избежать обрезки текста.
- Применяйте единообразные числовые форматы по смысловому типу:
- Валюта: `"$"#,##0.00_);[Red](https://github.com/PSU3D0/spreadsheet-mcp/blob/main/"$"#,##0.00)`
- Проценты: `0.0%`
- Целые числа/количество: `#,##0`
- Применяйте закрепление областей через `sheet-layout-batch` после стабилизации макета заголовков.
JSON-вывод по умолчанию компактный; используйте `--quiet`, чтобы подавить предупреждения.
Глобальный параметр `--output-format csv` в настоящее время не поддерживается; используйте специфичные для команд CSV-опции, например `read table --table-format csv`.
---
## Быстрый старт с MCP-сервером
MCP-интерфейс — это версия spreadsheet-kit в виде сервера с сохранением состояния.
Используйте его, если вам нужны:
- кэширование рабочих книг между вызовами
- жизненный цикл форков вместо замены файлов без сохранения состояния
- многошаговые рабочие процессы агентов
- скриншоты и более богатая оркестрация на стороне сервера
### Claude Code / Claude Desktop
Добавьте в `~/.claude.json` или проектный `.mcp.json`:
```json
{
"mcpServers": {
"spreadsheet": {
"command": "spreadsheet-mcp",
"args": ["--workspace-root", "/path/to/workbooks", "--transport", "stdio"]
}
}
}
{
"mcpServers": {
"spreadsheet": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/path/to/workbooks:/data",
"ghcr.io/psu3d0/spreadsheet-mcp:latest-full",
"--transport", "stdio"
]
}
}
}
:latest — это облегчённый образ только для чтения (инструменты записи/форков/пересчёта отключены); :latest-full включает инструменты записи и пересчёт (на базе LibreOffice).
spreadsheet-mcp --workspace-root /path/to/workbooks
# -> http://127.0.0.1:8079 (POST /mcp)
Каждый параметр доступен как флаг CLI (spreadsheet-mcp --help), переменная окружения или ключ файла конфигурации (--config file.yaml). CLI имеет приоритет над файлом конфигурации.
| Переменная | По умолчанию | Описание |
|---|---|---|
SPREADSHEET_MCP_WORKSPACE |
. |
Корневой каталог рабочей области, содержащий файлы электронных таблиц |
SPREADSHEET_MCP_WORKBOOK |
нет | Привязать сервер к одному пути рабочей книги |
SPREADSHEET_MCP_EXTENSIONS |
xlsx,xlsm,xls,xlsb |
Список разрешённых расширений рабочих книг через запятую |
SPREADSHEET_MCP_ENABLED_TOOLS |
все инструменты | Ограничить выполнение указанными именами инструментов (через запятую) |
SPREADSHEET_MCP_TRANSPORT |
http |
Транспорт для предоставления доступа (http или stdio) |
SPREADSHEET_MCP_HTTP_BIND |
127.0.0.1:8079 |
Адрес привязки HTTP при использовании http-транспорта |
SPREADSHEET_MCP_RECALC_ENABLED |
false |
Включить инструменты записи/пересчёта (по умолчанию используется нативный бэкенд Formualizer) |
SPREADSHEET_MCP_RECALC_BACKEND |
auto |
Предпочтительный бэкенд пересчёта: auto, formualizer или libreoffice |
SPREADSHEET_MCP_MAX_CONCURRENT_RECALCS |
2 |
Максимальное количество одновременных экземпляров LibreOffice |
SPREADSHEET_MCP_VBA_ENABLED |
false |
Включить инструменты интроспекции VBA (только чтение) |
SPREADSHEET_MCP_ALLOW_OVERWRITE |
false |
Разрешить save_fork перезаписывать исходные файлы рабочих книг |
SPREADSHEET_MCP_CACHE_CAPACITY |
5 |
Максимальное количество рабочих книг, хранящихся в памяти |
SPREADSHEET_MCP_TOOL_TIMEOUT_MS |
30000 |
Тайм-аут запроса инструмента в миллисекундах |
SPREADSHEET_MCP_MAX_RESPONSE_BYTES |
1000000 |
Максимальный размер ответа в байтах |
SPREADSHEET_MCP_MAX_PAYLOAD_BYTES |
65536 |
Максимальный размер полезной нагрузки инструмента в байтах до усечения |
SPREADSHEET_MCP_MAX_CELLS |
10000 |
Максимум ячеек на одну полезную нагрузку инструмента до усечения |
SPREADSHEET_MCP_MAX_ITEMS |
500 |
Максимум элементов на одну полезную нагрузку инструмента до усечения |
SPREADSHEET_MCP_OUTPUT_PROFILE |
token_dense |
Профиль вывода для ответов инструментов (token_dense или verbose) |
SPREADSHEET_MCP_SCREENSHOT_DIR |
<workspace_root>/screenshots |
Каталог для записи PNG-скриншотов |
SPREADSHEET_MCP_PATH_MAP |
нет | Отображение(я) путей INTERNAL=CLIENT для включения видимых клиенту путей в ответы (через запятую; полезно для монтирования томов Docker) |
Установка любой из переменных тайм-аутов/лимитов (TOOL_TIMEOUT_MS, MAX_RESPONSE_BYTES, MAX_PAYLOAD_BYTES, MAX_CELLS, MAX_ITEMS) в значение 0 отключает соответствующий лимит.
list_workbooksdescribe_workbooklist_sheetsworkbook_summarysheet_overviewsheet_pageread_tablerange_valuesinspect_cells — детальный просмотр до 25 отдельных ячеек с полными метаданными (значение, формула, стиль, числовой формат)layout_page — отрисовка диапазона листа с семантикой макета (ширины столбцов, границы, объединения) в виде JSON и опционально ASCII-сеткиgrid_export — экспорт диапазона в виде расширенной сетки со значениями, формулами, числовыми форматами, стилями, размерами столбцов и объединениями для каждой ячейкиnamed_rangessheet_stylesworkbook_style_summaryclose_workbook — выгрузить книгу из кэшаfind_valuefind_formulasheet_formula_mapformula_tracescan_volatilestable_profilesheet_statisticsget_manifest_stubexecute_manifest — выполнить манифест SheetPort с JSON-входными даннымиverify_workbook — сравнить базовую/текущую книгу или идентификаторы форков и выдать целевое доказательство плюс новые/устранённые/существовавшие ранее ошибки; шаг доказательства со сводкой в начале после recalculateedit_batchtransform_batchstyle_batchgrid_import — импорт расширенной сетки данных (значения, формулы, стили, форматы, размеры столбцов, объединения)apply_formula_patternstructure_batchcolumn_size_batchsheet_layout_batchrules_batchdefine_name / update_name / delete_name — управление именованными диапазонами в форкеreplace_in_formulas — поиск и замена текста только в телах формул, обычный текст или регулярное выражение, предпросмотр или применениеrecalculateget_edits — перечислить все правки, применённые к форкуget_changesetsave_forkscreenshot_sheetvba_project_summaryvba_module_sourcespreadsheet-kit-sdkJS SDK — это слой интеграции для приложений.
Он нормализует: - названия методов - алиасы входных данных - структуры выходных данных - типизированные ошибки возможностей
Он спроектирован так, чтобы интеграция могла работать с: - бэкендами MCP уже сейчас - бэкендами WASM/сессий по мере их созревания во встраиваемых средах выполнения
Установка:
npm i spreadsheet-kit-sdk
spreadsheet-kit-wasmКрейт на Rust существует в этом репозитории и предоставляет ориентированную на WASM обёртку байтов/сессий над общим движком.
Текущий статус:
- крейт существует и тестируется внутри репозитория
- он ещё не опубликован как универсальный публичный пакет
- дистрибуция npm-пакета spreadsheet-kit-wasm остаётся запланированной
Поэтому правильная формулировка сегодня такова: - WASM реально работает внутри репозитория - публичная дистрибуция и более широкая упаковка всё ещё развиваются
Пересчёт формул подключаемый.
| Бэкенд | Как | По умолчанию | Лучше всего подходит для |
|---|---|---|---|
| Formualizer | Собственный движок на Rust | Да | Быстрый пересчёт по умолчанию без внешних зависимостей |
| LibreOffice | Запуск soffice без графического интерфейса |
Docker :latest-full / явные сборки |
Максимальная совместимость и сценарии со скриншотами |
Примечания по функциям:
- recalc-formualizer включён по умолчанию
- recalc-libreoffice доступен для сборок с поддержкой LibreOffice
- чтение и многие операции записи работают без пересчёта; только сам пересчёт требует бэкенда
Публикуются в ghcr.io/psu3d0/spreadsheet-mcp:
| Образ | Размер | Пересчёт | Лучше всего подходит для |
|---|---|---|---|
latest |
~15 МБ | Нет | Анализ в режиме только чтения и лёгкие развёртывания агентов |
latest-full |
~800 МБ | Да | Запись + пересчёт + скриншоты |
Примеры:
# Read-only
docker run -v /path/to/workbooks:/data -p 8079:8079 ghcr.io/psu3d0/spreadsheet-mcp:latest
# Write + recalc
docker run -v /path/to/workbooks:/data -p 8079:8079 ghcr.io/psu3d0/spreadsheet-mcp:latest-full
spreadsheet-kit/
├── crates/
│ ├── spreadsheet-kit/ # shared engine + asp / agent-spreadsheet CLI
│ ├── spreadsheet-mcp/ # MCP server adapter
│ └── spreadsheet-kit-wasm/ # experimental WASM-facing wrapper
├── npm/
│ ├── agent-spreadsheet/ # npm CLI wrapper
│ └── spreadsheet-kit-sdk/ # JS SDK
├── docs/ # architecture and design docs
├── benchmarks/ # scenario budget regression harnesses
└── .github/workflows/ # CI, release, docker builds
| Пакет | Роль |
|---|---|
spreadsheet-kit |
общий движок и исполняемые файлы CLI |
spreadsheet-mcp |
MCP-транспорт с сохранением состояния + серверная поверхность |
spreadsheet-kit-wasm |
ориентированная на WASM обёртка байтов/сессий |
agent-spreadsheet |
npm-обёртка для бинарника CLI |
spreadsheet-kit-sdk |
JS SDK для интеграций в стиле MCP/WASM |

Основные идеи: - единое семантическое ядро, общее для CLI, MCP, сессий и работы, ориентированной на WASM - определение регионов для структурной осведомлённости - экономящие токены настройки по умолчанию, чтобы агенты не считывали таблицы избыточно - верификация как первоклассная функция, а не запоздалое дополнение - помощники рабочих процессов для типовых изменений, с которыми табличным агентам постоянно трудно справляться
Справочник экономичного по токенам рабочего процесса:

Рекомендуемая последовательность: 1. обнаружить книгу + листы 2. определить регионы / структуры, похожие на таблицы 3. инспектировать только нужную область или ячейки 4. вносить изменения через пробный прогон или промежуточное сохранение в сессии 5. при необходимости выполнить пересчёт 6. проверить доказательство и просмотреть сгруппированные различия
# Build everything
cargo build --release
# Run formatting, lint, and tests
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
Локальная итерация MCP:
WORKSPACE_ROOT=/path/to/workbooks ./scripts/local-docker-mcp.sh
Или укажите вашему MCP-клиенту путь напрямую к локальному бинарнику:
{
"mcpServers": {
"spreadsheet": {
"command": "./target/release/spreadsheet-mcp",
"args": ["--workspace-root", "/path/to/workbooks", "--transport", "stdio"]
}
}
}
npm/agent-spreadsheetcrates/spreadsheet-kitcrates/spreadsheet-mcpnpm/spreadsheet-kit-sdkcrates/spreadsheet-kit-wasmdocs/PACKAGING.mddocs/HEURISTICS.mddocs/RECALC.mdApache-2.0