excel-mcp
An MCP server for performing Excel file operations including read, write, and manipulation, with enterprise security features and VS Code integration.
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
- 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 clean
Project Structure
src/- TypeScript source filesdist/- Compiled JavaScript outputdocs/- Documentationpackage.json- Dependencies and scriptstsconfig.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_PATHSconfiguration - Ensure the file isn't in a denied path
- Verify you have the required permission level
"Workbook not opened" errors
- Call
excel_open_workbookbefore other operations - Check that the file path is correct
- Ensure the file isn't corrupted
TypeScript compilation errors
- Run
npm installto 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
- GitHub Issues: Report bugs
- Documentation: Full docs
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。