github re-analysis due

SecurityRonin/docx-mcp

github

MCP server for reading and editing Word (.docx) documents with track changes, comments, footnotes, and structural validation

maintainer
SecurityRonin
license
MIT
first seen
2026-06-01
last seen
2026-06-04
releases · 30d
6
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio counts 0 tools · 0 res · 0 prompts permission surface via code analysis

no tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 5cbd395 · analyzer v17 · 2d ago

skills & prompt files 2

code evidence vv0.7.4 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

filesystem 17

  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/cli.py :5 import shutil
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/base.py :8 import shutil
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/changesummary.py :5 from pathlib import Path
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/compare.py :9 from pathlib import Path
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/creation.py :5 import shutil
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/guards.py :6 from pathlib import Path
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/images.py :6 import shutil
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/markdown_export.py :131 with open(output_path, "w", encoding="utf-8") as f:
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/merge.py :7 from pathlib import Path
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/metadata.py :8 from pathlib import Path
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/pdfexport.py :5 import shutil
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/pii.py :9 from pathlib import Path
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/rawparts.py :6 from pathlib import Path
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/sessionlog.py :44 with open(output_path, "w", encoding="utf-8") as f:
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/splitting.py :9 from pathlib import Path
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/markdown.py :7 from pathlib import Path
  • fs SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :93 info = doc.open()

shell / exec 1

  • shell SecurityRonin-docx-mcp-5cbd395/docx_mcp/document/pdfexport.py :6 import subprocess

tool registrations 200

  • open_document SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :78
  • close_document SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :103
  • create_document SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :118
  • create_from_markdown SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :146
  • get_document_info SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :203
  • get_headings SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :213
  • search_text SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :227
  • get_paragraph SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :241
  • get_tables SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :255
  • add_table SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :262
  • modify_cell SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :275
  • add_table_row SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :304
  • delete_table_row SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :318
  • merge_cells SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :330
  • set_header_row SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :343
  • set_column_widths SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :350
  • csv_to_table SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :357
  • table_to_csv SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :364
  • delete_table SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :371
  • add_column_to_table SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :377
  • delete_column_from_table SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :383
  • set_cell_width SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :389
  • set_cell_vertical_alignment SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :395
  • set_row_height SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :401
  • set_table_alignment SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :407
  • set_table_borders SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :413
  • set_cell_shading SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :428
  • set_table_style SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :442
  • add_list SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :451
  • get_styles SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :465
  • create_style SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :472
  • update_style SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :492
  • delete_style SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :508
  • get_style SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :518
  • copy_style SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :531
  • apply_style_to_range SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :545
  • get_headers_footers SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :562
  • edit_header_footer SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :569
  • delete_header SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :596
  • delete_footer SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :602
  • get_properties SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :611
  • set_properties SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :618
  • get_custom_properties SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :638
  • set_custom_property SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :644
  • delete_custom_property SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :656
  • get_images SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :669
  • insert_image SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :676
  • insert_floating_image SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :689
  • delete_image SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :706
  • update_image SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :718
  • set_image_size SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :731
  • set_image_alt_text SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :743
  • set_image_border SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :755
  • get_endnotes SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :773
  • add_endnote SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :780
  • validate_endnotes SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :787
  • get_footnotes SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :797
  • add_footnote SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :804
  • add_footnote_ref SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :811
  • validate_footnotes SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :823
  • update_footnote SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :830
  • delete_footnote SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :841
  • update_endnote SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :854
  • delete_endnote SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :865
  • add_page_break SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :881
  • add_section_break SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :888
  • set_section_properties SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :899
  • set_page_size SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :927
  • set_page_margins SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :939
  • set_page_orientation SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :967
  • get_sections SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :978
  • set_section_columns SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :990
  • delete_section_break SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1006
  • set_different_first_page SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1022
  • set_odd_even_headers SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1039
  • add_cross_reference SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1058
  • set_document_protection SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1073
  • merge_documents SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1087
  • validate_paraids SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1097
  • insert_watermark SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1104
  • remove_watermark SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1120
  • audit_document SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1127
  • insert_text SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1137
  • delete_text SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1183
  • replace_text SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1229
  • get_body_text SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1275
  • get_tracked_changes SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1290
  • accept_changes SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1301
  • reject_changes SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1308
  • accept_change SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1315
  • reject_change SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1328
  • accept_all_changes SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1341
  • reject_all_changes SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1350
  • set_formatting SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1359
  • get_comments SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1388
  • add_comment SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1395
  • reply_to_comment SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1407
  • update_comment SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1419
  • delete_comment SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1430
  • resolve_comment SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1440
  • list_comment_threads SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1450
  • save_document SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1462
  • scrub_pii SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1476
  • sanitize_metadata SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1527
  • compare_documents SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1555
  • diff_to_text SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1580
  • generate_change_summary SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1613
  • list_parts SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1639
  • read_part SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1645
  • write_part SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1653
  • xpath_query SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1661
  • list_bookmarks SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1676
  • add_bookmark SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1682
  • remove_bookmark SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1688
  • get_bookmarked_text SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1694
  • list_hyperlinks SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1703
  • add_hyperlink SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1713
  • add_internal_link SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1728
  • remove_hyperlink SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1742
  • update_hyperlink SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1755
  • add_field SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1769
  • update_fields SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1784
  • list_fields SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1790
  • get_field SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1796
  • delete_field SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1806
  • insert_date_field SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1816
  • insert_page_number_field SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1827
  • insert_if_field SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1837
  • insert_sequence_field SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1855
  • insert_merge_field SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1871
  • generate_toc SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1885
  • update_toc SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1892
  • generate_list_of_figures SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1899
  • generate_list_of_tables SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1906
  • generate_tof SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1913
  • generate_tot SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1923
  • add_content_control SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1936
  • get_content_controls SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1959
  • set_content_control_value SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1966
  • lock_content_control SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1978
  • delete_content_control SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :1990
  • get_content_control SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2001
  • update_content_control SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2012
  • fill_template SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2038
  • list_template_fields SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2050
  • validate_template_data SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2057
  • create_multilevel_list SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2067
  • restart_numbering SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2074
  • suppress_numbering SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2081
  • get_lists SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2088
  • promote_list_item SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2098
  • demote_list_item SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2107
  • bates_number SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2119
  • redact_text SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2135
  • generate_redaction_log SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2154
  • generate_privilege_log SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2165
  • add_equation SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2179
  • get_equations SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2191
  • insert_bar_chart SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2201
  • insert_line_chart SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2218
  • insert_pie_chart SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2235
  • update_chart_data SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2250
  • merge_review_rounds SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2260
  • compare_contracts SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2266
  • get_session_log SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2275
  • export_session_script SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2281
  • insert_paragraph SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2293
  • update_paragraph SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2309
  • delete_paragraph SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2331
  • set_paragraph_border SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2341
  • set_paragraph_shading SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2359
  • set_paragraph_indentation SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2375
  • set_keep_with_next SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2403
  • set_keep_lines_together SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2414
  • set_page_break_before SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2425
  • set_widow_control SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2436
  • insert_blockquote SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2447
  • insert_code_block SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2460
  • set_line_spacing SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2474
  • get_paragraph_format SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2502
  • get_runs SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2517
  • set_run_font SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2527
  • set_run_color SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2539
  • set_run_size SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2551
  • set_character_spacing SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2563
  • set_character_position SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2575
  • set_run_highlight SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2587
  • set_run_strikethrough SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2599
  • set_run_superscript SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2611
  • set_run_subscript SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2622
  • set_run_underline SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2633
  • clear_run_formatting SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2645
  • set_run_language SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2656
  • set_text_case SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2668
  • export_markdown SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2680
  • get_theme_colors SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2696
  • set_theme_color SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2706
  • insert_caption SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2717
  • find_replace_formatted SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2729
  • split_document SecurityRonin-docx-mcp-5cbd395/docx_mcp/server.py :2764

declared dependencies 6

  • mcp@>=1.0.0
  • lxml@>=4.9.0
  • mistune@>=3.0
  • presidio-analyzer@>=2.2
  • presidio-anonymizer@>=2.2
  • spacy@>=3.7,<4