Если агенту нужно читать и править рабочую книгу Excel на вашем компьютере, подключают Excel MCP: сервер открывает файл xlsx, отдаёт диапазоны ячеек и записывает в них значения и формулы. В популярном варианте от сообщества, репозитории haris-musa/excel-mcp-server, для этого используется библиотека openpyxl, и сервер работает без установленного Excel. У такой схемы есть неочевидная особенность: формулы сохраняются как текст, а пересчитывает их сама программа, поэтому проверка результата всегда идёт на копии файла и отдельным шагом.
Книга под замком
Excel MCP от сообщества читает и пишет xlsx-файлы напрямую, а доступ ограничивается каталогом через параметр allow-dir или переменную EXCEL_FILES_PATH; без такого ограничения сервер откроет любой файл Excel, путь к которому ему назвали.
README репозитория перечисляет более двадцати инструментов в группах книг, листов, ячеек, форматирования, объектов и макросов: создание книги, read_range, write_range, format_range, create_chart, чтение VBA. Сервер поддерживает запуск через stdio и через streamable-http, лицензия MIT. Это проект сообщества, корпорация Microsoft к нему непричастна, и наряду с ним встречаются другие реализации. Автора, дату изменений и открытые замечания смотрите перед установкой. Версия 1.0 от 28 сентября 2026 года переименовала инструменты, поэтому примеры для линейки 0.x к ней непригодны. Из защит README называет проверку формул перед записью (функции, выходящие в сеть или к другим программам, отклоняются), режим только чтения и отказ молча перезаписывать существующую книгу; копия и проверка результата остаются обязательными.
Условный пример: бухгалтер хранит в книге реестр платежей, и агенту поручено сверить столбец сумм с выпиской. Для такой задачи достаточно чтения одного листа, запись агенту можно закрыть полностью флагом --read-only или переменной EXCEL_MCP_READ_ONLY=1. Первое решение касается папки. Документация предлагает флаг --allow-dir с каталогом, и тогда сервер откроет книги только внутри него, включая подпапки. Альтернатива — переменная EXCEL_FILES_PATH. Без этих настроек разрешён любой абсолютный путь к файлу Excel, а значит, агент дотянется и до бухгалтерской книги, лежащей на соседнем диске. Заведите отдельную папку «для агента» и кладите туда копии, оригиналы оставляйте на месте.
Сценарий отличается от сценариев ChatGPT в Excel и от подключения моделей к облачным таблицам: речь о локальном файле и о вызовах инструментов из агента, поэтому Google Таблицы и генерация новых таблиц целиком остаются за рамками разбора.
Формулы и значения
Главная ловушка записана в README одной фразой: формулы хранятся как текст, а вычисляет их сама программа. Читая диапазон, сервер возвращает значения, которые Excel последний раз записал в файл. Если агент записал формулу и тут же прочитал результат, ячейка окажется пустой или покажет старое значение: пересчёт произойдёт только когда книгу откроет Excel или LibreOffice. Вывод агента вида «формула работает, итог равен такому-то» без пересчёта остаётся пустым утверждением.
Для рабочей книги это важно вдвойне: в ней часто лежат вложенные формулы, ссылки на другие листы и условное форматирование, а значение в ячейке зависит от цепочки расчётов. Из этого следует правило: проверять нужно пересчитанное значение, а запись формулы остаётся лишь намерением. Скрипт открывает копию в LibreOffice в фоновом режиме или в Excel, сохраняет и читает значения ещё раз. Расхождение между ожидаемым и полученным результатом ловится только на этом шаге. Ожидаемые значения лучше вычислить независимо, например отдельным скриптом на pandas от исходных данных.
Есть и менее заметные риски, они тоже отмечены в README. При вставке и удалении строк и столбцов формулы, диаграммы и таблицы сохраняют старые ссылки. Возможности книги, неизвестные openpyxl, например фигуры и срезы, могут пропасть при сохранении. Устаревший формат xls и файлы csv остаются за пределами поддержки. Настоящие сводные таблицы библиотека создавать неспособна: инструмент create_summary_table пишет статичную сводку. Код макросов в файлах xlsm сохраняется, а сервер лишь читает VBA без запуска. Поэтому рабочую книгу со сложным форматированием и макросами первый раз правят на копии.
Копия и диапазон
- Скопируйте книгу в папку агента (облачную синхронизацию на время работы отключите, иначе версии разойдутся), к имени файла добавьте дату и метку «тест».
- Сохраните исходный файл как эталон и посчитайте его контрольную сумму, чтобы позже доказать, что оригинал остался прежним.
- Перечислите диапазоны, которые агенту разрешено менять, например лист и столбцы с нужными данными. Всё остальное считается запретной зоной.
- Попросите агента прочитать диапазон и пересказать структуру: заголовки, типы значений, пустые строки. Сверьте пересказ с книгой.
- Дайте одно узкое изменение: заполнить столбец формулой или исправить регистр в колонке названий. Принимайте результат только после пересчёта и сравнения с эталоном.
Запись формул в диапазон имеет и безопасный вариант: сначала агент пишет формулы в пустой столбец рядом, человек сверяет результат, и только потом данные переносятся в основной столбец. Ограничение диапазонов задаёт ваша инструкция и ваш скрипт-обёртка, а сам сервер такой границы лишён: инструмент записи принимает любой адрес ячеек внутри разрешённой папки. Поэтому после каждого сеанса скрипт сравнивает запретную зону с эталоном и поднимает тревогу при любом расхождении.
Когда копий много, имя файла становится частью дисциплины: дата, исполнитель, назначение прогона. По имени видно, какой файл эталонный, какой рабочий, а какой остался от неудачной попытки. Удаляйте черновые копии по правилам компании, а журнал прогонов храните дольше.
Какие книги Excel у вас ведутся вручную дольше всего?
Diff ячеек
У xlsx нет привычного построчного diff, как у кода, но его легко построить. Скрипт читает обе версии книги и сравнивает ячейки по адресу, отдельно формулы и отдельно пересчитанные значения. Результат — таблица изменений, которую просматривает сотрудник.
| Что сравнивается | Как получить | Что означает расхождение |
|---|---|---|
| Формулы в ячейках | Чтение книги без вычисления значений | Агент поменял логику расчёта |
| Значения после пересчёта | Открытие копии в Excel или LibreOffice, сохранение, повторное чтение | Итог расходится с ожидаемым |
| Запретная зона | Сравнение с эталоном по адресам | Агент вышел за разрешённый диапазон |
| Структура книги | Список листов, таблиц, диаграмм, имён | Что-то пропало или добавилось при сохранении |
| Форматирование | Выборочное сравнение стилей и ширины столбцов | Пострадал внешний вид отчёта |
Просматривайте diff целиком, пересказ агента годится лишь как подсказка. Рассказ модели о проделанном помогает понять, куда смотреть в первую очередь. Проверка записанной формулы человеком быстрее всего идёт в режиме показа формул, когда в ячейке виден текст формулы вместо числа. Контрольные ячейки пригодятся и при будущих обновлениях книги: те же проверки сработают, когда формулы поменяет уже сотрудник. Для сложных книг имеет смысл вести список контрольных ячеек: итоги по листам, суммы, проверочные разности. Они меняются при любой ошибке в расчётах и ловят то, что глаз пропускает.
Допуск и запись
Считает скрипт, модель объясняет таблицу и предлагает правку, а подменить рабочую книгу разрешает только человек. Схема допуска делится на три ступени: чтение копии, запись в копию с проверкой diff, перенос результата в рабочую книгу сотрудником. Прямую запись агента в боевой файл мы исключаем на всех ступенях пилота.
Права проверяются там, где их можно проверить. Сервер читает файл напрямую с диска, поэтому права доступа к книгам задаёт операционная система, а флаг allow-dir добавляет к ним границу папки; запись в сетевую папку возможна только при её прямом подключении к машине. Сервер открывает файлы с правами того пользователя, под которым запущен, поэтому заведите для него отдельную учётную запись без доступа к остальным папкам. В журнале храните имя файла, список вызванных инструментов, время и контрольные суммы до и после. Содержимое ячеек с персональными или коммерческими данными должно попадать в журнал только в виде адресов ячеек. Если команде нужен контур с ролями и приёмкой, его собирают как проект, и разговор об этом удобно начать на странице про ИИ-агентов; о более широкой работе с таблицами рассказывает статья про ИИ для Excel и таблиц.
Выберите небольшую книгу с одним расчётным листом, положите её копию в папку агента, ограничьте сервер этой папкой и поручите агенту добавить один столбец с формулой. Пересчитайте файл в LibreOffice, сравните значения с независимым расчётом и только затем расширяйте разрешённые диапазоны.