OpenPyXL MCP Server

Un servidor MCP

Documentación

openpyxl_mcp_server

¿Qué es esto?

Un envoltorio ligero alrededor de la biblioteca Python OpenPyXl que expone algunas de sus características como servidor de Model Context Protocol (MCP). Esto permite que Claude y otros clientes MCP obtengan datos de archivos de Excel.

Enlaces relacionados:

Instalación

Pasos generales

  1. Descargue la última versión del ejecutable desde https://github.com/jonemo/openpyxl-mcp-server/releases.. openpyxl_mcp_server es para MacOS, openpyxl_mcp_server.exe es para Windows.
  2. Para usuarios de MacOS, asegúrese de establecer permisos de ejecución en el archivo descargado: chmod a+x /path/to/openpyxl_mcp_server (reemplace /path/to/ con su ubicación de descarga real).
  3. Configure su cliente MCP. Lo más común es que sea Claude Desktop, consulte las instrucciones en la siguiente sección.

Windows intentará disuadirlo de ejecutar un ejecutable aleatorio descargado de Internet. Tendrá que hacer clic en "Conservar" o "Conservar de todos modos" en varios lugares para convencerlo de que no elimine el archivo. Los detalles dependen del navegador que use y de la configuración de Windows Defender.

Alternativamente, si no confía en mis ejecutables, también puede instalar la versión fuente del código directamente desde este repositorio. Consulte la sección "Desde el código fuente" a continuación.

Configuración de Claude Desktop

Tenga en cuenta que esto solo funciona con la aplicación de escritorio de Claude, no con Claude ejecutándose en el navegador web.

  1. Tener instalado Claude Desktop.
  2. Tener descargado el ejecutable del servidor MCP (consulte la sección anterior). Esto asume que ha descargado el ejecutable a su carpeta de Descargas. Puede usar cualquier otra carpeta, ajuste las rutas en la configuración a continuación en consecuencia.
  3. En Claude Desktop, abra el menú "Configuración...":
  4. Navegue a la sección "Desarrollador" de la configuración.
  5. Haga clic en "Editar configuración". Esto creará un archivo de configuración para servidores MCP si aún no tenía uno. La ubicación predeterminada de este archivo es:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  6. En MacOS, agregue lo siguiente a su claude_desktop_config.json. Reemplace <YOUR-USERNAME> con su nombre de usuario de MacOS. Si ya usa otros servidores MCP, tendrá que fusionar el JSON con el contenido existente.
    {
      "mcpServers": {
        "inspect_excel_xlsx_file": {
          "command": "/Users/<YOUR-USERNAME>/Downloads/openpyxl_mcp_server",
          "args": []
        }
      }
    }
    
  7. En Windows, agregue lo siguiente a su claude_desktop_config.json. Reemplace <YOUR-USERNAME> con su nombre de usuario de MacOS. Si ya usa otros servidores MCP, tendrá que fusionar el JSON con el contenido existente.
    {
      "mcpServers": {
        "inspect_excel_xlsx_file": {
          "command": "C:\\Users\\<YOUR-USERNAME>\\Downloads\\openpyxl_mcp_server.exe",
          "args": []
        }
      }
    }
    
  8. Después de actualizar su archivo de configuración, debe reiniciar la aplicación de Claude para que los cambios surtan efecto. No es suficiente cerrar la ventana de la aplicación de Claude. En Windows debe hacer clic derecho en el icono de Claude en la bandeja del sistema y seleccionar "Salir". En macOS puede usar Comando+Q.

Si encuentra problemas, consulte estos recursos:

Configuración de otros clientes MCP

Instrucciones para configurar servidores MCP en otras herramientas que los admiten:

Desde el código fuente (para desarrollo)

Esta sección solo aplica si desea modificar el código fuente o si no confía en los ejecutables proporcionados y prefiere ejecutar desde el código fuente.

git clone git@github.com:jonemo/openpyxl-mcp-server.git
cd openpyxl-mcp-server
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Suponiendo que haya clonado su repositorio en /Users/jonas/repos/openpyxl_mcp_server, el contenido del archivo de configuración ahora debería cambiar a:

{
  "mcpServers": {
    "inspect_excel_xlsx_file": {
      "command": "/Users/jonas/repos/openpyxl_mcp_server/venv/bin/python",
      "args": ["/Users/jonas/repos/openpyxl_mcp_server/openpyxl_mcp_server.py"]
    }
  }
}

Ejemplos de indicaciones

Ejemplo 1

Utiliza el archivo KimbroughEvelyn_A-5qg0_Dataset_20160624.xlsx del conjunto de datos "Near-Port Air Quality Assessment Utilizing a Mobile Monitoring Approach" de https://catalog.data.gov/dataset/near-port-air-quality-assessment-utilizing-a-mobile-monitoring-approach

De un vistazo rápido a la descripción y al contenido del archivo, no me resultó obvio de qué puertos trata este conjunto de datos. Preguntemos a Claude:

Tengo un archivo de Excel en ~/Downloads/KimbroughEvelyn_A-5qg0_Dataset_20160624.xlsx que contiene datos asociados con un estudio sobre la contaminación del aire cerca de uno o más puertos en los Estados Unidos. ¿Puede inferir del contenido del archivo qué puertos están cubiertos por este estudio?

https://claude.ai/share/d87f67a9-dbc0-4223-86ff-3b4c1f9fa2e7

Después de 11 llamadas al servidor MCP, la respuesta es:

Al observar las coordenadas de latitud y longitud de la hoja Fig 2 y combinarlas con la información de ubicación, puedo inferir que este estudio se centra en el Puerto de Charleston, Carolina del Sur.

Las coordenadas en el conjunto de datos (aproximadamente latitud 32.83 y longitud -79.87) corresponden al área de Charleston, y las referencias a estaciones de monitoreo en el centro, el patio de ferrocarril y el aeropuerto son consistentes con el monitoreo de la calidad del aire alrededor de una ciudad portuaria.

Este conjunto de datos parece contener mediciones de contaminación del aire (PM2.5 y PM10) recolectadas cerca del Puerto de Charleston, con comparaciones entre ubicaciones portuarias y sitios de fondo/referencia.

Ejemplo 2:

Soy el tesorero de una pequeña asociación de propietarios de 10 unidades. Nuestra contabilidad se lleva en un archivo de Excel en Google Sheets. El archivo tiene 9 hojas con nueve hojas para cosas como la lista de transacciones, las cuentas de cuotas de los miembros, informes trimestrales.

El archivo contiene información no pública, por lo tanto, este ejemplo solo muestra la indicación, algunos "conocimientos" clave y la respuesta final:

~/Downloads/CASH FLOW 2024.xlsx son las finanzas de mi asociación de propietarios. ¿Cuánto nos facturaron por el mantenimiento del sistema de aspersores en 2024? ¿Cuántas transacciones contribuyeron a este total? ¿Cuándo ocurrió cada transacción?

[...]

Veo una hoja "Transactions" que probablemente contiene los registros detallados de gastos. Déjeme buscar "sprinkler" en esta hoja para encontrar transacciones relevantes:

[...]

Déjeme examinar la hoja de resumen YEAR 2024 para ver si el mantenimiento de aspersores está listado como una categoría:

[...]

¡Genial! Encontré "Sprinkler Maintenance" listado como una categoría en la fila 24 de la hoja YEAR 2024. Ahora, déjeme verificar las transacciones reales relacionadas con el mantenimiento de aspersores:

[...]

Déjeme revisar más entradas buscando específicamente "Sprinkler Maintenance" en toda la hoja Transactions:

[...]

Basándome en mi análisis de los registros financieros de su HOA en el archivo "CASH FLOW 2024.xlsx", esto es lo que encontré sobre los gastos de mantenimiento del sistema de aspersores en 2024:

Monto total facturado por el mantenimiento del sistema de aspersores en 2024: $565.00 Número de transacciones: 1 transacción Fecha de la transacción: 9 de septiembre de 2024

El gasto aparece como una sola transacción en la hoja Transactions. La hoja de cálculo también contiene un monto presupuestado para el mantenimiento de aspersores de $750.00 para el año en la hoja "YEAR 2024 Actuals vs Planned", con una nota que dice "Not received any invoices yet" (que puede estar desactualizada ya que ahora hay una factura registrada). ¿Le gustaría que analice cualquier otro aspecto de los gastos de mantenimiento de aspersores de su HOA u otra información financiera de la hoja de cálculo?

Historia real. Nuestro técnico de aspersores solo nos facturó la visita de primavera y olvidó enviar la factura por el trabajo posterior en el año. No se preocupe, se le pagó, pero está contabilizado en 2025.

Ejemplo 3: Rellenar un formulario

Mis búsquedas en Google de libros de trabajo de Excel interesantes encontraron el formulario DPR 973 de la Agencia de Recursos Naturales de California: https://www.parks.ca.gov/pages/22374/files/Annual%20Report%20DPR973.xls Este parece ser un formulario que es llenado por "asociaciones" que apoyan los Parques Estatales de California. Para ser claro, no estoy afiliado a tal asociación. Pero convertí el formulario de formato .xls a .xlsx y le pedí a Claude que me ayudara a llenarlo:

Necesito presentar DPR973 porque trabajo para una "asociación cooperante" de los Parques Estatales de California. El formulario que tengo que llenar es esta hoja de Excel: /Users/jonas/Downloads/Annual Report DPR973.xlsx. Apoyamos a los Parques Estatales publicando libros y generamos ingresos vendiendo leña. ¿Dónde en el libro de trabajo tengo que llenar celdas?

Después de 11 llamadas a la herramienta, la respuesta parece correcta, aunque no entiendo por qué Claude no miró las hojas restantes en absoluto:

Basándome en mi examen del formulario DPR973, ahora le proporcionaré orientación sobre dónde necesita llenar celdas para su asociación cooperante que publica libros y vende leña:

  1. Página 1:

    • Necesitará llenar la Información de la Asociación (Parte I) con los detalles de su organización (nombre, dirección, información de contacto)
    • Actualice el año en la celda C4 al año de informe actual
  2. Página 2 (A) - Aquí es donde registrará su información de ventas:

    • Para sus ventas de libros (que se considerarían interpretativas/educativas):
      • Línea 1 (Celda F22): Ventas brutas - Materiales (para sus libros publicados)
      • Línea 2 (Celda F23): Cualquier devolución o reembolso
      • Línea 3 (Celda F24): Costo de bienes vendidos para los libros
    • Para sus ventas de leña:
      • Línea 23 (Celda F51): Ventas brutas - Leña
      • Línea 24 (Celda F52): Cualquier reembolso/leña devuelta/dañada
      • Línea 25 (Celda F53): Costo de bienes vendidos para leña
    • El formulario calculará automáticamente los totales en las celdas F25 (ganancias de libros), F54 (ganancias de leña) y F58 (ganancias netas totales)
  3. Página 3 - Resumen financiero:

    • Sus cifras de ventas se completarán automáticamente desde la Página 2(A) en:
      • Línea 6 (Celda F11): Ventas brutas totales
      • Línea 7 (Celda F12): Costo total de bienes/servicios + devoluciones/reembolsos
      • Línea 8 (Celda H13): Ganancias netas para todos los materiales y servicios
    • Necesitará ingresar manualmente:
      • Cualquier donación/contribución (Línea 1, Celda F6)
      • Cuotas de membresía si aplica (Línea 4, Celda H9)
      • Ingresos por intereses/inversiones si los hay (Línea 5, Celda H10)
      • Información de recaudación de fondos si aplica (Líneas 9-11)
      • Otros ingresos si aplica (Línea 12, Celda H17)
    • Para gastos:
      • Línea 15 (Celda F21): Cualquier subvención directa a los Parques Estatales de California
      • Línea 16 (Celda F22): Gastos de apoyo al programa interpretativo
      • Línea 17 (Celda F23): Otro apoyo al programa CSP
      • Línea 19 (Celda H25): Gastos de administración y generales
    • Para activos/pasivos:
      • Línea 22 (Celda F30): Activos totales
      • Línea 23 (Celda H31): Pasivos totales
      • Líneas 24-26 (Celdas F32-F34): Activos netos por tipo de restricción
  4. Página 4 (no examinada completamente pero probablemente contiene):

    • Notas adicionales, explicaciones y firmas

Para sus actividades específicas (publicación de libros y venta de leña), concéntrese en completar con precisión:

  1. La sección de Ventas Interpretativas y Educativas en la Página 2(A) para sus ventas de libros
  2. La sección de Ventas de Leña en la Página 2(A) para sus ingresos por leña
  3. El resumen financiero completo en la Página 3

¿Le gustaría que le explique alguna sección específica con más detalle?

Ejemplo 4

Esto utiliza el archivo 2025-3-7-iolp-buildings.xlsx del conjunto de datos Inventory of Owned and Leased Properties (IOLP) disponible en https://catalog.data.gov/dataset/inventory-of-owned-and-leased-properties-iolp. Si ha seguido las noticias en las últimas semanas, sabrá por qué este es actualmente el conjunto de datos más popular en data.gov.

Indicación:

Usando el archivo de Excel en "/Users/jonas/Downloads/2025-3-7-iolp-buildings.xlsx": ¿Cuál es el edificio federal más grande por pies cuadrados en el estado de Utah?

Usé este archivo y la indicación repetidamente como caso de prueba y obtuve resultados mixtos:

  • Chats que terminaron sin respuesta porque habían alcanzado el límite de contexto. Esto sucedió cuando Claude entró en un bucle de consultar muchas filas una a la vez.
  • Respuestas incorrectas porque Claude hizo "malas suposiciones" en el camino. Por ejemplo, en este chat decide que el edificio más grande debe estar en Salt Lake City y comienza a buscar en la hoja de cálculo términos arbitrarios.
  • Respuestas correctas, por ejemplo este chat: El Centro de Servicio del IRS en Ogden es el edificio federal más grande en Utah en la lista. Nota al pie: El Centro de Servicio del IRS es correcto en la medida en que es el edificio más grande de la lista. El "Bumblehive", también conocido como "Utah Data Center" o "Centro de Datos de la Iniciativa Integral de Ciberseguridad Nacional de la Comunidad de Inteligencia", es casi con certeza más grande, pero no está incluido en el archivo.

Contribución y Desarrollo

Creación de ejecutables independientes

Para crear ejecutables independientes que no requieran la instalación de Python:

  1. Asegúrate de tener todas las dependencias instaladas:

    pip install -r requirements.txt
    pip install -r requirements-dev.txt
    
  2. Compila el ejecutable:

    pyinstaller openpyxl_mcp_server.spec
    

El ejecutable se creará en el directorio dist. En Windows, se llamará openpyxl_mcp_server.exe. En macOS, se llamará openpyxl_mcp_server.

Nota: Al compilar en macOS, es posible que necesites firmar el ejecutable para que funcione correctamente. Puedes hacerlo con:

codesign --force --deep --sign - dist/openpyxl_mcp_server

Directorios de Servidores MCP

openpyxl-mcp-server está actualmente listado en estos directorios de servidores MCP: