excel-mcp
Integrates with GitHub Copilot to allow performing Excel operations through natural language prompts in VS Code, such as reading, writing, and manipulating Excel files.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@excel-mcpread the first row of Sheet1 in data.xlsx"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.jsCấu hình Cline:
.cline/mcp_servers.jsonFile 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=52428800VS 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 # 50MBExtension 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 JavaScriptDesign Principles
Single Responsibility: Each class/module has one clear purpose
Dependency Injection: Components are loosely coupled
Type Safety: Full TypeScript coverage with strict mode
Error Handling: Comprehensive error catching and reporting
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 cleanProject Structure
src/- TypeScript source filesdist/- Compiled JavaScript outputdocs/- Documentationpackage.json- Dependencies and scriptstsconfig.json- TypeScript configuration
Environment Variables
Variable | Description | Default |
| Server identifier |
|
| Server version |
|
| Logging verbosity |
|
| Comma-separated allowed paths | All paths |
| Comma-separated denied paths | System paths |
| Maximum file size in bytes |
|
Troubleshooting
Common Issues
"Permission denied" errors
Check your
MCP_ALLOWED_PATHSconfigurationEnsure the file isn't in a denied path
Verify you have the required permission level
"Workbook not opened" errors
Call
excel_open_workbookbefore other operationsCheck that the file path is correct
Ensure the file isn't corrupted
TypeScript compilation errors
Run
npm installto ensure all dependencies are installedCheck 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
GitHub Issues: Report bugs
Documentation: Full docs
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/az-coder-123/excel-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server