* docs: Update specs to reflect verified Data Model table rename limitation VERIFIED FINDING (2025-12-20): - ModelTable.Name is READ-ONLY in Excel COM API - Direct assignment throws TargetParameterCountException (HResult: 0x8002000E) - No workaround exists (tested: PQ rename, connection rename, refresh, save/reopen) Updated files: - research.md: Decision 2 corrected - rename is NOT POSSIBLE - spec.md: User Story 2 now expects error message, not success - data-model.md: Added Known Limitations section - plan.md: Phase 4 simplified to attempt + return clear error - tasks.md: US2 tasks simplified (no fallback logic) - quickstart.md: Added limitation caveat for Data Model rename * feat: Add Rename operations for Power Query and Data Model tables This feature adds rename capabilities to both Power Query and Data Model tools: - New 'Rename' action in excel_powerquery MCP tool - New 'powerquery rename' CLI command - Validates: empty names, no-op (same name), duplicate conflicts - Case-insensitive conflict detection - 10 integration tests covering all scenarios - New 'RenameTable' action in excel_datamodel MCP tool - New 'datamodel rename-table' CLI command - Handles Excel COM limitation: ModelTable.Name is read-only - For PQ-backed tables: renames underlying query, returns clear error explaining table name is cached - For non-PQ tables: returns clear error about immutability - 12 integration tests covering edge cases - RenameNameRules.cs: Shared validation (Normalize, IsEmpty, IsNoOp, HasConflict) - COM object cleanup in finally blocks per CRITICAL-RULES - Exception propagation via batch.Execute() pattern - 6 MCP contract tests + 2 smoke tests added - Operation counts: MCP 180->182, CLI 172->174 - All READMEs updated (root, MCP Server, CLI, VS Code extension, gh-pages) - FEATURES.md updated with new operations - Quickstart examples for both CLI and MCP usage Resolves spec: 001-rename-queries-tables All 33 tasks complete (T001-T033) * docs: Mark all tasks complete after implementation recovery * fix: Increase session close timeouts to handle large files The STA thread join timeout (10s) was shorter than the Excel.Quit() timeout (30s), causing Dispose() to return before Excel finished closing. This resulted in intermittent 'file still open' issues when session close was reported. Changes: - Excel.Quit() timeout: 30s -> 2 minutes (handles large file saves) - STA thread join timeout: 10s -> 2.5 minutes (quit timeout + margin) --------- Co-authored-by: Stefan Broenner <stefan.broenner@microsoft.comm>
9.8 KiB
ExcelMcp - Complete Feature Reference
12 specialized tools with 182 operations for comprehensive Excel automation
📁 File Operations (6 operations)
- List Sessions: View all active Excel sessions
- Open: Open workbook and create session (returns session ID for all subsequent operations)
- Close: Close session with optional save
- Close Workbook: Close workbook without closing Excel
- Create Empty: Create new .xlsx or .xlsm workbook
- Test: Verify workbook can be opened and is accessible
🔄 Power Query & M Code (10 operations)
Atomic Operations - Single-call workflows:
- List: List all Power Query queries in workbook
- View: View the M code of a Power Query
- Create: Import + load in one operation (atomic workflow)
- Update: Update M code and auto-refresh
- Rename: Rename a Power Query (trim + case-insensitive uniqueness check)
- Refresh: Refresh a Power Query with timeout detection
- Refresh All: Batch refresh all queries in workbook
- Load To: Configure load destination and refresh (atomic)
- Get Load Config: Get current load configuration
- Delete: Remove Power Query from workbook
📊 Data Model & DAX (Power Pivot) (17 operations)
- List Tables: Discover all tables in the Data Model
- Read Table: Get specific table information
- Rename Table: Rename a Data Model table (best-effort via Power Query; returns clear error if not supported)
- List Columns: List columns for a table
- List Measures: List all DAX measures
- Read Info: Get comprehensive model information
- Create Measure: Create new DAX measure (with format types: Currency, Percentage, Decimal, General)
- Update Measure: Modify existing measure
- Delete Measure: Remove measure from model
- Delete Table: Remove table from Data Model
- List Relationships: View all table relationships
- Read Relationship: Get specific relationship info
- Create Relationship: Create relationship between tables
- Update Relationship: Modify relationship (toggle active/inactive)
- Delete Relationship: Remove relationship
- Refresh: Refresh entire Data Model
- List Workbook Connections: List Power Query sources available for integration
Note: DAX calculated columns not supported - use Excel UI for calculated columns
🎨 Excel Tables (ListObjects) (24 operations)
Lifecycle:
- List, read, create, rename, resize, delete tables
Styling & Formatting:
- Apply table styles
- Toggle totals row
- Set column totals
Data Operations:
- Append rows
- Get table data (with optional visible-only filtering)
- Add to Data Model
Filter Operations:
- Apply filter (criteria)
- Apply filter (values)
- Clear filters
- Get filter state
Column Management:
- Add, remove, rename columns
Structured References:
- Get structured reference (formula syntax for table columns/ranges)
Sorting:
- Single-column sort
- Multi-column sort (up to 3 levels)
Number Formatting:
- Get column number formats
- Set column number formats
📈 PivotTables (30 operations)
Creation:
- Create from range
- Create from Excel Table
- Create from Data Model
Field Management:
- List all fields (row, column, value, filter areas)
- Add row field, column field, value field, filter field
- Remove field
Field Configuration:
- Set field aggregation function (Sum, Average, Count, Min, Max, etc.)
- Set custom field name
- Set field number format
- Set field filter criteria
- Sort field (ascending/descending)
Calculated Fields (Regular PivotTables):
- List calculated fields
- Create calculated field
- Delete calculated field
Calculated Members (OLAP/Data Model PivotTables):
- List calculated members
- Create calculated member
- Delete calculated member
Layout & Formatting:
- Set layout (table or outline)
- Set subtotals display
- Set grand totals display
Data Operations:
- Get PivotTable data as 2D array
- Refresh PivotTable
Lifecycle:
- List PivotTables
- Read PivotTable info
- Delete PivotTable
📉 Charts (14 operations)
Creation:
- Create from range
- Create from PivotTable
Series Management:
- Add series
- Remove series
- Update series data
Configuration:
- Set data source range
- Set chart type
- Show/hide legend
- Set style
Formatting:
- Set chart title
- Set axis title
- Set axis properties
- Set plot area properties
Lifecycle:
- List charts
- Read chart info
- Move chart (to different worksheet or new sheet)
- Delete chart
📋 Ranges (42 operations)
Data Operations:
- Get values
- Set values
- Get formulas
- Set formulas
- Clear all
- Clear contents
- Clear formats
- Copy
- Copy values
- Copy formulas
- Insert cells
- Delete cells
- Insert rows
- Delete rows
- Insert columns
- Delete columns
- Find
- Replace
- Sort
Discovery & Utilities:
- Get used range
- Get current region
- Get range info (address, dimensions)
Hyperlinks:
- Add hyperlink
- Remove hyperlink
- List hyperlinks
- Get specific hyperlink
Number Formatting:
- Get number formats (as 2D array)
- Set number format (uniform)
- Set number formats (individual)
Visual Formatting:
- Get style
- Set style (built-in Excel styles)
- Format range (font, color, borders, alignment, orientation)
Data Validation:
- Add validation rules (dropdowns, number/date/text rules)
- Get validation info
- Remove validation
Merge Operations:
- Merge cells
- Unmerge cells
- Get merge info
Cell Protection:
- Set cell lock status
- Get cell lock status
Auto-Sizing:
- Auto-fit columns
- Auto-fit rows
📄 Worksheets (16 operations)
Lifecycle:
- List worksheets
- Create worksheet
- Rename worksheet
- Copy worksheet
- Move worksheet
- Delete worksheet
Cross-Workbook Operations:
- Copy worksheet to file (atomic)
- Move worksheet to file (atomic)
Tab Colors:
- Set tab color (RGB)
- Get tab color
- Clear tab color
Visibility:
- Show worksheet
- Hide worksheet
- Very hide worksheet (hidden from UI)
- Get visibility status
- Set visibility status
🔌 Data Connections (9 operations)
- List: View all data connections
- View: Get connection details
- Create: Create OLEDB/ODBC connections (requires provider installed)
- Test: Verify connection validity
- Refresh: Refresh connection data
- Delete: Remove connection
- Load To: Load connection data to worksheet (when supported)
- Get Properties: Get connection string and metadata
- Set Properties: Update connection string, command text, and settings
Supported Types:
- OLEDB (requires Microsoft.ACE.OLEDB.16.0 or similar)
- ODBC (requires ODBC driver installed)
- Power Query connections (atomic redirect to excel_powerquery)
Automatic Fallback:
- TEXT/WEB connections automatically redirect to excel_powerquery for reliable imports
🏷️ Named Ranges (Parameters) (6 operations)
- List: List all named ranges with references
- Read: Get value of a named range
- Write: Set value of a named range (ideal for parameter automation)
- Create: Create new named range
- Update: Modify existing named range
- Delete: Remove named range
Use Cases:
- Workbook parameter management without touching worksheets
- Ideal for automation: update parameter → Power Query refreshes automatically
📝 VBA Macros (6 operations)
- List: List all VBA modules and procedures
- View: Display module code without exporting
- Import: Add VBA module from file
- Update: Modify existing VBA module
- Delete: Remove VBA module
- Run: Execute macro with optional parameters
Features:
- Version control through file exports
- Parameter passing to macros
- Full module lifecycle management
🎨 Conditional Formatting (2 operations)
- Add Rule: Create conditional formatting rules
- Cell value comparisons (>, <, =, etc.)
- Expression-based formulas (custom DAX/Excel formulas)
- Color scales, data bars, icons
- Clear Rules: Remove formatting from ranges
📊 Total Operations Summary
| Category | Operations |
|---|---|
| File Operations | 6 |
| Power Query | 10 |
| Data Model/DAX | 17 |
| Excel Tables | 24 |
| PivotTables | 30 |
| Charts | 14 |
| Ranges | 42 |
| Worksheets | 16 |
| Connections | 9 |
| Named Ranges | 6 |
| VBA Macros | 6 |
| Conditional Formatting | 2 |
| Total | 182 |
🚀 Key Capabilities
Data Transformation:
- Comprehensive Power Query M code management
- Atomic import + load workflows
- Calculated fields and members for analysis
Data Model:
- Full DAX measure lifecycle
- Relationship management
- Multi-table integration
Analysis & Visualization:
- PivotTable creation and configuration
- Chart automation
- Custom calculations
Automation:
- VBA macro execution and management
- Named range parameter automation
- Conditional formatting rules
Data Loading:
- Multiple connection type support
- OLEDB/ODBC management
- Power Query atomic workflows
🔧 Tool Selection Quick Reference
| Task | Tool |
|---|---|
| Import data | excel_powerquery or excel_connection |
| Create analysis | excel_pivottable (data model-based for OLAP) |
| Visualize data | excel_chart |
| Update parameters | excel_namedrange (write operation) |
| Manage formulas | excel_range (set-formulas) |
| Format data | excel_range (format-range, validate-range) |
| Script automation | excel_vba (run macro) |
📚 Documentation
- Installation Guide - Setup for all AI assistants
- MCP Server Guide - Tool documentation and examples
- CLI Guide - Command-line reference
- Contributing - Development guidelines
- Releases - Latest updates and features