Skip to main content
Glama

DOCX-MCP: Word Document MCP Server

A Model Context Protocol (MCP) server for Microsoft Word document operations, built with FastMCP and python-docx. Focused on advanced table operations with comprehensive formatting and analysis capabilities.

๐Ÿš€ Core Features

Document Operations

  • open_document - Open/create Word documents

  • save_document - Save documents with optional rename

  • get_document_info - Get document information and metadata

Table Structure Operations

  • create_table - Create tables with customizable dimensions and headers

  • delete_table - Delete tables by index

  • add_table_rows - Add/remove rows at any position with styling

  • add_table_columns - Add/remove columns at any position with styling

  • delete_table_rows - Delete specific rows from tables

  • merge_cells - Merge cells in rectangular regions

  • unmerge_cells - Split merged cell regions back into individual cells

Table Data Operations

  • set_cells_value - Batch set multiple cells efficiently with comprehensive formatting options

  • get_table_data_and_structure - Get table data and structure (array, object, CSV formats)

  • get_table_styles - Get table cell styles and formatting information

  • list_tables - List all tables with metadata

Table Search & Analysis

  • search_table_content - Search content across all table cells

  • search_table_headers - Search specifically in table headers

Cell Formatting Features

  • Text Formatting: Font family, size, color, bold, italic, underline, strikethrough

  • Alignment: Horizontal (left, center, right, justify) and vertical (top, middle, bottom)

  • Visual Styling: Background colors (hex), borders with customizable styles/widths/colors

  • Style Preservation: Maintain existing formatting when updating cells

  • Batch Operations: Efficiently set multiple cells with individual formatting in one call

๐Ÿ“ฆ Installation

# Clone and install
git clone <repository-url>
cd docx_table
pip install -r requirements.txt
pip install -e .

๐Ÿ–ฅ๏ธ Usage

Run MCP Server

# Default STDIO transport
python -m docx_mcp.server

# HTTP/SSE transports
python -m docx_mcp.server --transport sse --host localhost --port 8000
python -m docx_mcp.server --transport streamable-http --host localhost --port 8000

Command Line Options

python -m docx_mcp.server --help

Available options:

  • --transport {stdio,sse,streamable-http} - Transport protocol (default: stdio)

  • --host HOST - Host for HTTP/SSE transports (default: localhost)

  • --port PORT - Port for HTTP/SSE transports (default: 8000)

  • --no-banner - Disable startup banner

Direct Usage

from docx_mcp.core.document_manager import DocumentManager
from docx_mcp.operations.tables.table_operations import TableOperations

# Initialize
doc_manager = DocumentManager()
table_ops = TableOperations(doc_manager)

# Create table with headers (auto-loads document)
result = table_ops.create_table("document.docx", rows=3, cols=4, 
                               headers=["Name", "Age", "City", "Occupation"])

# Set multiple cells with formatting
cells = [
    {"row_index": 1, "column_index": 0, "value": "Alice", "font_family": "Arial", "bold": True},
    {"row_index": 1, "column_index": 1, "value": "25", "font_size": 12}
]
result = table_ops.set_cells_value("document.docx", 0, cells)

# Get table data and structure
result = table_ops.get_table_data_and_structure("document.docx", 0, include_headers=True)

# Merge cells in a 2x2 region (rows 1-2, cols 1-2)
result = table_ops.merge_cells("document.docx", 0, 1, 1, 2, 2)

# Unmerge cells (specify any cell in the merged region)
result = table_ops.unmerge_cells("document.docx", 0, 1, 1)

๐Ÿ”ง MCP Tools

All tools work independently - no pre-loading required. Each tool accepts JSON parameters and returns JSON responses.

Interface Design Philosophy

The MCP interface is designed for efficiency and simplicity:

  • Batch Operations: Use set_cells_value for setting multiple cells efficiently

  • Data/Style Separation: Use get_table_data_and_structure for content and get_table_styles for formatting

  • Range Queries: Both data and style interfaces support row/column ranges for large tables

  • Context-Aware: Optimized for AI model usage with minimal API calls

Document Operations

  • open_document(file_path, create_if_not_exists=True) - Open/create Word documents

  • save_document(file_path, save_as=None) - Save documents with optional rename

  • get_document_info(file_path) - Get document information and metadata

Table Operations

  • create_table(file_path, rows, cols, headers=None) - Create tables with headers

  • delete_table(file_path, table_index) - Delete tables by index

  • add_table_rows(file_path, table_index, count, position="end") - Add/remove rows

  • add_table_columns(file_path, table_index, count, position="end") - Add/remove columns

  • delete_table_rows(file_path, table_index, row_indices) - Delete specific rows

Data Operations

  • set_cells_value(file_path, table_index, cells) - Batch set multiple cells with formatting

  • get_table_data_and_structure(file_path, table_index, format="array") - Get table data and structure (array/object/CSV)

  • get_table_styles(file_path, table_index) - Get table cell styles and formatting

  • list_tables(file_path) - List all tables with metadata

Cell Merge Operations

  • merge_cells(file_path, table_index, start_row, start_col, end_row, end_col) - Merge cells in rectangular regions

  • unmerge_cells(file_path, table_index, row, column) - Split merged cell regions back into individual cells

Search & Analysis

  • search_table_content(file_path, query, search_mode="contains") - Search table content

  • search_table_headers(file_path, query) - Search table headers

๐Ÿงช Testing

pytest                    # Run all tests
pytest --cov=src/docx_mcp # Run with coverage
pytest -v                 # Verbose output

๐Ÿ“„ License

MIT License - see LICENSE file for details.

-
security - not tested
F
license - not found
-
quality - not tested

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/Rookie0x80/docx-mcp'

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