excel-mcp

excel-mcp

An MCP server for performing Excel file operations including read, write, and manipulation, with enterprise security features and VS Code integration.

Category
Visit Server

README

Excel MCP Server

A Model Context Protocol (MCP) server for Excel operations with enterprise-grade security and clean architecture. Seamlessly integrates with GitHub Copilot, Cline, and other MCP-compatible tools in VS Code.

Features

  • Complete Excel Operations: Read, write, and manipulate Excel files (.xlsx, .xls)
  • Clean Architecture: Follows Single Responsibility Principle for maintainability
  • Enterprise Security: Robust permission system with path restrictions and access control
  • VS Code Integration: Works seamlessly with GitHub Copilot and Cline
  • TypeScript: Full type safety with modern ES2022+ features
  • Zero Deprecated Dependencies: Uses only current, actively maintained libraries

Quick Start

Installation

# Clone the repository
git clone https://github.com/az-coder-123/excel-mcp.git
cd excel-mcp

# Install dependencies
npm install

# Build the project
npm run build

# Copy example environment file
cp .env.example .env

📌 Đã cấu hình sẵn cho Cline

Server đã được cấu hình và kết nối sẵn với Cline! Xem Hướng dẫn cài đặt chi tiết để biết:

Trạng thái hiện tại: Đã kết nối và hoạt động bình thường

  • Server đang chạy: node dist/index.js
  • Cấu hình Cline: .cline/mcp_servers.json
  • File cấu hình đã sẵn sàng sử dụng

Xem ngay: docs/SETUP_GUIDE.md để biết cách sử dụng

Configuration

Edit .env file to customize permissions:

# Restrict access to specific directories
MCP_ALLOWED_PATHS=/home/user/documents,/workspace

# Block sensitive system directories
MCP_DENIED_PATHS=/etc/*,/sys/*,C:\Windows\*

# Set maximum file size (50MB default)
MCP_MAX_FILE_SIZE=52428800

VS Code Integration

For GitHub Copilot

Add to your VS Code settings.json:

{
  "github.copilot.chat.experimental.mcpServers": {
    "excel-mcp": {
      "command": "node",
      "args": ["/path/to/excel-mcp/dist/index.js"],
      "env": {
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

For Cline

Add to your Cline MCP configuration file (~/.config/cline/mcp_servers.json):

{
  "mcpServers": {
    "excel-mcp": {
      "command": "node",
      "args": ["/path/to/excel-mcp/dist/index.js"],
      "env": {
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

Available Tools

excel_health_check

Check server health, dependencies, and configuration status. This tool is useful for verifying that the MCP server is running correctly and all systems are operational.

{
}

No parameters required

Response Example:

{
  "status": "healthy",
  "server": {
    "name": "excel-mcp",
    "version": "1.0.0",
    "nodeVersion": "v18.0.0",
    "platform": "darwin",
    "arch": "arm64",
    "uptime": "5m 32s"
  },
  "dependencies": {
    "exceljs": "ok",
    "filesystem": "ok",
    "memory": "ok",
    "memoryUsage": {
      "heapUsed": "45MB",
      "heapTotal": "64MB",
      "rss": "78MB",
      "external": "2MB"
    }
  },
  "configuration": {
    "logLevel": "info",
    "maxFileSize": 52428800,
    "maxFileSizeMB": "50MB",
    "allowedPathsCount": 0,
    "deniedPathsCount": 4,
    "allowedExtensions": [".xlsx", ".xls", ".xlsm", ".xlsb"],
    "permissions": ["read", "write", "delete"]
  },
  "tests": {
    "permissionChecker": "pass",
    "logger": "pass",
    "excelOperations": "pass"
  },
  "responseTime": "45ms",
  "timestamp": "2024-03-21T12:34:56.789Z"
}

excel_open_workbook

Open an Excel file for operations.

{
  "filePath": "/path/to/file.xlsx"
}

excel_create_workbook

Create a new Excel workbook.

{
  "filename": "report",
  "outputPath": "/workspace"
}

excel_read_cell

Read a single cell value.

{
  "filename": "report.xlsx",
  "worksheet": "Sheet1",
  "cellAddress": "A1"
}

excel_read_range

Read multiple cells.

{
  "filename": "report.xlsx",
  "worksheet": "Sheet1",
  "startCell": "A1",
  "endCell": "C10"
}

excel_write_cell

Write a value to a cell.

{
  "filename": "report.xlsx",
  "worksheet": "Sheet1",
  "cellAddress": "A1",
  "value": "Hello World"
}

excel_list_worksheets

List all worksheets in a workbook.

{
  "filename": "report.xlsx"
}

excel_add_worksheet

Add a new worksheet.

{
  "filename": "report.xlsx",
  "worksheetName": "Summary"
}

excel_save_workbook

Save the workbook to disk.

{
  "filename": "report.xlsx",
  "outputPath": "/workspace/report-final.xlsx"
}

excel_close_workbook

Close an opened workbook.

{
  "filename": "report.xlsx"
}

excel_get_cell_info

Get detailed cell information including formulas.

{
  "filename": "report.xlsx",
  "worksheet": "Sheet1",
  "cellAddress": "B5"
}

Security Features

Permission Levels

  • read: Read-only access to Excel files
  • write: Create and modify Excel files
  • delete: Delete worksheets and clear data
  • admin: Full administrative access

Path Restrictions

Configure allowed and denied paths using wildcards:

# Allow only specific directories
MCP_ALLOWED_PATHS=/workspace/*,/home/user/documents/*

# Block sensitive system paths
MCP_DENIED_PATHS=/etc/*,/sys/*,/proc/*,C:\Windows\*

File Size Limits

Prevent processing of excessively large files:

MCP_MAX_FILE_SIZE=52428800  # 50MB

Extension Whitelist

Only process specific file types (configured by default):

  • .xlsx - Excel Workbook
  • .xls - Excel 97-2003 Workbook
  • .xlsm - Excel Macro-Enabled Workbook
  • .xlsb - Excel Binary Workbook

Architecture

excel-mcp/
├── src/
│   ├── index.ts                 # Application entry point
│   ├── types/
│   │   └── index.ts            # Type definitions
│   ├── security/
│   │   └── permission-checker.ts # Access control
│   ├── services/
│   │   └── excel-service.ts    # Excel operations
│   ├── tools/
│   │   ├── tool-definitions.ts # Tool schemas
│   │   └── tool-handler.ts     # Tool execution
│   ├── server/
│   │   └── excel-mcp-server.ts # MCP server core
│   └── utils/
│       └── logger.ts           # Logging utility
├── docs/
│   ├── ARCHITECTURE.md         # Architecture details
│   ├── API.md                  # API reference
│   ├── SECURITY.md             # Security guide
│   └── TROUBLESHOOTING.md      # Common issues
└── dist/                       # Compiled JavaScript

Design Principles

  1. Single Responsibility: Each class/module has one clear purpose
  2. Dependency Injection: Components are loosely coupled
  3. Type Safety: Full TypeScript coverage with strict mode
  4. Error Handling: Comprehensive error catching and reporting
  5. Security First: Permission checks before all operations

Development

Scripts

# Development with hot reload
npm run dev

# Build for production
npm run build

# Run tests
npm test

# Lint code
npm run lint

# Format code
npm run format

# Clean build artifacts
npm run clean

Project Structure

  • src/ - TypeScript source files
  • dist/ - Compiled JavaScript output
  • docs/ - Documentation
  • package.json - Dependencies and scripts
  • tsconfig.json - TypeScript configuration

Environment Variables

Variable Description Default
MCP_SERVER_NAME Server identifier excel-mcp
MCP_SERVER_VERSION Server version 1.0.0
MCP_LOG_LEVEL Logging verbosity info
MCP_ALLOWED_PATHS Comma-separated allowed paths All paths
MCP_DENIED_PATHS Comma-separated denied paths System paths
MCP_MAX_FILE_SIZE Maximum file size in bytes 52428800 (50MB)

Troubleshooting

Common Issues

"Permission denied" errors

  • Check your MCP_ALLOWED_PATHS configuration
  • Ensure the file isn't in a denied path
  • Verify you have the required permission level

"Workbook not opened" errors

  • Call excel_open_workbook before other operations
  • Check that the file path is correct
  • Ensure the file isn't corrupted

TypeScript compilation errors

  • Run npm install to ensure all dependencies are installed
  • Check Node.js version (requires >= 18.0.0)

For more troubleshooting help, see docs/TROUBLESHOOTING.md.

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please read our contributing guidelines and code of conduct.

Support

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured