C++ Excel Automation
Um servidor MCP baseado em C++ para automação inteligente do Excel usando a biblioteca OpenXLSX.
Documentação
C++ Excel Automation MCP Server
Este é um projeto de servidor MCP (Model Context Protocol) de Automação de Excel baseado em C++. Ele utiliza a biblioteca OpenXLSX para operações de arquivos Excel e tem como objetivo fornecer um conjunto inteligente de ferramentas de manipulação de Excel através do protocolo MCP, aproveitando as capacidades de LLM.
Índice
Recursos
- Interface MCP Simples e Fácil de Usar: Fornece ferramentas MCP padronizadas, facilitando que clientes (como assistentes de IA) invoquem funções de automação do Excel.
- Implantação em Arquivo Único: Compila em um único arquivo executável para fácil implantação e execução.
- Suporte a Múltiplos Idiomas Personalizável: Adicione ou modifique facilmente os idiomas da interface via arquivos JSON.
Capacidades do Servidor
Este servidor MCP fornece as seguintes ferramentas, que podem ser invocadas por um LLM para interagir com arquivos de planilha xlsx:
open_excel_and_list_sheets:- Descrição: Abre um arquivo Excel e lista todos os nomes das planilhas. Esta ferramenta também define o caminho atual do arquivo Excel para operações subsequentes. RECOMENDA-SE EXECUTAR ESTA FERRAMENTA PRIMEIRO ANTES DE QUALQUER OPERAÇÃO OU SE QUISER MUDAR O ARQUIVO A SER MODIFICADO.
- Parâmetros:
file_path(string): O caminho absoluto para o arquivo Excel.
get_sheet_range_content:- Descrição: Obtém e exibe o conteúdo da tabela dentro de um intervalo especificado em uma planilha específica. Abre e fecha automaticamente o arquivo Excel.
- Parâmetros:
sheet_name(string): O nome da planilha da qual ler.first_row(number): O número da linha inicial (baseado em 1).first_column(number): O número da coluna inicial (baseado em 1).last_row(number): O número da linha final (baseado em 1).last_column(number): O número da coluna final (baseado em 1).cell_with_coord(boolean, opcional): Exibe células não vazias com suas respectivas coordenadas, adequado para situações em que a área de saída contém um grande número de células vazias.
set_sheet_range_content:- Descrição: Define o conteúdo da tabela dentro de um intervalo especificado em uma planilha específica. Abre e fecha automaticamente o arquivo Excel.
- Parâmetros:
sheet_name(string): O nome da planilha na qual escrever.first_row(number): O número da linha inicial (baseado em 1).first_column(number): O número da coluna inicial (baseado em 1).values(array[array]): A matriz 2D de valores a serem escritos no intervalo (suporta tipos null, boolean, number, string).
create_xlsx_file_by_absolute_path: (Nota: O nome da ferramenta é definido assim no código, mas a chave no JSON écreate_xlsx)- Descrição: Cria um novo arquivo xlsx com o caminho fornecido. Fecha automaticamente o arquivo Excel após a criação.
- Parâmetros:
file_path(string): O caminho ABSOLUTO onde o arquivo deve ser criado.
(Nota: O comportamento automático de abrir/fechar mencionado nas descrições das ferramentas é um detalhe de implementação interna e não requer atenção do usuário.)
Compilando o Projeto
Este projeto usa CMake para compilação. Recomenda-se instalar o Ninja para velocidades de compilação mais rápidas.
Passos de Compilação:
- Prepare o Ambiente:
- Certifique-se de ter um compilador C++17, CMake (>= 3.15) e Ninja instalados.
- Clone o repositório:
git clone https://github.com/smileFAace/MCP-ExcelAutoCpp.git
- Compile:
O executável compilado geralmente está localizado no diretório# 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 buildbin/.
Uso
Após a compilação bem-sucedida, encontre o executável chamado ExcelAutoCpp (Linux/macOS) ou ExcelAutoCpp.exe (Windows) no diretório ./bin/.
Inicie o Servidor
Basta executar o executável para iniciar o servidor MCP.
# Example (adjust path as needed)
./bin/ExcelAutoCpp
Quando você vir uma saída semelhante à seguinte, o servidor foi iniciado com sucesso e está ouvindo em 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
Conectando e Usando:
Este servidor segue o protocolo MCP. Você pode usar qualquer cliente compatível com MCP (como Roo, cline, claude, cherry studio, etc.) para conectar-se ao endpoint SSE do servidor (padrão: http://localhost:8888/sse) e invocar as ferramentas de automação do Excel fornecidas.
Por exemplo, para configurar este servidor MCP no cline, basta adicionar o seguinte conteúdo ao arquivo de configuração JSON do mcp fornecido pelo plugin após o servidor estar em execução com sucesso e, em seguida, atualizar:
{
"mcpServers": {
"excel-auto-cpp": {
"url": "http://localhost:8888/sse"
}
}
}
Alterando e Personalizando o Idioma do Servidor:
O servidor usa o inglês (en) como idioma padrão da interface. Você pode alterar o idioma criando um arquivo de idioma personalizado:
-
Localize o diretório que contém o executável do servidor (geralmente
bin/). -
Crie um arquivo de texto chamado
lang.jsonnesse diretório. -
Copie os pares chave-valor completos para o idioma desejado neste arquivo
lang.json.- Você pode consultar os arquivos
*.jsonno diretóriolang/do código-fonte do projeto como modelos (por exemplo,lang/zh-cn/lang.jsoncontém as traduções em chinês). - O arquivo
lang.jsonprecisa conter todas as entradas de tradução necessárias para a interface e os logs do programa.
- Você pode consultar os arquivos
-
Salve o arquivo
lang.jsone reinicie o servidor.- O servidor detectará e carregará automaticamente este arquivo na inicialização. Se carregado com sucesso, usará o idioma definido em
lang.json. - Se o arquivo
lang.jsonnão existir, estiver formatado incorretamente ou estiver faltando entradas de tradução necessárias, o servidor usará o inglês padrão (en) como fallback.
- O servidor detectará e carregará automaticamente este arquivo na inicialização. Se carregado com sucesso, usará o idioma definido em
Download
Você pode baixar a versão mais recente na página Releases.