Skip to main content
Glama
README.md
# docx-mcp-server

**Your Word docs, but you talk to them instead of opening them.**

Clone this repo, configure it in 60 seconds, then say *"summarize the cloud architecture doc on my desktop"* and get back a full topology analysis with a Mermaid diagram. No file paths. No clicking around. Just ask.

## Quick Start

```bash
git clone https://github.com/bradygaster/docx-mcp-server.git
cd docx-mcp-server
npm install && npm run build
```

Configure it in [Copilot CLI](#configure-in-copilot-cli) or [VS Code](#configure-in-vs-code), then start talking to your docs.

## Just Talk to It

**The old way:**  
Copy the file path → paste it into a prompt → hope you got the slashes right.

**The new way:**  
*"Summarize the cloud architecture doc on my desktop"*

And you get this back:

```
The document describes a three-tier Azure architecture:
- Front-end: Static web apps on Azure CDN
- API layer: Azure Functions with Event Grid for async workflows
- Data tier: Cosmos DB with Redis cache

Key decision: Event-driven architecture for scalability...
```

Plus a generated Mermaid diagram of the whole topology.

### What you can ask

- *"Summarize the demo script I downloaded"* → Section-by-section breakdown with key talking points
- *"Search for 'authentication' in the API proposal on my desktop"* → Exact matches with surrounding context
- *"What Word docs do I have in Downloads?"* → Full list with file sizes and dates
- *"Open the RFP and tell me the deadline"* → Reads the doc, finds the date, tells you

### What's happening under the hood

You say **"cloud architecture doc on my desktop"** and the server:
1. Searches Desktop (including OneDrive-synced folders)
2. Finds files matching "cloud architecture" (fuzzy, case-insensitive)
3. Resolves the path and reads the document
4. Returns the full text to your AI

No file picker. No path copy-paste. Just natural language.

## Squad Integration

This repo ships with a pre-configured AI team in the `.squad/` directory. If you have `@bradygaster/squad` installed, you can say:

**"Squad, summarize the RFP on my desktop"**

And the team reads and analyzes it for you:

- **Keaton (Squad Lead)** — Coordinates the team, analyzes document structure and architecture
- **Fenster (Backend Dev)** — Handles the document parsing and data extraction
- **Hockney (QA Analyst)** — Validates the findings and cross-checks facts

The team collaborates using the same MCP tools — `resolve_document`, `read_document`, `search_document` — but coordinates the work. It's like having three analysts who can read any Word doc you throw at them.

**Without Squad:** You talk directly to Copilot with docx-mcp-server's tools available.  
**With Squad:** You talk to a team that uses those tools collaboratively to analyze complex documents.

[Learn more about Squad →](https://github.com/bradygaster/squad)

## How It Works

The `resolve_document` tool is the magic. When you say "cloud architecture doc on my desktop":

1. **Searches the right places** — Desktop, Downloads, Documents, current directory, *plus* OneDrive-synced versions of those folders
2. **Matches flexibly** — exact name, prefix match, or substring match (all case-insensitive). Say "quarterly" and it finds `Quarterly-Report-Q4.docx`
3. **Understands location hints** — "on my desktop" or "in downloads" narrows the search
4. **Handles ambiguity** — multiple matches? You get a list to pick from

The AI chains tools automatically: resolve the friendly name → read the document → summarize/search/analyze. All from one sentence.

## Configure in Copilot CLI

Add to your `~/.copilot/mcp-config.json`:

**Windows:**
```json
{
  "servers": {
    "docx-reader": {
      "command": "node",
      "args": ["C:\\src\\docx-mcp-server\\dist\\index.js"]
    }
  }
}
```

**macOS / Linux:**
```json
{
  "servers": {
    "docx-reader": {
      "command": "node",
      "args": ["/home/you/docx-mcp-server/dist/index.js"]
    }
  }
}
```

Replace the path with the actual location where you cloned the repo.

## Configure in VS Code

Add to your `.vscode/mcp.json` (workspace) or user settings:

**Windows:**
```json
{
  "servers": {
    "docx-reader": {
      "command": "node",
      "args": ["C:\\src\\docx-mcp-server\\dist\\index.js"]
    }
  }
}
```

**macOS / Linux:**
```json
{
  "servers": {
    "docx-reader": {
      "command": "node",
      "args": ["/home/you/docx-mcp-server/dist/index.js"]
    }
  }
}
```

## Available Tools

### `resolve_document`

Finds `.docx` files by friendly name — the core of the natural language experience. Say "the report on my desktop" and it figures out which file you mean.

| Parameter  | Type   | Required | Description                          |
| ---------- | ------ | -------- | ------------------------------------ |
| `name`     | string | yes      | Friendly document name, with or without `.docx` extension (e.g., `"report"`, `"cloud architecture"`) |
| `location` | string | no       | Where to look: `"desktop"`, `"downloads"`, `"documents"`, `"current"`, or an absolute/relative path. Omit to search all common locations. |

### `read_document`

Reads a `.docx` file and returns the full text content.

| Parameter | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| `path`    | string | yes      | Absolute or relative path to a `.docx` file |

### `search_document`

Searches for text within a `.docx` file and returns matching lines with context.

| Parameter | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| `path`    | string | yes      | Absolute or relative path to a `.docx` file |
| `query`   | string | yes      | Text to search for (case-insensitive) |

### `get_document_metadata`

Returns metadata about a `.docx` file including name, size, dates, and word/character counts.

| Parameter | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| `path`    | string | yes      | Absolute or relative path to a `.docx` file |

### `list_documents`

Lists all `.docx` files in a directory.

| Parameter   | Type   | Required | Description                          |
| ----------- | ------ | -------- | ------------------------------------ |
| `directory` | string | yes      | Absolute or relative path to a directory |

## Example Usage

**Natural language (the point of this whole thing):**

- *"Summarize the cloud architecture doc on my desktop"*
- *"Search for 'authentication' in the API proposal I downloaded"*
- *"What Word documents are in my Downloads?"*
- *"Open the RFP and tell me the deadline"*

**Explicit paths (if you really want to):**

- *"Read C:/docs/spec.docx and summarize it"*
- *"Search for 'budget' in /Users/me/Documents/report.docx"*

## Requirements

- Node.js ≥ 18
- Works on Windows, macOS, and Linux

## License

MIT

TDQS

A4.4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: reading full content, searching with context, retrieving metadata, listing files, and resolving paths. There is no meaningful overlap—even list_documents and resolve_document serve different discovery functions.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (read_document, search_document, get_document_metadata, list_documents, resolve_document). The singular/plural distinction is natural and does not break the convention.

Tool Count5/5

Five tools is well within the 3-15 ideal range and covers the core operations needed for a read-only docx server without bloat or sparseness.

Completeness5/5

For the stated purpose of reading, searching, and analyzing Word documents, the tool surface is complete. It covers discovery (list, resolve), access (read), search, and metadata, forming a coherent workflow with no dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing