Skip to main content
Glama

xlwings Excel MCP Server

by hyunjae-labs
CHANGELOG.md8.25 kB
# Changelog All notable changes to the xlwings-mcp-server project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.0.0] - 2025-08-31 ### 🎉 **MAJOR RELEASE** - Production Ready This release marks the completion of Issue #2 and achieves Katherine Johnson zero-error compliance. The xlwings-mcp-server is now production-ready with a robust session-based architecture. ### ✨ Added #### Session Management System - **ExcelSessionManager**: Singleton pattern with thread-safe session management - **Session-based Architecture**: Persistent Excel workbook sessions for optimal performance - **TTL-based Cleanup**: Automatic session expiration (default: 600 seconds) - **LRU Eviction Policy**: Smart session management with configurable limits (default: 8 sessions) - **Per-session Locking**: Thread-safe operations with `threading.RLock` - **Shutdown Hooks**: Automatic session cleanup on server termination #### New MCP Tools - `open_workbook(filepath, visible=False, read_only=False)`: Create and manage Excel sessions - `close_workbook(session_id)`: Graceful session termination with optional saving - `list_workbooks()`: List all active sessions with metadata - `force_close_workbook_by_path(filepath)`: Emergency recovery for stuck Excel processes #### Enhanced Worksheet Management - `create_worksheet(session_id, sheet_name)`: Create new worksheets within sessions - `copy_worksheet(session_id, source_sheet, target_sheet)`: Copy worksheets within workbooks - `rename_worksheet(session_id, old_name, new_name)`: Rename existing worksheets - `delete_worksheet(session_id, sheet_name)`: Remove worksheets with validation #### Advanced Excel Features - **Chart Creation**: Support for 8 official Microsoft XlChartType constants - Column, Bar, Line, Pie, Area, Scatter, Bubble, Radar charts - **Excel Tables**: Native Excel table creation with styling options - **Cell Formatting**: Comprehensive formatting with W3C CSS3 standard colors - **Formula Validation**: Syntax checking before formula application - **Range Operations**: Advanced cell merging, copying, and deletion #### Error Handling & Reliability - **Standardized Error Templates**: Consistent error messaging across all functions - `SESSION_NOT_FOUND`: Clear session expiry notifications - `FILE_LOCKED`: File access conflict resolution - `SESSION_TIMEOUT`: TTL-based cleanup notifications - **Comprehensive Exception Handling**: Graceful error recovery - **Input Validation**: Robust parameter validation for all MCP tools ### 🔧 Changed #### Breaking Changes - **session_id Parameter**: Now **required** for all Excel operations (Breaking Change) - **Parameter Order**: `session_id` moved to first position in all function signatures - **Removed Legacy Support**: `filepath` parameter removed from all functions - **API Consistency**: Unified function signatures across all MCP tools #### Performance Improvements - **Session Reuse**: Eliminated Excel restart overhead between operations - **Connection Pooling**: Optimized COM object management - **Memory Efficiency**: Proactive cleanup of Excel processes - **Reduced Latency**: Sub-second response times for most operations #### Code Quality - **Import Path Corrections**: Fixed all worksheet function imports (`workbook_xlw` → `sheet_xlw`) - **Removed Code Duplication**: Eliminated duplicate function definitions - **Standardized Naming**: Consistent function and parameter naming - **Enhanced Documentation**: Comprehensive docstrings and type hints ### 🐛 Fixed #### Critical Bug Fixes - **TTL Attribute Error**: Fixed `self.ttl` → `self._ttl` access issue - **Session Attribute Inconsistency**: Unified `last_access` → `last_accessed` naming - **Import Resolution**: Corrected module import paths for worksheet functions - **Chart Type Constants**: Fixed Excel chart type mappings to official Microsoft values - **COM Interface Errors**: Resolved Excel COM API compatibility issues #### Runtime Issues - **Module Cache Problems**: Resolved Python import cache conflicts - **MCP Server Integration**: Fixed runtime cache issues requiring server restart - **Session Lifecycle**: Corrected session creation and cleanup race conditions - **Error Message Formatting**: Fixed string formatting in error templates ### 📊 Testing & Validation #### Comprehensive Test Coverage - **100% MCP Function Coverage**: All 17 MCP tools tested and validated - **Session Lifecycle Testing**: Complete session management workflow verification - **Performance Benchmarks**: Sub-1-second operation timing validated - **Error Recovery Testing**: Comprehensive failure scenario coverage - **Integration Testing**: Full MCP protocol compatibility verification #### Quality Assurance - **Katherine Johnson Zero-Error Principle**: Achieved 100% test success rate - **Production Readiness**: Validated in real Excel environments - **Stress Testing**: Multi-session concurrent operation verification - **Memory Leak Prevention**: Resource cleanup validation ### 🏗️ Technical Improvements #### Architecture Enhancements - **Singleton Pattern**: Robust ExcelSessionManager implementation - **Thread Safety**: Comprehensive locking mechanisms - **Resource Management**: Intelligent cleanup and eviction policies - **Error Recovery**: Automatic session recovery capabilities #### Development Workflow - **Enhanced .gitignore**: Proper documentation file tracking - **Version Management**: Synchronized version numbers across all modules - **Documentation Standards**: Professional README.md and CHANGELOG.md - **Code Organization**: Clean module structure and imports ### 📋 Migration Guide #### From v0.1.x to v1.0.0 **⚠️ Breaking Changes - Action Required** 1. **Update Function Calls**: Add `session_id` parameter to all Excel operations ```python # OLD (v0.1.x) write_data_to_excel(filepath="file.xlsx", sheet_name="Sheet1", data=data) # NEW (v1.0.0) session = open_workbook(filepath="file.xlsx") session_id = session["session_id"] write_data_to_excel(session_id=session_id, sheet_name="Sheet1", data=data) close_workbook(session_id=session_id) ``` 2. **Remove filepath Parameters**: All functions now use session-based access ```python # OLD - No longer supported apply_formula(filepath="file.xlsx", ...) # NEW - Session required apply_formula(session_id=session_id, ...) ``` 3. **Update Environment Variables**: New session management configuration ```bash # New configuration options EXCEL_MCP_SESSION_TTL=600 EXCEL_MCP_MAX_SESSIONS=8 ``` ### 🔮 Future Roadmap #### Planned Features (v1.1.0) - **Cross-platform Support**: macOS and Linux compatibility investigation - **Advanced Chart Types**: Additional visualization options - **Bulk Operations**: Multi-workbook batch processing - **Data Connectors**: Database and API integration capabilities #### Long-term Vision (v2.0.0) - **Cloud Integration**: Azure/Office 365 compatibility - **Real-time Collaboration**: Multi-user session support - **Advanced Analytics**: Built-in data analysis tools - **Plugin Architecture**: Extensible functionality framework --- ### 🏆 Achievement Summary This release represents a complete transformation of the xlwings-mcp-server from a prototype to a production-ready Excel automation solution. Key achievements: - **Zero-Error Compliance**: Katherine Johnson principle achieved - **100% Test Coverage**: All functions validated and working - **Performance Excellence**: Optimized for high-throughput operations - **Enterprise Ready**: Robust error handling and resource management - **Community Ready**: Comprehensive documentation and examples ### 📞 Support & Community - **Issues**: [GitHub Issues](https://github.com/yourusername/xlwings-mcp-server/issues) - **Discussions**: [GitHub Discussions](https://github.com/yourusername/xlwings-mcp-server/discussions) - **Documentation**: Full API reference and examples available - **Community**: Join the Excel automation community --- **🎯 xlwings-mcp-server v1.0.0 - Where Excel meets AI-powered automation**

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/hyunjae-labs/xlwings-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server