Skip to main content
Glama
README.md
# Word MCP

A Model Context Protocol (MCP) server for generating Microsoft Word documents (`.docx`) programmatically. Unlike typical MCP servers that act as gateways to APIs, this server acts as a **Factory**, converting AI-generated text and data into professional, downloadable files.

## Features

### Document Generation
- **generate_report**: Create complete Word documents in one shot
- **Markdown Support**: Automatically converts basic Markdown (bold, lists) into Word formatting
- **Rich Elements**: Supports:
    - Headers (Levels 1-3)
    - Data Tables with custom headers
    - Text Paragraphs
    - File metadata (Titles, Authors)

### Architecture
- **Local File Output**: Saves files directly to your host machine
- **Dockerized Factory**: Runs securely in a container with volume mapping
- **Stateless Operation**: No complex databases required

## Simple Setup

### 1. Local Development

1. Install dependencies:
   ```bash
   npm install
   ```

2. Create a `.env` file (Optional, defaults to `./output`):
   ```
   OUTPUT_DIR=./generated_reports
   ```

3. Build and start:
   ```bash
   npm run build
   npm start
   ```

### 2. Docker Usage

**Critical Note:** Because this server creates files, you must mount a volume to see the output.

1. Build the image:
   ```bash
   docker build -t word-mcp .
   ```

2. Run with Volume Mapping:
   ```bash
   docker run --rm -i \
     -v $(pwd)/generated_reports:/app/output \
     word-mcp
   ```

## MCP Client Integration

### Configuration for Claude Desktop

To allow the AI to save files to your Windows "Documents" folder, you must map the volume in the configuration.

1. Open your config file:
   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`

2. Add this configuration:
   ```json
   {
     "mcpServers": {
       "word-mcp": {
         "command": "docker",
         "args": [
           "run",
           "--rm",
           "-i",
           "-v", "C:\\Users\\hp\\Documents\\mcp\\word-mcp\\generated_reports:/app/output",
           "word-mcp"
         ]
       }
     }
   }
   ```

   **Note:** Update the path `C:\\Users\\hp...` to match your actual project location.

### Using with Docker Compose

If you prefer docker-compose, use the included configuration:

```yaml
# docker-compose.yml
services:
  word-mcp:
    build: .
    volumes:
      - ./generated_reports:/app/output
```

## Usage Examples

### Generate a Project Audit

The AI can call the tool with structured data to create a formatted report.

```json
{
  "filename": "Audit_Report_2024",
  "title": "Q4 Security Audit",
  "sections": [
    {
      "heading": "Executive Summary",
      "content": "The audit was completed on **January 20th**. No critical vulnerabilities were found."
    },
    {
      "heading": "Vulnerability Matrix",
      "table": {
        "headers": ["Severity", "Count", "Status"],
        "rows": [
          ["High", "0", "Pass"],
          ["Medium", "2", "Investigating"]
        ]
      }
    }
  ]
}
```

## Troubleshooting

### "I can't find the generated file"
- **Check Volume Mapping:** Ensure your `claude_desktop_config.json` has the `-v` flag pointing to a valid folder on your host machine.
- **Docker Permissions:** The container runs as a non-root user (`appuser`). Ensure your host folder allows writing (usually automatic on Windows, but requires `chmod` on Linux).

### "Error: Output directory does not exist"
The server attempts to create the directory on startup. If using Docker, ensure the internal path `/app/output` is correctly mapped.

### "Formatting looks wrong"
Currently, the Markdown parser supports bold (`**text**`) and basic paragraph splitting. Complex Markdown (like code blocks or nested lists) will be rendered as plain text in this version.

## Development

Run in development mode:
```bash
npm run dev
```

Watch for changes:
```bash
npm run watch
```

TDQS

B3.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools, as there are no other tools to compare it against. The tool's purpose is clearly defined and distinct by default.

Naming Consistency5/5

Since there is only a single tool, naming consistency is inherently perfect—there are no other tool names to be inconsistent with. The tool name 'generate_report' follows a clear verb_noun pattern.

Tool Count2/5

A single tool is too few for a server named 'Word MCP', which implies broader document manipulation capabilities beyond just report generation. This minimal toolset feels thin and under-scoped for the apparent domain.

Completeness2/5

The tool surface is severely incomplete for a Word document server; it only covers report generation, missing essential operations like document editing, formatting, saving, or loading. This will likely cause agent failures when broader document tasks are needed.

Maintenance

ActivityInactive
ResponsivenessNo issues