scribus-mcp
PyPI
v1.3.1
Published by caewa — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
MCP server wrapping the Scribus 1.7 Scripter API; supports headless and interactive backends
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 6.3 = 94. What the published surface and source actually contain:
| Points | What was found | Category |
|---|---|---|
| −6.3 | Description names a credential store the tool cannot reach MTC-INJ-SCHEMA-1 | injection |
2. Client adoption risk — 94 − 7 = 87. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
Tool "run_script" appears to run shell commands or evaluate code (keyword "run_script" in tool name). Arbitrary execution driven by model input is one of the most dangerous MCP capabilities; combined with any untrusted input it becomes RCE.
Fix: Sandbox execution, allowlist commands/arguments, and never pass model output to a shell unescaped.
Location: tool run_script
In the server's implementation (`src/scribus_mcp/backends/_launcher.py:100`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: try: result = subprocess.run( [scribus_bin, "-v"], capture_output=True, te
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server src/scribus_mcp/backends/_launcher.py
Untrusted-input tools ([get_page_count, get_page_size, get_page_margins]) co-exist with external-action tools ([run_script]). A prompt injection could cause unwanted external actions, though no direct sensitive-data leak path was found.
Evidence: untrusted [get_page_count, get_page_size, get_page_margins] → sinks [run_script]
Fix: Require confirmation for state-changing/egress actions triggered after processing untrusted content.
Location: flow get_page_count → run_script
Tool "list_extra_font_dirs" describes a credential store (SSH keys, cloud credentials, a keychain or an equivalent) that nothing in its input schema can address. A tool's interface is the honest statement of what it touches; prose that reaches past it is addressed to the model, not to a reader.
Evidence: %APPDATA%
Fix: Remove the reference, or expose the target as an explicit, validated parameter so the client can see and consent to what the tool reads.
Location: tool list_extra_font_dirs · description
Tool "create_file_annotation" can write, overwrite or delete files (keyword "create_file" in tool name). Verify it is scoped to a safe directory.
Fix: Constrain file operations to an explicit, non-sensitive root; reject path traversal.
Location: tool create_file_annotation
Tool "run_script" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.
Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.
Location: tool run_script
Tool "create_file_annotation" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.
Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.
Location: tool create_file_annotation
Each tool and what it can reach — statically extracted from the published source.
create_file_annotationwrites filesget_page_countingests untrusted inputget_page_marginsingests untrusted inputget_page_sizeingests untrusted inputrun_scriptruns code / shelladd_pageno sensitive capabilityappend_textno sensitive capabilityapply_character_styleno sensitive capabilityapply_gradientno sensitive capabilityapply_master_pageno sensitive capabilityapply_paragraph_styleno sensitive capabilityclear_gradientno sensitive capabilityclose_documentno sensitive capabilitycreate_axes_stripno sensitive capabilitycreate_bar_chartno sensitive capabilitycreate_bezier_lineno sensitive capabilitycreate_callout_boxno sensitive capabilitycreate_card_gridno sensitive capabilitycreate_code_sampleno sensitive capabilitycreate_comparison_tableno sensitive capabilitycreate_dark_kpi_bandno sensitive capabilitycreate_documentno sensitive capabilitycreate_dot_labelno sensitive capabilitycreate_ellipseno sensitive capabilitycreate_equal_columnsno sensitive capabilitycreate_hero_bandno sensitive capabilitycreate_highlight_card_rowno sensitive capabilitycreate_image_captionno sensitive capabilitycreate_image_frameno sensitive capabilitycreate_kpi_rowno sensitive capabilitycreate_kpi_tileno sensitive capabilitycreate_layerno sensitive capabilitycreate_lineno sensitive capabilitycreate_link_annotationno sensitive capabilitycreate_master_pageno sensitive capabilitycreate_numbered_badgeno sensitive capabilitycreate_numbered_stepsno sensitive capabilitycreate_path_textno sensitive capabilitycreate_pdf_checkboxno sensitive capabilitycreate_pdf_combo_boxno sensitive capabilitycreate_pdf_list_boxno sensitive capabilitycreate_pdf_push_buttonno sensitive capabilitycreate_pdf_radio_buttonno sensitive capabilitycreate_pdf_text_fieldno sensitive capabilitycreate_pie_chartno sensitive capabilitycreate_pillar_stripno sensitive capabilitycreate_polygonno sensitive capabilitycreate_polylineno sensitive capabilitycreate_qr_code_blockno sensitive capabilitycreate_radar_chartno sensitive capabilitycreate_rectangleno sensitive capabilitycreate_section_headerno sensitive capabilitycreate_sidebar_layoutno sensitive capabilitycreate_table_of_contentsno sensitive capabilitycreate_text_annotationno sensitive capabilitycreate_text_frameno sensitive capabilitycreate_text_with_imageno sensitive capabilitycreate_timelineno sensitive capabilitycreate_two_column_textno sensitive capabilitycreate_uri_annotationno sensitive capabilitydefine_color_cmykno sensitive capabilitydefine_color_rgbno sensitive capabilitydelete_colorno sensitive capabilitydelete_layerno sensitive capabilitydelete_master_pageno sensitive capabilitydelete_objectno sensitive capabilitydelete_pageno sensitive capabilityexport_pdfno sensitive capabilityfind_and_replace_textno sensitive capabilityfind_objectsno sensitive capabilityfont_is_availableno sensitive capabilityget_corner_radiusno sensitive capabilityget_current_pageno sensitive capabilityget_document_infono sensitive capabilityget_document_nameno sensitive capabilityget_fill_colorno sensitive capabilityget_font_sizeno sensitive capabilityget_horizontal_guidesno sensitive capabilityget_image_fileno sensitive capabilityget_js_actionno sensitive capabilityget_line_colorno sensitive capabilityget_line_widthno sensitive capabilityget_object_nameno sensitive capabilityget_object_positionno sensitive capabilityget_object_sizeno sensitive capabilityget_scribus_versionno sensitive capabilityget_textno sensitive capabilityget_text_frame_fontno sensitive capabilityget_unitno sensitive capabilityget_vertical_guidesno sensitive capabilityget_visible_textno sensitive capabilitygoto_pageno sensitive capabilitygroup_objectsno sensitive capabilityhas_documentno sensitive capabilityimport_markdownno sensitive capabilityimport_styles_from_fileno sensitive capabilityinstall_custom_fontno sensitive capabilityis_annotatedno sensitive capabilityis_object_lockedno sensitive capabilityis_text_overflowingno sensitive capabilitylayout_textno sensitive capabilitylink_text_framesno sensitive capabilitylist_character_stylesno sensitive capabilitylist_colorsno sensitive capabilitylist_extra_font_dirsno sensitive capabilitylist_fontsno sensitive capabilitylist_fonts_detailedno sensitive capabilitylist_layersno sensitive capabilitylist_master_pagesno sensitive capabilitylist_monospace_fontsno sensitive capabilitylist_page_objectsno sensitive capabilitylist_palette_rolesno sensitive capabilitylist_paragraph_stylesno sensitive capabilityload_imageno sensitive capabilitymove_objectno sensitive capabilitymove_pageno sensitive capabilityobject_existsno sensitive capabilityopen_documentno sensitive capabilityoutline_textno sensitive capabilitypreflight_checkno sensitive capabilityrename_objectno sensitive capabilityrender_page_to_imageno sensitive capabilityresize_objectno sensitive capabilityrevert_documentno sensitive capabilityrotate_objectno sensitive capabilitysave_documentno sensitive capabilitysave_document_asno sensitive capabilityscale_groupno sensitive capabilityscale_image_to_frameno sensitive capabilitysend_to_layerno sensitive capabilityset_active_layerno sensitive capabilityset_column_gapno sensitive capabilityset_columnsno sensitive capabilityset_corner_radiusno sensitive capabilityset_document_metadatano sensitive capabilityset_fill_colorno sensitive capabilityset_fill_shadeno sensitive capabilityset_fill_transparencyno sensitive capabilityset_first_line_offsetno sensitive capabilityset_fontno sensitive capabilityset_font_sizeno sensitive capabilityset_horizontal_guidesno sensitive capabilityset_image_offsetno sensitive capabilityset_image_scaleno sensitive capabilityset_js_actionno sensitive capabilityset_layer_printableno sensitive capabilityset_layer_visibleno sensitive capabilityset_line_capno sensitive capabilityset_line_colorno sensitive capabilityset_line_joinno sensitive capabilityset_line_shadeno sensitive capabilityset_line_spacingno sensitive capabilityset_line_spacing_modeno sensitive capabilityset_line_styleno sensitive capabilityset_line_transparencyno sensitive capabilityset_line_widthno sensitive capabilityset_object_lockedno sensitive capabilityset_outlineno sensitive capabilityset_outline_ptno sensitive capabilityset_page_marginsno sensitive capabilityset_shadowno sensitive capabilityset_shadow_ptno sensitive capabilityset_strikethroughno sensitive capabilityset_strikethrough_ptno sensitive capabilityset_textno sensitive capabilityset_text_alignmentno sensitive capabilityset_text_colorno sensitive capabilityset_text_horizontal_scaleno sensitive capabilityset_text_shadeno sensitive capabilityset_text_vertical_alignmentno sensitive capabilityset_text_vertical_scaleno sensitive capabilityset_underlineno sensitive capabilityset_underline_ptno sensitive capabilityset_unitno sensitive capabilityset_vertical_guidesno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v1.3.1 latest |
B 87/100 | 7 | 1.13.0 | 2026-08-25 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan scribus-mcp --online --registry pypi
Adapters for the FrontMCP framework
Transcend MCP Server — Admin tools.
Transcend MCP Server — Assessments tools.
MCP Server for Bling
MCP Server for Blogger API
Official MCP server for Brilliant Directories — manage members, posts, leads, reviews, and more.