Office-MCP
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., "@Office-MCPcreate a budget spreadsheet with last month's expenses"
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 Servers for Windows Office Automation
This project provides Model Context Protocol (MCP) servers for automating Microsoft Windows desktop applications on your local machine. These servers enable AI assistants (like GitHub Copilot, Claude, etc.) to interact with your local Office applications via COM automation.
Included MCP Servers
Server | Description |
wps-excel-mcp | Automate WPS Office Excel (create, read, format workbooks, charts, etc.) |
wps-word-mcp | Automate WPS Office Word (create, edit, format documents, tables, etc.) |
outlook-mcp | Automate Microsoft Outlook (email, calendar, contacts) |
Related MCP server: Windows-MCP
Prerequisites
Windows (COM automation is Windows-only)
Python 3.10+
Required Python packages:
mcp— MCP Python SDKpywin32— Windows COM automation
WPS Office installed (for wps-excel-mcp, wps-word-mcp)
Microsoft Outlook installed (for outlook-mcp)
Installation
# Clone or navigate to the project directory
cd wps-mcp
# Install dependencies
pip install -r requirements.txt
# Or install the package in development mode
pip install -e .Build Standalone EXEs (No Python Required)
You can build standalone .exe files that users can run without installing Python or any dependencies. The only requirement on the target machine is the respective Office application installed.
One-Click Build
# Build all MCP servers:
build_exe.bat
# Or build individually:
build_exe.bat --wps
build_exe.bat --word
build_exe.bat --outlookOr manually:
pip install pyinstaller
python build_exe.py # Build all
python build_exe.py --wps # WPS Excel MCP only
python build_exe.py --word # WPS Word MCP only
python build_exe.py --outlook # Outlook MCP onlyOutput:
dist\wps-excel-mcp.exedist\wps-word-mcp.exedist\outlook-mcp.exe
Using the EXEs
Add them to your MCP client config:
{
"mcpServers": {
"wps-excel-mcp": {
"command": "C:\\path\\to\\wps-excel-mcp.exe"
},
"wps-word-mcp": {
"command": "C:\\path\\to\\wps-word-mcp.exe"
},
"outlook-mcp": {
"command": "C:\\path\\to\\outlook-mcp.exe"
}
}
}Pre-built Releases
Every GitHub Release automatically builds a wps-mcp.zip containing all three MCP servers as standalone .exe files, plus a setup guide. No Python or build tools required — just download, extract, and configure your MCP client.
Download the latest release: Releases
The zip includes:
wps-excel-mcp.exe— WPS Excel MCP serverwps-word-mcp.exe— WPS Word MCP serveroutlook-mcp.exe— Outlook MCP serverREADME_SETUP.txt— Step-by-step setup guide
Configuration (Development Mode)
Add the servers to your MCP client configuration:
VS Code / GitHub Copilot
Add to your .vscode/mcp.json:
{
"servers": {
"wps-excel-mcp": {
"command": "python",
"args": ["-m", "wps_excel_mcp.server"],
"cwd": "d:/work/wps-mcp/src"
},
"outlook-mcp": {
"command": "python",
"args": ["-m", "outlook_mcp.server"],
"cwd": "d:/work/wps-mcp/src"
}
}
}Or use the installed entry points:
{
"servers": {
"wps-excel-mcp": {
"command": "wps-excel-mcp"
},
"outlook-mcp": {
"command": "outlook-mcp"
}
}
}WPS Excel MCP (wps-excel-mcp)
Automate WPS Office Excel via COM automation.
Features
Category | Operations |
Workbook | Create, open, save, close, list, activate |
Worksheet | Add, rename, delete, activate, copy, move, hide/unhide |
Cells | Get/set/clear values, get/set formulas |
Ranges | Get/set/clear, copy/paste, sort, find/replace, used range, remove duplicates |
Formatting | Bold, italic, font name/size/color, underline, fill color, alignment, vertical alignment, number format, wrap text, merge/unmerge, borders, conditional formatting, data validation |
Rows/Columns | Insert, delete, resize, autofit, group/ungroup, freeze/unfreeze panes |
Charts | Add column, line, pie, bar, area, scatter charts |
Data | AutoFilter, text-to-columns |
Protection | Protect/unprotect sheets |
Page Setup | Print area, orientation, margins, headers/footers |
Export | Export to PDF |
Misc | Named ranges, hyperlinks, comments, pivot tables, sparklines, pictures, shapes, gridlines |
Macros | Run VBA macros |
Window | Show/hide WPS Excel window, get app info |
Tool Reference
All tools use a unified action-based API. Each tool accepts an action parameter plus action-specific parameters and an optional sheet_name.
wps_app — Application Control
Action | Description |
| Get WPS Excel version and open workbooks count |
| Show the WPS Excel window |
| Hide the WPS Excel window |
wps_workbook — Workbook Management
Action | Description |
| Create a new workbook |
| Open a file ( |
| Save the active workbook (optional |
| Close the active workbook ( |
| List all open workbooks |
| Activate a workbook by |
wps_sheet — Worksheet Management
Action | Description |
| List all sheets with names, types, visibility |
| Add a new worksheet (optional |
| Rename a sheet ( |
| Delete a sheet by |
| Activate (focus) a sheet by |
| Copy a sheet ( |
| Move a sheet ( |
| Hide a sheet by |
| Unhide a sheet by |
wps_cell — Single Cell Operations
Action | Description |
| Get a cell's value ( |
| Set a cell's value ( |
| Clear a cell's contents ( |
| Set a formula ( |
| Get a cell's formula ( |
wps_range — Multi-Cell Range Operations
Action | Description |
| Get values from a |
| Set values at |
| Clear a range |
| Copy a |
| Paste to |
| Sort a range by |
| Find first occurrence of |
| Find next occurrence |
| Find |
| Get used range address, row count, column count |
| Remove duplicate rows ( |
wps_format — Cell Formatting
Apply multiple formats in a single call. All parameters apply to cell_or_range.
Parameter | Description |
| Bold on/off (bool) |
| Italic on/off (bool) |
| Font family name |
| Font size (integer) |
| Font color (RGB hex, e.g. |
| Underline style: none/single/double |
| Background/fill color (RGB hex) |
| Horizontal alignment: left/center/right |
| Vertical alignment: top/center/bottom |
| Number/date format string |
| Text wrap on/off (bool) |
| True=merge, False=unmerge |
| Border style: thin/medium/thick |
| Border color (RGB hex) |
| Apply border to outline only (bool) |
| Conditional format operator |
| Conditional format formula/value |
| Conditional format font color |
| Conditional format background color |
| Conditional format bold (bool) |
| Clear conditional formats (bool) |
| Data validation type |
| Data validation formulas |
| Validation: ignore blank (bool) |
| Validation: show dropdown (bool) |
| Validation error alert |
wps_rowcol — Row/Column Operations
Action | Description |
| Insert a |
| Delete a |
| Set row height or column width ( |
| Auto-fit rows or columns ( |
| Group rows/columns ( |
| Ungroup rows/columns ( |
| Freeze panes at |
| Unfreeze panes |
wps_chart — Chart Creation
Parameter | Description |
| column/line/pie/bar/area/scatter |
| Data range for the chart |
| Chart position and size |
wps_data — Data Operations
Action | Description |
| Apply AutoFilter to a |
| Split text in |
wps_protection — Sheet Protection
Action | Description |
| Protect the sheet (optional |
| Unprotect the sheet (optional |
wps_page_setup — Page Layout
Action | Description |
| Set print area to |
| Clear print area |
| Set page orientation |
| Set margins ( |
| Set headers/footers ( |
wps_export — Export
Parameter | Description |
| Output PDF file path |
| Optional sheet name |
wps_macro — Macros
Parameter | Description |
| Name of the VBA macro to run |
wps_misc — Miscellaneous Operations
Action | Description |
| Create a named range ( |
| Delete a named range |
| List all named ranges |
| Add a hyperlink ( |
| Remove hyperlinks from |
| Add a comment to |
| Delete comment from |
| Create a pivot table |
| Add a sparkline chart |
| Insert a picture ( |
| Insert a shape ( |
| Show/hide gridlines ( |
Project Structure
wps-mcp/
├── pyproject.toml # Project metadata & dependencies
├── requirements.txt # Pip dependencies
├── README.md # This file
├── build_exe.py # Build standalone .exe files
├── build_exe.bat # Build script wrapper
└── src/
├── wps_excel_mcp/ # WPS Excel MCP Server
│ ├── __init__.py
│ ├── server.py # MCP server with tool definitions & handlers
│ ├── wps_client.py # WPS Excel COM client
│ └── tools/
│ └── __init__.py
├── wps_word_mcp/ # WPS Word MCP Server
│ ├── __init__.py
│ ├── server.py # MCP server with tool definitions & handlers
│ ├── word_client.py # WPS Word COM client
│ └── tools/
│ └── __init__.py
└── outlook_mcp/ # Outlook MCP Server
├── __init__.py
├── server.py # MCP server with tool definitions & handlers
└── outlook_client.py # Outlook COM clientHow It Works
Each MCP server runs as a subprocess and communicates via stdio (standard input/output) using JSON-RPC.
When an AI assistant calls a tool, the server dispatches it to the appropriate handler.
The handler calls the COM client which uses
win32comto automate the target application via its COM interface.Results are serialized to JSON and returned to the AI assistant.
WPS Word MCP (wps-word-mcp)
Automate WPS Office Word via COM automation.
Features
Category | Operations |
Document | Create, open, save, close, list, activate, get/set properties, protect/unprotect |
Text | Get, set, type, append, prepend, get selected text |
Paragraphs | Add, get count, get/set text, insert before, delete, alignment, spacing |
Font | Bold, italic, underline, font name/size/color, highlighting |
Find/Replace | Find text, find & replace (with match case, whole word, replace all) |
Tables | Add, count, get data, set cell, add row/column, delete, style |
Page Layout | Orientation, margins, size, columns, borders, headers, footers, page numbers |
Styles | Apply style, bullet/number lists, remove list |
Insert | Picture, page break, section break, hyperlink, table of contents, bookmark |
Export | Export to PDF, print |
Other | Watermark, track changes, zoom, comments, range text |
Tool Reference
All tools use a unified action-based API.
word_app — Application Control
Action | Description |
| Get WPS Word version and open documents count |
| Show the WPS Word window |
| Hide the WPS Word window |
| Quit WPS Word |
word_document — Document Management
Action | Description |
| Create a new document |
| Open a file ( |
| Save the active document (optional |
| Close the active document ( |
| List all open documents |
| Activate a document by |
| Get document properties (author, title, etc.) |
| Set document properties ( |
| Protect the document with optional |
| Unprotect the document with optional |
word_text — Text Operations
Action | Description |
| Get all document text |
| Replace all text ( |
| Type text at cursor position |
| Append text at end of document |
| Prepend text at start of document |
| Get currently selected text |
word_paragraph — Paragraph Operations
Action | Description |
| Add a paragraph (optional |
| Get total paragraph count |
| Get text of paragraph by |
| Set text of paragraph by |
| Insert paragraph before |
| Delete paragraph by |
| Set alignment ( |
| Set paragraph spacing ( |
word_font — Font Formatting
Apply to a range_spec: selection (default), content, or start=X,end=Y.
Parameter | Description |
| Bold on/off (bool) |
| Italic on/off (bool) |
| Underline on/off (bool) |
| Font family name |
| Font size (number) |
| Font color (RGB hex) |
| Highlight color (0=None, 6=Yellow, 7=Green, 2=Blue) |
word_find — Find & Replace
Action | Description |
| Find |
| Find |
word_table — Table Operations
Action | Description |
| Add a table ( |
| Get table count |
| Get table data by |
| Set cell text ( |
| Add a row to table |
| Add a column to table |
| Delete table by |
| Apply table |
word_page — Page Layout
Action | Description |
| Set orientation ( |
| Set margins ( |
| Set page size ( |
| Set columns ( |
| Set page borders ( |
| Add header ( |
| Add footer ( |
| Insert page numbers ( |
word_insert — Insert Elements
Action | Description |
| Insert a picture ( |
| Insert a page break |
| Add a section break |
| Add a hyperlink ( |
| Insert table of contents |
| Add bookmark ( |
| Navigate to bookmark ( |
word_export — Export & Print
Action | Description |
| Export to PDF ( |
| Print document (optional |
Other Word Tools
Tool | Description |
| Apply styles: |
| Add text watermark ( |
| Toggle track changes ( |
| Set zoom level ( |
| Add a comment ( |
| Get text from a character range ( |
Outlook MCP (outlook-mcp)
Automate Microsoft Outlook via COM automation.
Features
Category | Operations |
Mailbox | Get Outlook version, accounts, folder counts |
List, search, get details, create/update drafts, delete, move, mark read, flag, categorize, save attachments, empty deleted, open in window | |
Calendar | List, get, create, update, delete appointments, respond to invitations, get free/busy |
Contacts | List, get, create, update, delete, export to CSV/vCard |
Tasks | List, get, create, update, delete, mark complete |
Rules | List inbox rules, create rules |
Tool Reference
All tools use a unified action-based API. Each tool accepts an action parameter plus action-specific parameters.
outlook_mailbox — Mailbox Info
Get Outlook version, accounts, and folder counts. No parameters required.
outlook_email — Email Management
Action | Description |
| List emails from a folder ( |
| Search emails ( |
| Get full email details by |
| Create a draft email ( |
| Update an existing draft ( |
| Delete an email by |
| Move an email to |
| Mark as read or unread ( |
| Flag/unflag an email ( |
| Set categories ( |
| Save an attachment to disk ( |
| Empty the Deleted Items folder (optional |
| Open an email in its own window by |
Note: To send an email, use
create_draftto create it, thenupdate_draftto modify it, and the draft can be sent manually from Outlook. The MCP uses a draft-based workflow instead of direct sending for security.
outlook_calendar — Calendar Management
Action | Description |
| List calendar events ( |
| Get appointment details by |
| Create an appointment ( |
| Update an appointment ( |
| Delete an appointment by |
| Respond to an invitation ( |
| Get free/busy information ( |
outlook_contact — Contacts Management
Action | Description |
| List contacts ( |
| Get contact details by |
| Create a contact ( |
| Update a contact ( |
| Delete a contact by |
| Export contacts to file ( |
outlook_task — Tasks Management
Action | Description |
| List tasks ( |
| Get task details by |
| Create a task ( |
| Update a task ( |
| Delete a task by |
| Mark task complete or not started ( |
outlook_rule — Rules Management
Action | Description |
| List all inbox rules |
| Create a rule ( |
Usage Examples
Check your inbox
> Show me my 5 most recent emailsThe assistant calls outlook_email with action=list, count=5.
Create a draft email
> Create a draft email to john@example.com with subject "Q3 Report" and
body "Hi John, please find the Q3 report attached."The assistant calls outlook_email with action=create_draft.
Search emails
> Find all unread emails from "Jane" this weekThe assistant calls outlook_email with action=search, sender="Jane", unread_only=true, and a date range.
Check calendar
> What's on my calendar for next Monday?The assistant calls outlook_calendar with action=list and appropriate start/end dates.
Manage tasks
> Show me my incomplete tasksThe assistant calls outlook_task with action=list, include_completed=false.
COM ProgID
The client uses Outlook.Application as the COM ProgID. If Outlook is already running, it connects to the existing instance.
Troubleshooting
"Could not connect to Microsoft Outlook"
Ensure Microsoft Outlook is installed and running
Verify Outlook is properly registered (the COM interface should be available)
If using a 64-bit version of Python, ensure a 64-bit version of Outlook is installed (or vice versa)
"ModuleNotFoundError: No module named 'win32com'"
pip install pywin32COM errors / crashes
Ensure Outlook is up to date
Some operations may trigger Outlook security prompts (Outlook's security model restricts programmatic access)
License
MIT
This server cannot be installed
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
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/hinora/office-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server