clio-kit
PyPI
v2.10.6
Published by iowarp — 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.
CLIO Kit - MCP Servers, Clients, and Tools for AI Agents
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 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 7 = 93. 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.
In the server's implementation (`clio-kit-mcp-servers/hdf5/src/hdf5_mcp/server.py:943`): Evaluating strings as code is the most direct RCE primitive; if any tool input reaches it, the server executes attacker-chosen code. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: slice_obj = eval(f"np.s_[{slice_spec}]") except Exception: return f"Error: Invalid slice
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 clio-kit-mcp-servers/hdf5/src/hdf5_mcp/server.py
In the server's implementation (`clio-agentic-search/src/clio_agentic_search/tasks.py:9`): 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: -> int: completed = subprocess.run(command, check=False) return completed.returncode def lint() -> None: r
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 clio-agentic-search/src/clio_agentic_search/tasks.py
In the server's implementation (`clio-kit-mcp-servers/chronolog/src/chronomcp/utils/helpers.py:34`): 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: r(cmd_args): proc = subprocess.run( cmd_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
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 clio-kit-mcp-servers/chronolog/src/chronomcp/utils/helpers.py
In the server's implementation (`clio-kit-mcp-servers/jarvis/src/jarvis_mcp/capabilities/jarvis_handler.py:2322`): 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: : process = subprocess.Popen( argv, stdin=stdin_file, stdout
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 clio-kit-mcp-servers/jarvis/src/jarvis_mcp/capabilities/jarvis_handler.py
In the server's implementation (`clio-kit-mcp-servers/jarvis/src/jarvis_mcp/windows_job.py:99`): 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: SystemExit(125) child = subprocess.Popen(command, shell=message["shell"], stdin=descriptor) raise SystemExit(child.wait(
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 clio-kit-mcp-servers/jarvis/src/jarvis_mcp/windows_job.py
In the server's implementation (`clio-kit-mcp-servers/ndp/src/ndp_mcp/server.py:168`): 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: ry: completed = subprocess.run( command, check=False, capture_output=True,
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 clio-kit-mcp-servers/ndp/src/ndp_mcp/server.py
In the server's implementation (`clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/remote_node_info.py:216`): 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: ommand result = subprocess.run( ssh_cmd, capture_output=True, text=True,
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 clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/remote_node_info.py
In the server's implementation (`clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/utils.py:35`): 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( command, capture_output=True, text=True, timeout=timeout )
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 clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/utils.py
Untrusted-input tools ([download_paper_pdf, download_multiple_pdfs]) co-exist with external-action tools ([export_to_bibtex, export_to_json, export_to_csv, export_to_text]). A prompt injection could cause unwanted external actions, though no direct sensitive-data leak path was found.
Evidence: untrusted [download_paper_pdf, download_multiple_pdfs] → sinks [export_to_bibtex, export_to_json, export_to_csv, export_to_text]
Fix: Require confirmation for state-changing/egress actions triggered after processing untrusted content.
Location: flow download_paper_pdf → export_to_bibtex
In a packaging/dev/install script (shipped, but not the server runtime) (`clio-kit-mcp-servers/jarvis/scripts/live_ares_semantic_mcp_probe.py:36`): 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: self.process = subprocess.Popen( command, stdin=subprocess.PIPE, stdout=sub
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 clio-kit-mcp-servers/jarvis/scripts/live_ares_semantic_mcp_probe.py
In a packaging/dev/install script (shipped, but not the server runtime) (`clio-kit-mcp-servers/paraview/scripts/automate_setup.py:52`): 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: process = subprocess.Popen( cmd, cwd=cwd or self.project_root,
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 clio-kit-mcp-servers/paraview/scripts/automate_setup.py
In a packaging/dev/install script (shipped, but not the server runtime) (`clio-kit-mcp-servers/paraview/scripts/build_paraview.py:23`): 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: d.split() result = subprocess.run(cmd, cwd=cwd, capture_output=False, text=True) if check and result.returncode
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 clio-kit-mcp-servers/paraview/scripts/build_paraview.py
Each tool and what it can reach — statically extracted from the published source.
download_multiple_pdfsingests untrusted inputdownload_paper_pdfingests untrusted inputexport_to_bibtexnetwork egressexport_to_csvnetwork egressexport_to_jsonnetwork egressexport_to_textnetwork egressallocate_slurm_nodesno sensitive capabilityanalyze_file_access_patternsno sensitive capabilityanalyze_log_statisticsno sensitive capabilityanalyze_mpiio_operationsno sensitive capabilityanalyze_posix_operationsno sensitive capabilityappend_pkgno sensitive capabilityapply_field_coloringno sensitive capabilityapply_filter_presetno sensitive capabilitybuild_pipeline_envno sensitive capabilitycancel_slurm_jobno sensitive capabilitycheck_job_statusno sensitive capabilityclean_datano sensitive capabilitycompare_darshan_logsno sensitive capabilitycompress_file_toolno sensitive capabilitycompute_surface_areano sensitive capabilityconfigure_pkgno sensitive capabilityconfigure_volume_displayno sensitive capabilitycreate_data_sliceno sensitive capabilitycreate_geometric_shapeno sensitive capabilitycreate_pipelineno sensitive capabilitydata_infono sensitive capabilitydeallocate_slurm_nodesno sensitive capabilitydecompress_file_toolno sensitive capabilitydestroy_pipelineno sensitive capabilitydetect_log_patternsno sensitive capabilityedit_volume_opacityno sensitive capabilityexport_pipelineno sensitive capabilityfilter_by_keywordno sensitive capabilityfilter_by_time_rangeno sensitive capabilityfilter_datano sensitive capabilityfilter_logsno sensitive capabilityfind_similar_papersno sensitive capabilitygenerate_flow_streamlinesno sensitive capabilitygenerate_io_summary_reportno sensitive capabilitygenerate_isosurfaceno sensitive capabilitygenerate_summary_reportno sensitive capabilityget_active_source_names_by_typeno sensitive capabilityget_allocation_statusno sensitive capabilityget_available_arraysno sensitive capabilityget_column_preview_toolno sensitive capabilityget_cpu_infono sensitive capabilityget_dataset_detailsno sensitive capabilityget_disk_infono sensitive capabilityget_gpu_infono sensitive capabilityget_histogramno sensitive capabilityget_io_performance_metricsno sensitive capabilityget_job_detailsno sensitive capabilityget_job_outputno sensitive capabilityget_job_summaryno sensitive capabilityget_memory_infono sensitive capabilityget_network_infono sensitive capabilityget_node_infono sensitive capabilityget_paper_detailsno sensitive capabilityget_pdf_urlno sensitive capabilityget_performance_infono sensitive capabilityget_pipelineno sensitive capabilityget_pkg_configno sensitive capabilityget_process_infono sensitive capabilityget_queue_infono sensitive capabilityget_recent_papersno sensitive capabilityget_remote_node_infono sensitive capabilityget_sensor_infono sensitive capabilityget_slurm_infono sensitive capabilityget_system_infono sensitive capabilityget_timeline_analysisno sensitive capabilityhandle_missing_datano sensitive capabilityhealth_checkno sensitive capabilityidentify_io_bottlenecksno sensitive capabilityinspect_attributesno sensitive capabilityinspect_variablesno sensitive capabilityinspect_variables_at_stepno sensitive capabilityjm_add_repono sensitive capabilityjm_bootstrap_fromno sensitive capabilityjm_bootstrap_listno sensitive capabilityjm_cdno sensitive capabilityjm_construct_pkgno sensitive capabilityjm_create_configno sensitive capabilityjm_get_repono sensitive capabilityjm_graph_buildno sensitive capabilityjm_graph_modifyno sensitive capabilityjm_graph_showno sensitive capabilityjm_list_pipelinesno sensitive capabilityjm_list_reposno sensitive capabilityjm_load_configno sensitive capabilityjm_promote_repono sensitive capabilityjm_remove_repono sensitive capabilityjm_save_configno sensitive capabilityjm_set_hostfileno sensitive capabilitylist_available_hdf5_filesno sensitive capabilitylist_bp5no sensitive capabilitylist_commandsno sensitive capabilitylist_organizationsno sensitive capabilitylist_slurm_jobsno sensitive capabilityload_darshan_logno sensitive capabilityload_datano sensitive capabilityload_pipelineno sensitive capabilitymerge_datasetsno sensitive capabilitymodule_availno sensitive capabilitymodule_listno sensitive capabilitymodule_loadno sensitive capabilitymodule_restoreno sensitive capabilitymodule_saveno sensitive capabilitymodule_savelistno sensitive capabilitymodule_showno sensitive capabilitymodule_spiderno sensitive capabilitymodule_swapno sensitive capabilitymodule_unloadno sensitive capabilityoptimize_memoryno sensitive capabilityparallel_sort_large_fileno sensitive capabilitypivot_tableno sensitive capabilityplot_over_lineno sensitive capabilityprofile_csvno sensitive capabilityprofile_datano sensitive capabilityread_slice_toolno sensitive capabilityread_variable_at_stepno sensitive capabilityrecord_interactionno sensitive capabilityrefresh_hdf5_resourcesno sensitive capabilityreset_camerano sensitive capabilityretrieve_interactionno sensitive capabilityrotate_camerano sensitive capabilityrun_pipelineno sensitive capabilitysave_contour_as_stlno sensitive capabilitysave_datano sensitive capabilitysearch_arxivno sensitive capabilitysearch_by_abstractno sensitive capabilitysearch_by_subjectno sensitive capabilitysearch_by_titleno sensitive capabilitysearch_datasetsno sensitive capabilitysearch_date_rangeno sensitive capabilitysearch_papers_by_authorno sensitive capabilityset_active_sourceno sensitive capabilityset_color_mapno sensitive capabilityset_color_map_presetno sensitive capabilityset_representation_typeno sensitive capabilityshow_screenshot_previewno sensitive capabilitysort_log_by_timestampno sensitive capabilitystart_chronologno sensitive capabilitystatistical_summaryno sensitive capabilitystop_chronologno sensitive capabilitysubmit_array_jobno sensitive capabilitysubmit_slurm_jobno sensitive capabilitysummarize_toolno sensitive capabilitytake_viewport_screenshotno sensitive capabilitytime_series_operationsno sensitive capabilitytoggle_visibilityno sensitive capabilityupdate_pipelineno sensitive capabilityvalidate_datano sensitive capabilitywarp_by_vectorno 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 |
|---|---|---|---|---|
v2.10.6 latest |
A 93/100 | 12 | 1.13.0 | 2026-08-29 |
v2.10.5 |
A 93/100 | 12 | 1.13.0 | 2026-08-25 |
v2.10.3 |
A 93/100 | 12 | 1.12.1 | 2026-08-21 |
v2.10.1 |
A 93/100 | 12 | 1.12.1 | 2026-08-19 |
v2.9.0 |
A 93/100 | 12 | 1.12.1 | 2026-08-14 |
v2.7.2 |
A 93/100 | 12 | 1.12.1 | 2026-08-09 |
v2.7.0 |
A 93/100 | 11 | 1.12.1 | 2026-08-07 |
v2.6.5 |
A 93/100 | 12 | 1.12.1 | 2026-07-27 |
v2.6.3 |
A 93/100 | 12 | 1.9.0 | 2026-07-24 |
v2.6.2 |
A 93/100 | 12 | 1.9.0 | 2026-07-23 |
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 clio-kit --online --registry pypi
Operator control CLI for AdGuard Home with an MCP adapter
interacting with Aliyun (Alibaba Cloud) services through This MCP server provides tools.
MCP server for the Aspro.Cloud REST API
MCP server for Atlassian Confluence and Jira Cloud APIs
AuroraCloud-first MCP server that exposes AuroraDocs workspace data to Claude Desktop and other AI agents
The official AWS Knowledge Base retrieval server using Bedrock Agent Runtime.