Docx Comments Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Docx Comments Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP server for Claude Desktop that provides comprehensive read/write access to Word documents, including comments, track changes, and reply threads — features that python-docx doesn't fully expose.
<!-- mcp-name: io.github.kosh-jelly/docx-comments -->
# Clone the repository
git clone https://github.com/your-username/docx-comments-mcp.git
cd docx-comments-mcp
# Install with uv
uv syncAdd to your claude_desktop_config.json:
{
"mcpServers": {
"docx-comments": {
"command": "uv",
"args": ["--directory", "/path/to/docx-comments-mcp", "run", "docx-comments-mcp"]
}
}
}read_documentRead a Word document and extract content, comments, and track changes.
Parameters:
path (required): Path to the .docx fileinclude_text (default: true): Include full document textinclude_comments (default: true): Include comments with anchorsinclude_track_changes (default: true): Include insertions/deletionsReturns:
{
"metadata": {
"path": "/path/to/file.docx",
"author": "Original Author",
"created": "2025-01-15T10:30:00Z",
"modified": "2025-01-18T14:22:00Z",
"word_count": 4523
},
"paragraphs": [
{"index": 0, "text": "The paragraph content...", "style": "Heading 1"}
],
"comments": [
{
"id": 0,
"author": "Dr. Smith",
"date": "2025-01-16T09:15:00Z",
"text": "Consider citing Main & Hesse here",
"anchor_text": "disorganized attachment patterns",
"anchor_paragraph": 12,
"resolved": false,
"replies": [
{
"id": 1,
"parent_id": 0,
"author": "Josh",
"date": "2025-01-17T11:00:00Z",
"text": "Added citation — see revision"
}
]
}
],
"track_changes": [
{
"id": 5,
"type": "deletion",
"author": "Dr. Smith",
"date": "2025-01-16T09:20:00Z",
"text": "invariably",
"paragraph": 8
}
]
}create_commentAdd a comment anchored to specific text in a Word document.
Parameters:
path (required): Path to the .docx fileanchor_text (required): Text to anchor the comment to (must exist and be unique)comment_text (required): The comment contentauthor (default: "Claude"): Comment author nameoutput_path (optional): Save to new file; if omitted, creates timestamped backup and overwritesReturns:
{
"success": true,
"comment_id": 3,
"anchored_to": "the exact text that was matched",
"paragraph": 15,
"output_path": "/path/to/output.docx"
}create_replyAdd a reply to an existing comment.
Parameters:
path (required): Path to the .docx fileparent_comment_id (required): ID of comment to reply toreply_text (required): The reply contentauthor (default: "Claude"): Reply author nameoutput_path (optional): Save to new file; if omitted, creates backupcreate_track_changeMake an edit with track changes enabled (insertion, deletion, or replacement).
Parameters:
path (required): Path to the .docx filefind_text (required): Text to find and modifyreplace_with (required): Replacement text (empty string for deletion)author (default: "Claude"): Change author nameoutput_path (optional): Save to new file; if omitted, creates backupmark_comment_resolvedMark a comment as resolved/done.
Parameters:
path (required): Path to the .docx filecomment_id (required): ID of comment to resolveoutput_path (optional): Save to new file; if omitted, creates backupaccept_changeAccept a tracked change (apply permanently).
Parameters:
path (required): Path to the .docx filechange_id (required): ID of the track change to acceptoutput_path (optional): Save to new file; if omitted, creates backupreject_changeReject a tracked change (undo the change).
Parameters:
path (required): Path to the .docx filechange_id (required): ID of the track change to rejectoutput_path (optional): Save to new file; if omitted, creates backupoutput_path, a timestamped backup is created (e.g., document.backup_20250119_143022.docx)# Install dev dependencies
uv sync
uv pip install pytest pytest-asyncio
# Run tests
uv run pytest -v
# Run specific test file
uv run pytest tests/test_reader.py -vsrc/docx_comments_mcp/
├── __init__.py
├── server.py # MCP server with tool definitions
├── reader.py # Read operations (document, comments, track changes)
├── writer.py # Write operations (add comments, track changes)
└── xml_helpers.py # Low-level OOXML parsing utilitiesMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.