Crowdsentinel MCP Server

crowdsentinel-mcp-server PyPI v0.6.0

Published by thomasxm — 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.

AI-powered threat hunting and incident response MCP server for Elasticsearch/OpenSearch with 139 tools, 6,060 detection rules, and baseline behaviour analysis

Trust grade
B
89/100
Last scanned get badge →
Trust
B · 89/100
Adoption risk for you: the threat score, then adjusted down for blast radius, publisher verification and how much the scan could see. Deterministic; every point is auditable.
Capability
Critical
Blast radius if it went rogue — what the server’s tools could reach. Independent of trust.
Coverage
Source
How much the scan could actually inspect. Shallow coverage is stated, never hidden.
Share this Trust Score
𝕏 Share LinkedIn Reddit
B Why this grade threat 100 − adoption risk = 89/100

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 − 11 = 89. 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:

PointsAdoption-risk factor
−10 capability blast radius (critical) — 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.

Findings 9

critical Completed toxic-flow trifecta across toolsMTC-FLOW-002

This server (without client built-ins) exposes a complete data-exfiltration chain: velociraptor_evidence_of_download → esql_query → export_to_misp. Untrusted input is ingested, private data is read, and it can be sent to an external sink via the agent composing the tools (→). Static analysis proves the primitive exists, not that a specific run will occur.

Fix: Remove one leg of the trifecta: isolate untrusted-input tools from secret-reading tools and from egress tools, or require human approval between them.

Location: flow velociraptor_evidence_of_download → esql_query → export_to_misp

high Reads a sensitive credential path or dumps the environment (src/clients/common/cyber_kill_chain.py)MTC-SRC-006

In the server's implementation (`src/clients/common/cyber_kill_chain.py:633`): Reading private keys / cloud credentials, or serializing the whole environment, is a sensitive-data source that becomes exfiltration when combined with any egress. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: " OR "/etc/sudoers" OR "id_rsa")', "archive_staging": "event.module:auditd AND process.name:(tar OR zip OR g

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/clients/common/cyber_kill_chain.py

high Shell/command execution in server code (src/agent/mcp_bridge.py)MTC-SRC-002

In the server's implementation (`src/agent/mcp_bridge.py:256`): 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: proc = subprocess.Popen( cmd, stdin=subprocess.PIPE, st

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/agent/mcp_bridge.py

high Shell/command execution in server code (src/clients/common/chainsaw_client.py)MTC-SRC-002

In the server's implementation (`src/clients/common/chainsaw_client.py:289`): 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: y: result = subprocess.run( cmd, capture_output=True, text=T

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/clients/common/chainsaw_client.py

high Shell/command execution in server code (src/clients/common/osquery_client.py)MTC-SRC-002

In the server's implementation (`src/clients/common/osquery_client.py:162`): 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: proc = subprocess.run(cmd, capture_output=True, text=True, timeout=30, check=False) except (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 src/clients/common/osquery_client.py

high Shell/command execution in server code (src/clients/common/schemas/query_builder.py)MTC-SRC-002

In the server's implementation (`src/clients/common/schemas/query_builder.py:131`): 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: ) def build_child_processes_query( self, parent_process_name: str, host: str, start_time: str, end_t

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/clients/common/schemas/query_builder.py

high Shell/command execution in server code (src/tools/esql_hunting.py)MTC-SRC-002

In the server's implementation (`src/tools/esql_hunting.py:516`): 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: ue, include_child_processes: bool = True, include_registry: bool = True, include_pro

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/tools/esql_hunting.py

high Shell/command execution in server code (src/wireshark/core/tshark_executor.py)MTC-SRC-002

In the server's implementation (`src/wireshark/core/tshark_executor.py:56`): 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: y: result = subprocess.run([self.tshark_path, "--version"], capture_output=True, text=True, timeout=10)

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/wireshark/core/tshark_executor.py

high Shell/command execution in server code (src/wireshark/extraction/object_extractor.py)MTC-SRC-002

In the server's implementation (`src/wireshark/extraction/object_extractor.py:72`): 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: result = subprocess.run(cmd, capture_output=True, text=True, timeout=300) # List extract

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/wireshark/extraction/object_extractor.py

Tools 139

Each tool and what it can reach — statically extracted from the published source.

  • esql_queryreads sensitive data
  • export_to_mispnetwork egress
  • osquery_queryreads sensitive data
  • velociraptor_evidence_of_downloadingests untrusted input
  • add_iocs_to_investigationno sensitive capability
  • analyze_failed_loginsno sensitive capability
  • analyze_kill_chain_stageno sensitive capability
  • analyze_process_creationno sensitive capability
  • analyze_search_resultsno sensitive capability
  • build_baselineno sensitive capability
Show 129 more tools ↓
  • build_unified_timelineno sensitive capability
  • check_esql_supportno sensitive capability
  • cleanup_storageno sensitive capability
  • close_investigationno sensitive capability
  • correlate_by_timeno sensitive capability
  • correlate_siem_with_endpointno sensitive capability
  • create_data_streamno sensitive capability
  • create_indexno sensitive capability
  • create_investigationno sensitive capability
  • decode_commandno sensitive capability
  • decode_trafficno sensitive capability
  • delete_aliasno sensitive capability
  • delete_by_queryno sensitive capability
  • delete_data_streamno sensitive capability
  • delete_documentno sensitive capability
  • delete_indexno sensitive capability
  • detect_beaconingno sensitive capability
  • detect_lateral_movementno sensitive capability
  • detect_schema_for_indexno sensitive capability
  • discover_all_assetsno sensitive capability
  • discover_esql_indicesno sensitive capability
  • endpoint_hunt_from_iocno sensitive capability
  • endpoint_to_siem_pivotno sensitive capability
  • enrich_iocsno sensitive capability
  • eql_deleteno sensitive capability
  • eql_get_statusno sensitive capability
  • eql_searchno sensitive capability
  • execute_detection_ruleno sensitive capability
  • execute_esql_huntno sensitive capability
  • execute_multiple_rulesno sensitive capability
  • export_iocsno sensitive capability
  • extract_objectsno sensitive capability
  • general_api_requestno sensitive capability
  • generate_investigation_reportno sensitive capability
  • generate_iocsno sensitive capability
  • generate_reportno sensitive capability
  • get_aliasno sensitive capability
  • get_cluster_healthno sensitive capability
  • get_cluster_statsno sensitive capability
  • get_data_streamno sensitive capability
  • get_diamond_model_guideno sensitive capability
  • get_documentno sensitive capability
  • get_enrichment_statusno sensitive capability
  • get_esql_execution_historyno sensitive capability
  • get_esql_hunt_detailsno sensitive capability
  • get_event_type_fieldsno sensitive capability
  • get_field_mappingno sensitive capability
  • get_host_activity_timelineno sensitive capability
  • get_indexno sensitive capability
  • get_index_metadatano sensitive capability
  • get_indices_by_typeno sensitive capability
  • get_investigation_queryno sensitive capability
  • get_investigation_summaryno sensitive capability
  • get_investigation_workflowno sensitive capability
  • get_kill_chain_overviewno sensitive capability
  • get_next_stepno sensitive capability
  • get_progressive_disclosureno sensitive capability
  • get_pyramid_of_pain_guideno sensitive capability
  • get_rule_detailsno sensitive capability
  • get_rule_statisticsno sensitive capability
  • get_saved_assetsno sensitive capability
  • get_schema_detailsno sensitive capability
  • get_shared_iocsno sensitive capability
  • get_system_statusno sensitive capability
  • hunt_adjacent_stagesno sensitive capability
  • hunt_anomaliesno sensitive capability
  • hunt_by_kill_chain_stageno sensitive capability
  • hunt_by_timeframeno sensitive capability
  • hunt_for_iocno sensitive capability
  • hunt_iocsno sensitive capability
  • hunt_suspicious_process_activityno sensitive capability
  • hunt_with_rule_categoryno sensitive capability
  • hunt_with_sigma_rulesno sensitive capability
  • index_documentno sensitive capability
  • investigate_with_promptno sensitive capability
  • iterative_huntno sensitive capability
  • list_aliasesno sensitive capability
  • list_available_capabilitiesno sensitive capability
  • list_available_schemasno sensitive capability
  • list_detection_rulesno sensitive capability
  • list_esql_huntsno sensitive capability
  • list_indicesno sensitive capability
  • list_investigationsno sensitive capability
  • lookup_iocno sensitive capability
  • map_events_to_kill_chainno sensitive capability
  • osquery_processesno sensitive capability
  • osquery_socketsno sensitive capability
  • osquery_usersno sensitive capability
  • pcap_overviewno sensitive capability
  • put_aliasno sensitive capability
  • quick_countno sensitive capability
  • quick_triageno sensitive capability
  • resume_investigationno sensitive capability
  • search_documentsno sensitive capability
  • search_ioc_in_evtxno sensitive capability
  • search_mispno sensitive capability
  • search_rules_by_mitre_attackno sensitive capability
  • search_with_luceneno sensitive capability
  • show_investigation_promptsno sensitive capability
  • smart_searchno sensitive capability
  • start_guided_investigationno sensitive capability
  • suggest_rules_for_datano sensitive capability
  • threat_hunt_searchno sensitive capability
  • track_sessionsno sensitive capability
  • validate_rule_for_datano sensitive capability
  • velociraptor_amcacheno sensitive capability
  • velociraptor_autorunsno sensitive capability
  • velociraptor_bamno sensitive capability
  • velociraptor_client_infono sensitive capability
  • velociraptor_collect_artifactno sensitive capability
  • velociraptor_evtxno sensitive capability
  • velociraptor_get_collection_resultsno sensitive capability
  • velociraptor_groupsno sensitive capability
  • velociraptor_list_artifactsno sensitive capability
  • velociraptor_list_clientsno sensitive capability
  • velociraptor_lnkno sensitive capability
  • velociraptor_mountsno sensitive capability
  • velociraptor_netstatno sensitive capability
  • velociraptor_ntfs_mftno sensitive capability
  • velociraptor_prefetchno sensitive capability
  • velociraptor_pslistno sensitive capability
  • velociraptor_recentdocsno sensitive capability
  • velociraptor_scheduled_tasksno sensitive capability
  • velociraptor_servicesno sensitive capability
  • velociraptor_shellbagsno sensitive capability
  • velociraptor_shimcacheno sensitive capability
  • velociraptor_srumno sensitive capability
  • velociraptor_userassistno sensitive capability
  • velociraptor_usersno sensitive capability

Toxic flows 1

Cross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).

What this scan could not see

Versions 1

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.

VersionScoreFindingsEngineScanned
v0.6.0 latest B 89/100 9 1.13.0 2026-08-25

Embed this score

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.

MCP Trust Score: B · 89/100
Markdown (GitHub README)
[![MCP Trust Score](https://mcptrustchecker.com/registry/crowdsentinel-mcp-server/badge.svg)](https://mcptrustchecker.com/registry/crowdsentinel-mcp-server)
HTML
<a href="https://mcptrustchecker.com/registry/crowdsentinel-mcp-server"><img src="https://mcptrustchecker.com/registry/crowdsentinel-mcp-server/badge.svg" alt="MCP Trust Score" height="20"></a>
Prefer shields.io styling? Point it at https://mcptrustchecker.com/registry/crowdsentinel-mcp-server/badge.json via https://img.shields.io/endpoint?url=…

Verify this score yourself

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 crowdsentinel-mcp-server --online --registry pypi

Use the free API → How scoring works

More in Security & Testing