Skip to main content
Glama
Corvalon
by Corvalon

mcp-excel

License: MIT Model Context Protocol

Un servidor del Model Context Protocol que proporciona a Claude Code (o a cualquier cliente MCP) acceso completo de lectura y escritura a libros de Excel: hojas, rangos de celdas, tablas estructuradas, fórmulas, formato y referencias entre libros. Lee y escribe archivos .xlsx reales en disco mediante ExcelJS; no se necesita una copia de Excel, una cuenta de Microsoft ni un servicio en la nube.

Se ejecuta localmente como subproceso stdio, o como servicio HTTP/SSE (útil para compartir una instancia con un cliente de escritorio a través de tu LAN mediante Docker).

Estado: 11 herramientas, transportes stdio + SSE, cero dependencias externas más allá de npm. Licencia: MIT.

Herramientas

Herramienta

Qué hace

list_sheets

Lista todas las hojas de un libro con recuentos de filas y columnas

read_range

Lee un rango de celdas; devuelve valores, fórmulas y tipos

write_cells

Escribe valores o fórmulas en celdas específicas (crea el archivo/hoja si falta)

write_rows

Escribe varias filas de datos desde una celda inicial (construcción de conjuntos de datos)

create_table

Crea una tabla estructurada de Excel (ListObject) con encabezados, datos y fórmulas opcionales de columna

create_workbook

Crea un nuevo libro vacío con una o más hojas con nombre

add_sheet

Añade una nueva hoja a un libro existente

delete_sheet

Elimina una hoja de un libro

format_cells

Aplica fuente, relleno, formato de número, alineación y bordes a un rango

cross_workbook_reference

Lee de un libro y escribe valores (o fórmulas de enlace) en otro

get_defined_names

Lista rangos con nombre y nombres de tablas en un libro

Todos los argumentos de rutas de archivo se resuelven con path.resolve() respecto al directorio de trabajo del servidor, por lo que las rutas absolutas son las más seguras. En modo Docker (SSE), las rutas se resuelven dentro del contenedor contra el volumen montado /data (ver más abajo).

Related MCP server: mcp-xlsx-server

Requisitos

  • Node.js 18 o superior (modo stdio), o

  • Docker (modo SSE / instancia compartida)

Configuración: Claude Code (stdio, local)

Clona e instala:

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

Registra el servidor. Puedes añadirlo con la CLI:

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

o añadirlo manualmente a tu configuración de Claude Code (~/.claude.json):

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

Reinicia Claude Code. Las herramientas aparecen bajo el prefijo mcp__excel__*.

Configuración: Claude Desktop (stdio, local)

Añade el mismo bloque a la configuración de Claude Desktop (Settings > Developer > Edit Config, que abre claude_desktop_config.json):

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

Guarda y reinicia. Cuando aparezca el icono de martillo / herramientas, el servidor está conectado.

Configuración: Docker (SSE, instancia compartida)

Ejecuta un contenedor al que cualquier cliente MCP de tu red pueda acceder mediante SSE. Esto es útil para manejar archivos de Excel desde una máquina que no tenga Node.js.

  1. Apunta el contenedor a la carpeta que contiene tus libros y arráncalo:

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

    El archivo compose monta esa carpeta como /data dentro del contenedor y escucha en el puerto 3001.

  2. Añade el endpoint SSE a la configuración de tu cliente (reemplaza el host por la IP LAN del host del contenedor si el cliente está en otra máquina):

    {
      "mcpServers": {
        "excel": {
          "url": "http://localhost:3001/sse"
        }
      }
    }
  3. Como las rutas se resuelven dentro del contenedor, direcciona los archivos relativos al montaje /data. Si MCP_EXCEL_DATA_DIR es ~/spreadsheets, entonces ~/spreadsheets/2025/Budget.xlsx es /data/2025/Budget.xlsx en las llamadas a herramientas.

Cuando un cliente en un host diferente se conecta mediante SSE, establece MCP_ALLOWED_HOSTS para que el servidor acepte la solicitud. Crea un archivo .env junto a docker-compose.yml:

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

Gestión del contenedor:

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

Hay una comprobación de salud disponible en http://<host>:3001/health.

Configuración

Variable

Valor por defecto

Propósito

MCP_TRANSPORT

stdio

stdio para un subproceso local, sse para el servicio HTTP/SSE

MCP_PORT

3000

Puerto para el modo SSE (el archivo compose de Docker usa 3001)

MCP_ALLOWED_HOSTS

localhost,127.0.0.1,::1

Lista de permitidos del encabezado Host separada por comas para el modo SSE

MCP_EXCEL_DATA_DIR

./data

Carpeta del host montada como /data en el contenedor Docker

Seguridad

Este servidor lee y escribe archivos reales, y en modo SSE abre un puerto de red. Trátalo como una herramienta local de confianza, no como un servicio expuesto a internet.

  • Acceso a archivos. Las llamadas a herramientas pueden leer o escribir cualquier ruta .xlsx que el proceso del servidor pueda alcanzar. En modo stdio eso es todo tu sistema de archivos; en modo Docker (SSE) está limitado al volumen montado /data, por lo que Docker es la forma más segura de acotar el acceso.

  • SSE no tiene autenticación. El endpoint HTTP/SSE escucha en 0.0.0.0 y no autentica a los llamantes. Ejecútalo solo en una LAN de confianza y restringe quién puede alcanzarlo con MCP_ALLOWED_HOSTS (una lista de permitidos del encabezado Host) además de tu propio cortafuegos. No expongas el puerto 3001 a internet público.

  • Las fórmulas son datos, no código. ExcelJS escribe cadenas de fórmulas; no ejecuta macros ni VBA, por lo que abrir un libro producido no ejecuta ningún código de este servidor.

Ejemplos de indicaciones

  • "Crea un nuevo libro de presupuesto con las columnas Categoría, Presupuesto, Real y Diferencia."

  • "Lee los datos en Sales.xlsx y resume los totales por región."

  • "Añade una fórmula SUM al final de la columna B en la hoja Q1."

  • "Construye una tabla con formato a partir de estos datos con una fila de totales."

  • "Extrae los totales mensuales de Budget.xlsx a una hoja Resumen en Report.xlsx."

Notas y advertencias

Permisos. Un comodín cubre las 11 herramientas: permite mcp__<key>__*, donde <key> es el nombre con el que registraste el servidor. Registrado como excel, eso es mcp__excel__*. Nunca necesitas enumerar herramientas individualmente.

Los parámetros desconocidos se rechazan (desde 1.1.0). Un nombre de argumento mal escrito falla con -32602 unrecognized_keys indicando la clave, y cada herramienta publica additionalProperties: false. Las versiones anteriores descartaban silenciosamente el error tipográfico y se ejecutaban con los valores predeterminados, lo que devolvía datos incorrectos con confianza.

Las fórmulas se almacenan, no se evalúan. Este servidor escribe texto de fórmula; no calcula resultados. Leer una celda de fórmula devuelve =SUM(A1:A2) (result: not calculated) hasta que el archivo se abre y se guarda en Excel o LibreOffice, lo que rellena el resultado en caché. Cuando necesites totales calculados, o lee las celdas de origen y súmalos tú mismo, o haz un viaje de ida y vuelta del archivo a través de una aplicación de hoja de cálculo primero.

Limitaciones

Actualmente ninguna herramienta expone:

  • Insertar o eliminar filas/columnas en medio de una hoja

  • Crear o editar nombres definidos

  • Distinguir tablas de nombres definidos

Para estos casos, maneja el archivo directamente con una biblioteca de hojas de cálculo. En Python, openpyxl cubre los tres; carga con load_workbook(path, data_only=False) para conservar las fórmulas, ya que data_only=True devuelve valores en caché que pueden ser None por la razón anterior.

Licencia

MIT (c) 2026 Corvalon.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Corvalon/mcp-excel'

If you have feedback or need assistance with the MCP directory API, please join our Discord server