Excel Analyser MCP
Leia e analise arquivos Excel (.xlsx) e CSV (.csv) com acesso escalável, em partes e específico por coluna, ideal para grandes conjuntos de dados.
Documentação
Excel Analyser MCP
Um servidor MCP em Node.js para ler e analisar arquivos Excel (.xlsx), CSV (.csv) e JSON (.json). Suporta múltiplos protocolos de transporte (stdio, HTTP, SSE) e foi projetado para acesso escalável, em blocos e específico por coluna/campo, tornando-o ideal para agentes de IA e fluxos de automação que precisam processar grandes conjuntos de dados com eficiência.
🚀 Início Rápido - Configuração
O Excel Analyser MCP suporta múltiplos protocolos de transporte: stdio (npm/CLI), HTTP streamable e SSE.
⚡ Servidor HTTP Pronto para Uso (Recomendado)
A maneira mais rápida de começar! Use nosso servidor implantado sem qualquer instalação:
Configuração do Cliente MCP (HTTP - Pronto para Uso):
{
"mcpServers": {
"Excel Analyser MCP": {
"type": "http",
"url": "https://web-production-64851.up.railway.app/mcp"
}
}
}
🎉 É isso! Nenhuma instalação necessária. Comece a analisar arquivos imediatamente.
📝 Exemplo de Prompt de Uso (HTTP - Use URLs na Nuvem):
Please analyze the Excel file at https://github.com/contactakagrawal/excel-analyser-mcp/raw/main/tests/dummy_excel_file.xlsx and show me the first few rows and column names.
⚠️ Importante para HTTP: Use URLs na nuvem (GitHub raw, links públicos do Google Drive, etc.) pois o servidor roda remotamente e não pode acessar seus arquivos locais.
Transporte NPM/Stdio (Auto-hospedado)
Perfeito para clientes MCP como Claude Desktop, Cursor e outras integrações baseadas em CLI.
Configuração do mcp.json:
{
"mcpServers": {
"Excel Analyser MCP": {
"command": "npx",
"args": ["-y", "excel-analyser-mcp"]
}
}
}
📝 Exemplo de Prompt de Uso (Stdio - Use Caminhos Locais):
Please analyze the Excel file at /Users/john/Documents/sales_data.xlsx and show me the first few rows and column names.
⚠️ Importante para Stdio: Use caminhos de arquivo locais absolutos pois o servidor roda na sua máquina e pode acessar seus arquivos locais diretamente.
Transporte HTTP (Auto-hospedado)
Ideal para aplicações web, integrações com API REST e implantações serverless.
Iniciar Servidor HTTP:
# Default: runs on http://localhost:8080/mcp
npx excel-analyser-mcp streamableHttp
# Custom port and endpoint
npx excel-analyser-mcp streamableHttp 3000 /excel-mcp
Configuração do Cliente MCP (HTTP):
{
"mcpServers": {
"Excel Analyser MCP": {
"type": "http",
"url": "http://localhost:8080/mcp"
}
}
}
📝 Exemplo de Prompt de Uso (HTTP Auto-hospedado - Use URLs Locais ou na Nuvem):
Please analyze the Excel file at /Users/john/Documents/sales_data.xlsx and show me the first few rows and column names.
⚠️ Importante para HTTP Auto-hospedado: Você pode usar caminhos absolutos locais ou URLs na nuvem pois seu servidor pode acessar tanto arquivos locais quanto URLs remotas.
Transporte SSE (Auto-hospedado)
Para aplicações de streaming em tempo real (obsoleto, mas ainda suportado).
Iniciar Servidor SSE:
# Default: runs on http://localhost:8080/sse
npx excel-analyser-mcp sse
# Custom port and endpoint
npx excel-analyser-mcp sse 3000 /excel-sse
Configuração do Cliente MCP (SSE):
{
"mcpServers": {
"Excel Analyser MCP": {
"type": "sse",
"url": "http://localhost:8080/sse"
}
}
}
Scripts de Desenvolvimento (Auto-hospedado)
npm run start # Default stdio transport
npm run start:stdio # Explicit stdio transport
npm run start:http # HTTP transport on port 8080
npm run start:sse # SSE transport on port 8080
Novidades na v2.1.0
- 🚀 Suporte Multi-Transporte: Agora suporta transportes stdio (npm), HTTP streamable e SSE para máxima flexibilidade
- 🔗 Transporte HTTP: Perfeito para aplicações web e integrações com API REST
- 📡 Transporte SSE: Capacidades de streaming em tempo real para casos de uso avançados
- ⚙️ Configuração Fácil: Argumentos simples de linha de comando para escolher seu transporte preferido
Novidades na v2.0.0
- Nova Ferramenta
query_json: Uma ferramenta poderosa e nova para pesquisar eficientemente grandes arquivos JSON com base em valores de campos. - Streaming Eficiente: Todas as ferramentas JSON (
read_json,query_json,get_json_chunk) foram re-arquitetadas para usar streaming. Isso significa que podem processar arquivos de tamanho gigabyte com uso mínimo de memória, prevenindo travamentos e garantindo escalabilidade.
Recursos
- Suporte Multi-Transporte: Escolha entre transportes stdio (npm), HTTP streamable ou SSE
- Leia arquivos Excel/CSV/JSON e produza todas ou colunas/campos selecionados como JSON
- Streaming Eficiente: Lide com arquivos JSON de vários gigabytes com uso de memória constante e baixo.
- Consulta JSON Poderosa: Pesquise e filtre rapidamente grandes arquivos JSON sem carregar o arquivo inteiro na memória.
- Acesso em Blocos: Processe grandes arquivos iterativamente buscando dados em blocos configuráveis.
- Filtragem por Coluna/Campo: Extraia apenas as colunas ou campos que você precisa.
- Integração com servidor MCP: Exponha ferramentas para agentes de IA e automação.
Começando
Pré-requisitos
- Node.js (v18 ou superior recomendado)
Instalação
npm install
yarn install # or your preferred package manager
Executando o Servidor MCP
node excel-analyser-mcp.js
Ou configure seu agente MCP para iniciar este arquivo com Node.js e --stdio.
Ferramentas MCP
1. read_excel
Descrição: Lê um arquivo Excel ou CSV e retorna uma prévia (primeiras 100 linhas) e metadados para arquivos grandes, ou os dados completos para arquivos pequenos.
Parâmetros:
filePath(string, obrigatório): Caminho para o arquivo Excel ou CSV no disco (.xlsx ou .csv)columns(array de strings, opcional): Colunas a incluir na saída. Se não especificado, todas as colunas são incluídas.
Retorna:
- Para arquivos grandes:
{ preview: [...], totalRows, columns, message } - Para arquivos pequenos: Dados completos como um array
Exemplo de Solicitação:
{
"filePath": "./your_data.csv",
"columns": ["description", "category"]
}
2. get_chunk
Descrição: Busca um bloco de linhas de um arquivo CSV ou Excel, com filtragem opcional de colunas. Útil para processar arquivos grandes em lotes.
Parâmetros:
filePath(string, obrigatório): Caminho para o arquivo Excel ou CSV no disco (.xlsx ou .csv)columns(array de strings, opcional): Colunas a incluir na saídastart(inteiro, opcional, padrão 0): Índice da linha para começar (baseado em 0)limit(inteiro, opcional, padrão 1000): Número de linhas a retornar no bloco
Retorna:
{ chunk: [...], start, limit, totalRows }
Exemplo de Solicitação:
{
"filePath": "./your_data.csv",
"columns": ["description"],
"start": 0,
"limit": 1000
}
Exemplo de Resposta:
{
"chunk": [
{ "description": "Customer cannot login..." },
{ "description": "Payment failed for order..." }
// ... up to 1000 rows
],
"start": 0,
"limit": 1000,
"totalRows": 58635
}
3. read_json
Descrição: Lê eficientemente um arquivo JSON grande para fornecer uma prévia rápida (primeiras 100 entradas) e metadados sem carregar o arquivo inteiro na memória. Este é o primeiro passo recomendado para analisar um novo arquivo JSON.
Parâmetros:
filePath(string, obrigatório): Caminho para o arquivo JSON no disco (.json)fields(array de strings, opcional): Campos a incluir na saída. Se não especificado, todos os campos são incluídos.
Retorna:
- Para arquivos grandes (>1000 entradas):
{ preview: [...], totalEntries, fields, message } - Para arquivos pequenos: Dados completos como um array
Exemplo de Solicitação:
{
"filePath": "./employees.json",
"fields": ["name", "department", "salary"]
}
Exemplo de Resposta (arquivo grande):
{
"JSON": {
"preview": [
{ "name": "John Doe", "department": "Engineering", "salary": 75000 },
{ "name": "Jane Smith", "department": "Marketing", "salary": 65000 }
// ... up to 100 entries
],
"totalEntries": 15000,
"fields": ["id", "name", "email", "age", "department", "salary"],
"message": "Data is too large to return in one response. Use get_json_chunk for paginated access or query_json to search."
}
}
4. query_json
Descrição: Realiza uma pesquisa rápida e eficiente em memória em um arquivo JSON grande. Ele transmite o arquivo e retorna todas as entradas que correspondem à consulta especificada, até um limite de 1000 resultados. Esta é a ferramenta ideal para encontrar dados específicos em um grande conjunto de dados.
Parâmetros:
filePath(string, obrigatório): Caminho para o arquivo JSON no disco (.json).query(objeto, obrigatório): A consulta a executar nos dados JSON.field(string): O campo a consultar (ex.: 'trading_symbol').operator(enum): O operador da consulta. Pode sercontains,equals,startsWithouendsWith.value(string): O valor a comparar.
Retorna:
{ matches: [...], matchCount, totalEntriesScanned, message }
Exemplo de Solicitação:
{
"filePath": "/path/to/your/large_dataset.json",
"query": {
"field": "trading_symbol",
"operator": "contains",
"value": "TITAN"
}
}
Exemplo de Resposta:
{
"matches": [
{ "instrument_key": "NSE_EQ|INE280A01028", "trading_symbol": "TITAN" },
{ "instrument_key": "NSE_EQ|INE280A01029", "trading_symbol": "TITANBEES" }
],
"matchCount": 2,
"totalEntriesScanned": 2500000,
"message": "Query returned 2 matching entries."
}
5. get_json_chunk
Descrição: Busca um bloco específico de entradas de um arquivo JSON. Esta ferramenta é projetada para análise iterativa, onde você precisa processar cada entrada do arquivo sequencialmente, um bloco por vez. Ela usa streaming eficiente para acessar o bloco solicitado sem reler o arquivo inteiro.
Parâmetros:
filePath(string, obrigatório): Caminho para o arquivo JSON no disco (.json)fields(array de strings, opcional): Campos a incluir na saídastart(inteiro, opcional, padrão 0): Índice da entrada para começar (baseado em 0)limit(inteiro, opcional, padrão 1000): Número de entradas a retornar no bloco
Retorna:
{ chunk: [...], start, limit, totalEntries }
Exemplo de Solicitação:
{
"filePath": "./large_dataset.json",
"fields": ["id", "name", "status"],
"start": 0,
"limit": 1000
}
Exemplo de Resposta:
{
"chunk": [
{ "id": 1, "name": "John Doe", "status": "active" },
{ "id": 2, "name": "Jane Smith", "status": "inactive" }
// ... up to 1000 entries
],
"start": 0,
"limit": 1000,
"totalEntries": 15000
}
Como Escolher a Ferramenta JSON Correta
Use este guia para selecionar a ferramenta mais eficiente para sua tarefa:
-
Para explorar um novo arquivo JSON:
- 1º: Use
read_json. Ele fornecerá o número total de entradas, todos os campos disponíveis e uma prévia das primeiras 100 entradas.
- 1º: Use
-
Para encontrar dados específicos:
- Use
query_json. É a maneira mais rápida e eficiente em memória de pesquisar entradas que correspondem a uma condição específica (ex.: encontrar todos os usuários ondestatuséactive).
- Use
-
Para processar cada entrada:
- Use
get_json_chunk. Isso é para quando você precisa executar uma ação em cada entrada do arquivo, como categorizar tickets de suporte ou realizar um cálculo complexo. Chame-o em um loop, incrementando o parâmetrostart, até processar todas astotalEntries.
- Use
Uso com Agentes de IA
- Configure seu agente de IA (ex.: Cursor AI, Copilot) para conectar-se a este servidor MCP.
- Use
read_excelouread_jsonpara uma prévia rápida e metadados. - Use
get_chunkouget_json_chunkpara iterar por arquivos grandes em lotes para análise escalável. - Arquivos JSON com mais de 1000 entradas usam automaticamente paginação para desempenho ideal.
Exemplo de Uso
Aqui está um exemplo de como você pode usar este servidor MCP com um agente de IA para analisar arquivos.
Importante: O servidor MCP requer caminhos de arquivo absolutos por razões de segurança e confiabilidade.
Analisando um Arquivo Excel/CSV
Cenário: Você quer obter um resumo de dummy_excel_file.xlsx.
1. Solicitação Inicial ao Agente de IA:
Você: Pode analisar o arquivo em
/home/john/documents/dummy_excel_file.xlsxe me dar os nomes das colunas e as primeiras linhas?
2. O Agente de IA usa a ferramenta read_excel:
O agente faria uma chamada de ferramenta semelhante a esta:
{
"tool_name": "read_excel",
"parameters": {
"filePath": "/home/john/documents/dummy_excel_file.xlsx"
}
}
3. Resposta do Servidor MCP:
Se o arquivo for grande, o servidor retornará uma prévia:
{
"preview": [
{ "ID": 1, "Name": "John Doe", "Sales": 1500 },
{ "ID": 2, "Name": "Jane Smith", "Sales": 2200 }
],
"totalRows": 10500,
"columns": ["ID", "Name", "Sales"],
"message": "File is large. Returning a preview of the first 100 rows."
}
Pesquisando um Arquivo JSON Grande
Cenário: Você quer encontrar todas as ações com "TITAN" em seu símbolo de negociação em um arquivo JSON muito grande.
1. Solicitação Inicial ao Agente de IA:
Você: Pode encontrar todas as entradas em
/data/NSE.jsononde otrading_symbolcontémTITAN?
2. O Agente de IA usa a ferramenta query_json:
{
"tool_name": "query_json",
"parameters": {
"filePath": "/data/NSE.json",
"query": {
"field": "trading_symbol",
"operator": "contains",
"value": "TITAN"
}
}
}
3. Resposta do Servidor MCP:
{
"matches": [
{ "instrument_key": "NSE_EQ|INE280A01028", "trading_symbol": "TITAN" }
],
"matchCount": 1,
"totalEntriesScanned": 2500000,
"message": "Query returned 1 matching entries."
}
Analisando um Arquivo JSON Iterativamente
Cenário: Você quer analisar um grande conjunto de dados JSON de registros de funcionários, bloco por bloco.
1. Solicitação Inicial ao Agente de IA:
Você: Pode analisar os dados de funcionários em
/home/john/data/employees.jsone me mostrar o primeiro bloco?
2. O Agente de IA usa a ferramenta get_json_chunk:
{
"tool_name": "get_json_chunk",
"parameters": {
"filePath": "/home/john/data/employees.json",
"start": 0,
"limit": 1000
}
}
3. Resposta para Arquivo JSON Grande:
{
"chunk": [
{ "id": 1, "name": "John Doe", "status": "active" }
],
"start": 0,
"limit": 1000,
"totalEntries": 15000
}
🚀 Implantação na Nuvem
Implante seu servidor MCP na internet para que outros possam usá-lo via transporte HTTP!
Implantação Rápida no Railway
- Faça fork/clone deste repositório
- Conecte ao Railway: railway.app → Novo Projeto → Implantar do GitHub
- Acesse seu servidor:
https://your-app.railway.app/mcp
Use Seu Servidor Implantado
{
"mcpServers": {
"Excel Analyser MCP (Cloud)": {
"type": "http",
"url": "https://your-app.railway.app/mcp"
}
}
}
📖 Guia completo de implantação: Veja docs/DEPLOYMENT.md para instruções detalhadas, considerações de segurança e plataformas alternativas.
📚 Documentação
Documentação adicional está disponível no diretório docs/:
docs/DEPLOYMENT.md- Guia completo de implantação para Railway e outras plataformas de nuvemdocs/URL_SUPPORT.md- Guia para adicionar suporte a URL para lidar com acesso a arquivos baseados em nuvem
Notas
- Tipos de arquivo suportados: Arquivos
.xlsx,.csve.json - Requisitos de arquivos JSON: Devem conter um array de objetos
- Arquivos Excel: Apenas a primeira planilha é usada por padrão em operações em blocos
- Paginação automática: Arquivos JSON com >1000 entradas usam automaticamente paginação
- Tamanhos de bloco: Padrão de 1000 para desempenho ideal, configurável por solicitação
- Tratamento de erros: Mensagens de erro abrangentes para arquivo não encontrado, formatos inválidos, etc.
Testes
O projeto inclui arquivos de teste para funcionalidade Excel/CSV e JSON no diretório tests/:
tests/test-readExcelFile.js- Testar funcionalidade de leitura Excel/CSVtests/test-readJsonFile.js- Testar funcionalidade de leitura JSONtests/test-http-transport.js- Testar conectividade do transporte HTTPtests/test-deployment.js- Testar funcionalidade do servidor implantadotests/test-data.json- Arquivo JSON de amostra para testestests/dummy_excel_file.xlsx- Arquivo Excel de amostra para testes Para executar os testes:
# Test file processing
npm test # Excel/CSV test
npm run test-json # JSON test
npm run test-all # All file processing tests
# Test HTTP transport (requires server running)
npm run start:http # Terminal 1: Start HTTP server
npm run test-http # Terminal 2: Test HTTP connectivity
# Test deployed server
npm run test-deployment https://your-deployed-url.com
Feedback e Suporte
Valorizamos seu feedback e estamos comprometidos em melhorar o Excel Analyser MCP. Aqui estão várias formas de entrar em contato:
🐛 Encontrou um Bug?
- GitHub Issues: Relate bugs aqui
- Por favor, inclua:
- Passos para reproduzir o problema
- Comportamento esperado versus comportamento real
- Tipo e tamanho do arquivo (se aplicável)
- Mensagens de erro ou logs
💡 Solicitações de Recursos e Melhorias
- GitHub Issues: Solicite recursos aqui
- GitHub Discussions: Inicie uma discussão para ideias e feedback geral
📝 Feedback Geral
- E-mail: contactakagrawal@gmail.com
- GitHub Discussions: Feedback geral
🤝 Contribuindo
Aceitamos contribuições! Consulte nossas Diretrizes de Contribuição para mais informações sobre como:
- Enviar pull requests
- Relatar problemas
- Sugerir melhorias
- Ajudar com a documentação
⭐ Mostre Seu Apoio
Se você achar este projeto útil, considere:
- Dar uma ⭐ estrela no GitHub
- Compartilhar com outras pessoas que possam se beneficiar
- Contribuir com o código
Licença
ISC