Skip to main content
Glama
Corvalon
by Corvalon

mcp-excel

License: MIT Model Context Protocol

Сервер Model Context Protocol, который предоставляет Claude Code (или любому MCP-клиенту) полный доступ на чтение и запись к книгам Excel: листы, диапазоны ячеек, структурированные таблицы, формулы, форматирование и ссылки между книгами. Он читает и записывает настоящие файлы .xlsx на диске с помощью ExcelJS; не требуется ни копия Excel, ни учётная запись Microsoft, ни облачный сервис.

Он работает локально как подпроцесс stdio или как HTTP/SSE-сервис (удобно для совместного использования одного экземпляра с настольным клиентом через вашу LAN с помощью Docker).

Статус: 11 инструментов, транспорты stdio + SSE, ноль внешних зависимостей, кроме npm. Лицензия: MIT.

Инструменты

Инструмент

Что делает

list_sheets

Перечисляет все листы в книге с количеством строк и столбцов

read_range

Читает диапазон ячеек; возвращает значения, формулы и типы

write_cells

Записывает значения или формулы в конкретные ячейки (создаёт файл/лист, если отсутствует)

write_rows

Записывает несколько строк данных, начиная с заданной ячейки (массовое создание наборов данных)

create_table

Создаёт структурированную таблицу Excel (ListObject) с заголовками, данными и необязательными формулами столбцов

create_workbook

Создаёт новую пустую книгу с одним или несколькими именованными листами

add_sheet

Добавляет новый лист в существующую книгу

delete_sheet

Удаляет лист из книги

format_cells

Применяет шрифт, заливку, числовой формат, выравнивание и границы к диапазону

cross_workbook_reference

Читает из одной книги и записывает значения (или связывающие формулы) в другую

get_defined_names

Перечисляет именованные диапазоны и имена таблиц в книге

Все аргументы путей к файлам разрешаются с помощью path.resolve() относительно рабочего каталога сервера, поэтому абсолютные пути — самый безопасный вариант. В режиме Docker (SSE) пути разрешаются внутри контейнера относительно смонтированного тома /data (см. ниже).

Related MCP server: mcp-xlsx-server

Требования

  • Node.js 18 или новее (режим stdio), или

  • Docker (режим SSE / общего экземпляра)

Настройка: Claude Code (stdio, локально)

Клонируйте и установите:

git clone https://bitbucket.org/corvalon/mcp-excel.git
cd mcp-excel
npm ci

Зарегистрируйте сервер. Либо добавьте его через CLI:

claude mcp add excel -- node /absolute/path/to/mcp-excel/index.js

либо добавьте вручную в конфигурацию Claude Code (~/.claude.json):

{
  "mcpServers": {
    "excel": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-excel/index.js"]
    }
  }
}

Перезапустите Claude Code. Инструменты появятся с префиксом mcp__excel__*.

Настройка: Claude Desktop (stdio, локально)

Добавьте тот же блок в конфигурацию Claude Desktop (Settings > Developer > Edit Config, который открывает claude_desktop_config.json):

{
  "mcpServers": {
    "excel": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-excel/index.js"]
    }
  }
}

Сохраните и перезапустите. Когда появится значок молотка / инструментов, сервер подключён.

Настройка: Docker (SSE, общий экземпляр)

Запустите один контейнер, к которому любой MCP-клиент в вашей сети может обращаться через SSE. Это полезно для управления файлами Excel с машины, на которой нет Node.js.

  1. Укажите контейнеру папку с вашими книгами и запустите его:

    MCP_EXCEL_DATA_DIR=/path/to/your/spreadsheets docker compose up -d --build

    Файл compose монтирует эту папку как /data внутри контейнера и прослушивает порт 3001.

  2. Добавьте конечную точку SSE в конфигурацию клиента (замените хост на LAN-IP хоста контейнера, если клиент находится на другой машине):

    {
      "mcpServers": {
        "excel": {
          "url": "http://localhost:3001/sse"
        }
      }
    }
  3. Поскольку пути разрешаются внутри контейнера, указывайте файлы относительно смонтированного тома /data. Если MCP_EXCEL_DATA_DIR — ~/spreadsheets, то ~/spreadsheets/2025/Budget.xlsx в вызовах инструментов будет /data/2025/Budget.xlsx.

Когда клиент с другого хоста подключается через SSE, задайте MCP_ALLOWED_HOSTS, чтобы сервер принял запрос. Создайте файл .env рядом с docker-compose.yml:

MCP_ALLOWED_HOSTS='localhost,127.0.0.1,::1,192.168.1.50,my-host.local'

Управление контейнером:

docker compose up -d --build   # start / rebuild after code changes
docker compose down            # stop
docker compose logs -f         # tail logs

Проверка работоспособности доступна по адресу http://<host>:3001/health.

Конфигурация

Переменная

По умолчанию

Назначение

MCP_TRANSPORT

stdio

stdio для локального подпроцесса, sse для HTTP/SSE-сервиса

MCP_PORT

3000

Порт для режима SSE (файл Docker compose использует 3001)

MCP_ALLOWED_HOSTS

localhost,127.0.0.1,::1

Разрешённый список Host-заголовков через запятую для режима SSE

MCP_EXCEL_DATA_DIR

./data

Папка хоста, монтируемая как /data в контейнере Docker

Безопасность

Этот сервер читает и записывает реальные файлы, а в режиме SSE открывает сетевой порт. Относитесь к нему как к доверенному локальному инструменту, а не как к сервису, доступному из интернета.

  • Доступ к файлам. Вызовы инструментов могут читать или записывать любой путь .xlsx, доступный процессу сервера. В режиме stdio это вся ваша файловая система; в режиме Docker (SSE) доступ ограничен смонтированным томом /data, поэтому Docker — более безопасный способ ограничить доступ.

  • SSE не имеет аутентификации. Конечная точка HTTP/SSE прослушивает 0.0.0.0 и не аутентифицирует вызывающих. Запускайте её только в доверенной LAN и ограничьте доступ с помощью MCP_ALLOWED_HOSTS (список разрешённых Host-заголовков) и собственного межсетевого экрана. Не открывайте порт 3001 для публичного интернета.

  • Формулы — это данные, а не код. ExcelJS записывает строки формул; он не выполняет макросы или VBA, поэтому открытие созданной книги не запускает никакой код с этого сервера.

Примеры запросов

  • "Создай новую книгу бюджета с колонками Категория, Бюджет, Факт и Разница."

  • "Прочитай данные в Sales.xlsx и суммируй итоги по регионам."

  • "Добавь формулу SUM внизу колонки B на листе Q1."

  • "Построй форматированную таблицу из этих данных со строкой итогов."

  • "Перенеси ежемесячные итоги из Budget.xlsx на лист Summary в Report.xlsx."

Примечания и подводные камни

Разрешения. Один шаблон покрывает все 11 инструментов: разрешите mcp__<key>__*, где <key> — имя, под которым вы зарегистрировали сервер. Если зарегистрирован как excel, это mcp__excel__*. Вам никогда не нужно перечислять инструменты по отдельности.

Неизвестные параметры отклоняются (с версии 1.1.0). Ошибочно введённое имя аргумента приводит к ошибке -32602 unrecognized_keys с указанием ключа, и каждый инструмент публикует additionalProperties: false. Более ранние версии молча игнорировали опечатку и работали с значениями по умолчанию, что приводило к уверенно неверным данным.

Формулы сохраняются, но не вычисляются. Этот сервер записывает текст формулы; он не вычисляет результаты. Чтение ячейки с формулой возвращает =SUM(A1:A2) (result: not calculated) до тех пор, пока файл не будет открыт и сохранён в Excel или LibreOffice, что заполняет кэшированный результат. Когда вам нужны вычисленные итоги, либо прочитайте исходные ячейки и суммируйте их сами, либо сначала прогоните файл через табличное приложение.

Ограничения

Ни один инструмент в настоящее время не предоставляет:

  • Вставку или удаление строк/столбцов в середине листа

  • Создание или редактирование именованных диапазонов

  • Различение таблиц и именованных диапазонов

Для этих задач управляйте файлом напрямую с помощью библиотеки для работы с электронными таблицами. В Python openpyxl покрывает все три случая; загружайте с load_workbook(path, data_only=False), чтобы сохранить формулы, поскольку data_only=True возвращает кэшированные значения, которые могут быть None по указанной выше причине.

Лицензия

MIT (c) 2026 Corvalon.

Related MCP Connectors

Related MCP Servers