Excel Reader
STDIOMCP server for reading Excel files with automatic chunking and pagination support.
MCP server for reading Excel files with automatic chunking and pagination support.
A Model Context Protocol (MCP) server for reading Excel files with automatic chunking and pagination support. Built with SheetJS and TypeScript, this tool helps you handle large Excel files efficiently by automatically breaking them into manageable chunks.
To install Excel Reader for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @ArchimedesCrypto/excel-reader-mcp-chunked --client claude
npm install -g @archimdescrypto/excel-reader
~/.config/claude/settings.json
or equivalent):{ "mcpServers": { "excel-reader": { "command": "excel-reader", "env": {} } } }
git clone https://github.com/ArchimdesCrypto/mcp-excel-reader.git cd mcp-excel-reader
npm install
npm run build
The Excel Reader provides a single tool read_excel
with the following parameters:
interface ReadExcelArgs { filePath: string; // Path to Excel file sheetName?: string; // Optional sheet name (defaults to first sheet) startRow?: number; // Optional starting row for pagination maxRows?: number; // Optional maximum rows to read } // Response format interface ExcelResponse { fileName: string; totalSheets: number; currentSheet: { name: string; totalRows: number; totalColumns: number; chunk: { rowStart: number; rowEnd: number; columns: string[]; data: Record<string, any>[]; }; hasMore: boolean; nextChunk?: { rowStart: number; columns: string[]; }; }; }
When used with Claude or another MCP-compatible AI:
Read the Excel file at path/to/file.xlsx
The AI will use the tool to read the file, automatically handling chunking for large files.
Automatic Chunking
Sheet Selection
Row Pagination
Error Handling
The Excel Reader is built on SheetJS and can be extended with its powerful features:
Formula Handling
// Enable formula parsing const wb = XLSX.read(data, { cellFormula: true, cellNF: true });
Cell Formatting
// Access cell styles and formatting const styles = Object.keys(worksheet) .filter(key => key[0] !== '!') .map(key => ({ cell: key, style: worksheet[key].s }));
Data Validation
// Access data validation rules const validation = worksheet['!dataValidation'];
Sheet Features
worksheet['!merges']
worksheet['!rows']
, worksheet['!cols']
worksheet['!protect']
For more features and detailed documentation, visit the SheetJS Documentation.
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)This project is licensed under the MIT License - see the LICENSE file for details.