mcp-server-xlwings
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., "@mcp-server-xlwingsSummarize the data I've selected"
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.
mcp-server-xlwings
MCP server for Excel automation via xlwings COM. Works with DRM-protected files.
Why xlwings?
Libraries like openpyxl or pandas read .xlsx files directly from disk. This fails when:
DRM / file-level encryption is applied (common in enterprise environments)
You need to interact with a live Excel session (formulas, macros, add-ins)
Files are locked by another process
mcp-server-xlwings uses COM automation to talk to the running Excel process, so it can read and write any file that Excel itself can open -- including DRM-protected documents.
xlwings-exclusive capabilities
These features are impossible with file-based libraries like openpyxl:
Read the user's current selection -- see exactly what the user is looking at
Get the active workbook -- no need to specify a file path
Run VBA macros -- execute existing macros and get their return values
Live formula results -- set a formula and get the calculated value immediately
Force recalculation -- trigger Excel to recalculate all formulas
Related MCP server: Excel MCP Server
Installation
With uvx (recommended)
uvx mcp-server-xlwingsWith pip
pip install mcp-server-xlwingsConfiguration
Claude Desktop
Add to %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"xlwings": {
"command": "uvx",
"args": ["mcp-server-xlwings"]
}
}
}Claude Code
claude mcp add xlwings -- uvx mcp-server-xlwingsRoo Code (VS Code)
Add to Roo Code MCP settings or create <project-root>/.roo/mcp.json:
{
"mcpServers": {
"xlwings": {
"command": "uvx",
"args": ["mcp-server-xlwings"]
}
}
}Cursor
Add to %USERPROFILE%\.cursor\mcp.json:
{
"mcpServers": {
"xlwings": {
"command": "uvx",
"args": ["mcp-server-xlwings"]
}
}
}Windsurf
Add to %USERPROFILE%\.codeium\windsurf\mcp_config.json:
{
"mcpServers": {
"xlwings": {
"command": "uvx",
"args": ["mcp-server-xlwings"]
}
}
}Continue (VS Code)
Add to ~/.continue/config.yaml:
mcpServers:
- name: xlwings
command: uvx
args:
- mcp-server-xlwingsAvailable Tools (11)
All tools default to the active workbook when workbook is omitted.
Tool | Description |
| Get active workbook info, sheets, and current selection with data |
| List, open, save, close, or recalculate workbooks |
| Read a range with |
| Write a 2D array ( |
| List, add, delete, rename, copy, activate sheets. Insert/delete rows and columns |
| Search for text, optionally replace it |
| Apply formatting (bold, italic, color, borders, alignment, number format, etc.) |
| Execute a VBA macro and get its return value |
| Get all formulas in a range with optional calculated values |
| Get formatting/style info (bold, colors, borders, etc.) for cells in a range |
| List charts, images, and shapes on a sheet |
Examples
See what the user is working on
"What's in the spreadsheet I have open?"
The agent calls get_active_workbook() to get the workbook name, sheets, and selection data, then read_data() to fetch the full sheet.
Summarize selected data
"Summarize the data I've selected"
The agent calls get_active_workbook() -- the response includes the selection data directly.
Run a macro
"Run the UpdateReport macro"
The agent calls run_macro(macro_name="UpdateReport") and returns the result.
Build a summary row
"Add a SUM formula in C10 that totals C2:C9"
The agent calls write_data(start_cell="C10", formula="=SUM(C2:C9)") and gets back the calculated value.
Format a header row
"Make row 1 bold and centered with a yellow background"
The agent calls format_range(cell_range="A1:D1", bold=true, alignment="center", bg_color="#FFFF00").
Read all sheets at once
"Give me a summary of every sheet"
The agent calls read_data(sheet="*") -- returns all sheet summaries in a single call.
Read merged cells properly
"Read B6:C20 and fill in merged cell values"
The agent calls read_data(cell_range="B6:C20", merge_info=true). Merged cells return the parent value instead of null.
Find all formulas
"Show me all formulas in this sheet"
The agent calls get_formulas(cell_range="A1:Z100", values_too=true) and gets every formula with its calculated value.
Insert rows
"Insert 3 blank rows at row 5"
The agent calls manage_sheets(action="insert_rows", position=5, count=3).
Requirements
Windows (Excel COM automation is Windows-only)
Microsoft Excel installed
Python 3.10+
License
MIT
Maintenance
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/geniuskey/mcp-server-xlwings'
If you have feedback or need assistance with the MCP directory API, please join our Discord server