C++ Excel Automation

Un servidor MCP basado en C++ para la automatización inteligente de Excel utilizando la librería OpenXLSX.

Documentación

Idioma: 中文 | English

C++ Excel Automation MCP Server

Este es un proyecto de servidor MCP (Model Context Protocol) de automatización de Excel basado en C++. Utiliza la biblioteca OpenXLSX para operaciones de archivos de Excel y tiene como objetivo proporcionar un conjunto inteligente de herramientas de manipulación de Excel a través del protocolo MCP, aprovechando las capacidades de LLM.

Tabla de Contenidos

Características

  • Interfaz MCP simple y fácil de usar: Proporciona herramientas MCP estandarizadas, lo que facilita que los clientes (como asistentes de IA) invoquen funciones de automatización de Excel.
  • Implementación de un solo archivo: Se compila en un solo ejecutable para facilitar la implementación y ejecución.
  • Soporte multilingüe personalizable: Agregue o modifique fácilmente los idiomas de la interfaz mediante archivos JSON.

Capacidades del Servidor

Este servidor MCP proporciona las siguientes herramientas, que pueden ser invocadas por un LLM para interactuar con archivos de hoja de cálculo xlsx:

  • open_excel_and_list_sheets:
    • Descripción: Abrir un archivo de Excel y listar todos los nombres de las hojas. Esta herramienta también establecerá la ruta actual del archivo de Excel para operaciones posteriores. SE RECOMIENDA EJECUTAR ESTA HERRAMIENTA PRIMERO ANTES DE CUALQUIER OPERACIÓN O SI SE DESEA CAMBIAR EL ARCHIVO A MODIFICAR.
    • Parámetros:
      • file_path (string): La ruta absoluta al archivo de Excel.
  • get_sheet_range_content:
    • Descripción: Obtener y mostrar el contenido de la tabla dentro de un rango especificado en una hoja específica. Abre y cierra automáticamente el archivo de Excel.
    • Parámetros:
      • sheet_name (string): El nombre de la hoja de la que se leerá.
      • first_row (number): El número de fila inicial (basado en 1).
      • first_column (number): El número de columna inicial (basado en 1).
      • last_row (number): El número de fila final (basado en 1).
      • last_column (number): El número de columna final (basado en 1).
      • cell_with_coord (boolean, opcional): Mostrar celdas no vacías con sus respectivas coordenadas, adecuado para situaciones donde el área de salida contiene una gran cantidad de celdas vacías.
  • set_sheet_range_content:
    • Descripción: Establecer el contenido de la tabla dentro de un rango especificado en una hoja específica. Abre y cierra automáticamente el archivo de Excel.
    • Parámetros:
      • sheet_name (string): El nombre de la hoja en la que se escribirá.
      • first_row (number): El número de fila inicial (basado en 1).
      • first_column (number): El número de columna inicial (basado en 1).
      • values (array[array]): La matriz 2D de valores a escribir en el rango (admite tipos null, boolean, number, string).
  • create_xlsx_file_by_absolute_path: (Nota: El nombre de la herramienta se define así en el código, pero la clave en JSON es create_xlsx)
    • Descripción: Crear un nuevo archivo xlsx con la ruta dada. Cierra automáticamente el archivo de Excel después de la creación.
    • Parámetros:
      • file_path (string): La ruta ABSOLUTA donde se debe crear el archivo.

(Nota: El comportamiento de apertura/cierre automático mencionado en las descripciones de las herramientas es un detalle de implementación interna y no requiere atención del usuario.)

Compilación del Proyecto

Este proyecto utiliza CMake para la compilación. Se recomienda instalar Ninja para velocidades de compilación más rápidas.

Pasos de compilación:

  1. Preparar el entorno:
    • Asegúrese de tener un compilador C++17, CMake (>= 3.15) y Ninja instalados.
    • Clone el repositorio: git clone https://github.com/smileFAace/MCP-ExcelAutoCpp.git
  2. Compilar:
    # Change to the project directory (if not already in the root)
    # cd MCP-ExcelAutoCpp
    
    # Generate build files (Ninja recommended)
    cmake -G "Ninja" -S . -B build
    
    # Perform compilation
    cmake --build build
    
    El ejecutable compilado generalmente se encuentra en el directorio bin/.

Uso

Después de una compilación exitosa, busque el ejecutable llamado ExcelAutoCpp (Linux/macOS) o ExcelAutoCpp.exe (Windows) en el directorio ./bin/.

Iniciar el servidor

Simplemente ejecute el ejecutable para iniciar el servidor MCP.

# Example (adjust path as needed)
./bin/ExcelAutoCpp

Cuando vea una salida similar a la siguiente, el servidor se ha iniciado correctamente y está escuchando en localhost:8888:


░█▀▀░█░█░█▀▀░█▀▀░█░░░█▀█░█░█░▀█▀░█▀█
░█▀▀░▄▀▄░█░░░█▀▀░█░░░█▀█░█░█░░█░░█░█
░▀▀▀░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀░░▀░░▀▀▀
v0.0.2                 By smileFAace

I(17:35:48) i18n: Successfully loaded language string for language code 'en'
I(17:35:48) i18n: Set current language to 'en'
W(17:35:48) lang.json not found at 'E:\prj\MCP-ExcelAutoCpp\bin\lang.json'. Using default language.
I(17:35:48) i18n: Set current language to 'en'
I(17:35:48) Current language set to: en
I(17:35:48) Starting MCP server at localhost:8888
I(17:35:48) Press Ctrl+C to stop the server

Conexión y uso:

Este servidor cumple con el protocolo MCP. Puede usar cualquier cliente compatible con MCP (como Roo, cline, claude, cherry studio, etc.) para conectarse al endpoint SSE del servidor (predeterminado: http://localhost:8888/sse) e invocar las herramientas de automatización de Excel proporcionadas.

Por ejemplo, para configurar este servidor MCP en cline, simplemente agregue el siguiente contenido al archivo de configuración JSON de mcp proporcionado por el complemento después de que el servidor se ejecute correctamente, y luego actualice:

{
  "mcpServers": {
    "excel-auto-cpp": {
      "url": "http://localhost:8888/sse"
    }
  }
}

Cambiar y personalizar el idioma del servidor:

El servidor usa inglés (en) como idioma de interfaz de forma predeterminada. Puede cambiar el idioma creando un archivo de idioma personalizado:

  1. Localice el directorio que contiene el ejecutable del servidor (generalmente bin/).

  2. Cree un archivo de texto llamado lang.json en ese directorio.

  3. Copie los pares clave-valor completos para el idioma deseado en este archivo lang.json.

    • Puede consultar los archivos *.json en el directorio lang/ del código fuente del proyecto como plantillas (por ejemplo, lang/zh-cn/lang.json contiene las traducciones al chino).
    • El archivo lang.json debe contener todas las entradas de traducción necesarias para la interfaz y los registros del programa.
  4. Guarde el archivo lang.json y reinicie el servidor.

    • El servidor detectará y cargará automáticamente este archivo al iniciar. Si se carga correctamente, usará el idioma definido en lang.json.
    • Si el archivo lang.json no existe, tiene un formato incorrecto o le faltan entradas de traducción necesarias, el servidor volverá al idioma inglés (en) predeterminado.

Descarga

Puede descargar la última versión desde la página Releases.

🌟Historial de Estrellas

Star History Chart