Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.

sharkyger/mcp-safe-fetch

https://github.com/sharkyger/mcp-safe-fetch · scanned 2026-06-16 00:09 UTC (2 months, 2 weeks ago)

15 raw signals (0 security + 15 graph)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 2 months, 2 weeks ago · v1 · 14 actionable findings from 1 signal source. 1 repeated signal grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all

All 204 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.

LabelLayerStatusPath
test_validate_url_rejects_bad_schemes_and_structures software healthy tests/test_server.py:33
test_validate_url_blocks_ip_literals software healthy tests/test_server.py:59
test_validate_url_rejects_invalid_port software healthy tests/test_server.py:66
test_validate_url_blocks_localhost_literal software healthy tests/test_server.py:72
test_validate_url_accepts_plain_hostname software healthy tests/test_server.py:78
test_is_ip_literal software healthy tests/test_server.py:101
test_ip_is_private software healthy tests/test_server.py:129
_fake_getaddrinfo software healthy tests/test_server.py:136
_impl software healthy tests/test_server.py:139
test_resolve_and_validate_blocks_private_resolution software healthy tests/test_server.py:145
test_resolve_and_validate_rejects_mixed_public_and_private software healthy tests/test_server.py:153
test_resolve_and_validate_returns_pinned_public_ip software healthy tests/test_server.py:163
test_resolve_and_validate_raises_on_dns_failure software healthy tests/test_server.py:168
_boom software healthy tests/test_server.py:169
test_redirect_targets_are_rejected_by_validation software healthy tests/test_server.py:191
test_none_and_blank_return_none software healthy tests/test_server.py:201
test_valid_header_parsed software healthy tests/test_server.py:205
test_value_may_contain_colons software healthy tests/test_server.py:208
test_malformed_no_colon_raises software healthy tests/test_server.py:212
test_empty_name_raises software healthy tests/test_server.py:216
test_crlf_injection_dropped software healthy tests/test_server.py:220
__init__ software healthy tests/test_server.py:252
getheader software healthy tests/test_server.py:241
read software healthy tests/test_server.py:244
close software healthy tests/test_server.py:262
request software healthy tests/test_server.py:256
getresponse software healthy tests/test_server.py:259
_patch_fetch software healthy tests/test_server.py:266
_fake_make_connection software healthy tests/test_server.py:272
test_fetch_without_credential_sends_no_auth software healthy tests/test_server.py:280
test_fetch_sends_credential_on_original_origin software healthy tests/test_server.py:287
test_fetch_keeps_credential_on_same_origin_redirect software healthy tests/test_server.py:293
test_fetch_drops_credential_on_cross_origin_redirect software healthy tests/test_server.py:303
test_fetch_refuses_credential_over_http software healthy tests/test_server.py:313
test_handle_search_unconfigured_fails_closed software healthy tests/test_server.py:324
test_handle_search_missing_query software healthy tests/test_server.py:331
test_handle_search_rejects_control_char_query software healthy tests/test_server.py:336
test_handle_search_happy_path_wraps_results software healthy tests/test_server.py:342
test_wrap_round_trip_on_empty_input software healthy tests/test_sanitizer.py:16
test_zero_width_unicode_is_stripped software healthy tests/test_sanitizer.py:22
test_html_comments_are_stripped software healthy tests/test_sanitizer.py:30
test_script_tag_is_stripped software healthy tests/test_sanitizer.py:37
_inner_body software healthy tests/test_sanitizer.py:44
test_inner_untrusted_tags_in_plain_text_are_neutered software healthy tests/test_sanitizer.py:52
test_inner_untrusted_tags_in_html_are_neutered_by_parser software healthy tests/test_sanitizer.py:66
test_length_cap_is_enforced software healthy tests/test_sanitizer.py:82
test_wrap_uses_provided_url software healthy tests/test_sanitizer.py:90
test_envelope_url_is_output_encoded software healthy tests/test_sanitizer.py:95
test_valid_https_template_passes software healthy tests/test_search.py:26
test_valid_http_template_passes software healthy tests/test_search.py:29

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
README.md software healthy README.md
CLAUDE.md software healthy CLAUDE.md
Dockerfile software healthy Dockerfile
.coderabbit.yaml software healthy .coderabbit.yaml
pyproject.toml software healthy pyproject.toml
LICENSE software healthy LICENSE
NOTICE software healthy NOTICE
SCOPE.md software healthy SCOPE.md
PLAN.md software healthy PLAN.md
CHANGELOG.md software healthy CHANGELOG.md
__init__.py software healthy tests/__init__.py
test_server.py software healthy tests/test_server.py
test_sanitizer.py software healthy tests/test_sanitizer.py
test_search.py software healthy tests/test_search.py
en.md software healthy docs/install/en.md
fr.md software healthy docs/install/fr.md
de.md software healthy docs/install/de.md
README.md software healthy docs/install/img/README.md
FUNDING.yml software healthy .github/FUNDING.yml
dependabot.yml software healthy .github/dependabot.yml
docker.yml software healthy .github/workflows/docker.yml
ci.yml software healthy .github/workflows/ci.yml
sanitizer.py software healthy src/mcp_safe_fetch/sanitizer.py
__init__.py software healthy src/mcp_safe_fetch/__init__.py
search.py software healthy src/mcp_safe_fetch/search.py
server.py software healthy src/mcp_safe_fetch/server.py
__main__.py software healthy src/mcp_safe_fetch/__main__.py
CLAUDE.md quality healthy CLAUDE.md

LabelLayerStatusPath
127.0.0.1 network healthy README.md
10.0.0.5 network healthy README.md
169.254.169.254 network healthy README.md
172.16.0.1 network healthy tests/test_server.py
192.168.1.1 network healthy tests/test_server.py
8.8.8.8 network healthy tests/test_server.py
10.1.2.3 network healthy tests/test_server.py
100.64.0.1 network healthy tests/test_server.py
224.0.0.1 network healthy tests/test_server.py
240.0.0.1 network healthy tests/test_server.py
255.255.255.255 network healthy tests/test_server.py
93.184.216.34 network healthy tests/test_server.py
10.0.0.1 network healthy tests/test_server.py
127.0.0.0 network healthy src/mcp_safe_fetch/server.py
10.0.0.0 network healthy src/mcp_safe_fetch/server.py
172.16.0.0 network healthy src/mcp_safe_fetch/server.py
192.168.0.0 network healthy src/mcp_safe_fetch/server.py
169.254.0.0 network healthy src/mcp_safe_fetch/server.py
100.64.0.0 network healthy src/mcp_safe_fetch/server.py
224.0.0.0 network healthy src/mcp_safe_fetch/server.py
240.0.0.0 network healthy src/mcp_safe_fetch/server.py

LabelLayerStatusPath
TestParseSearchHeader software healthy tests/test_server.py:200
_FakeResp software healthy tests/test_server.py:232
_FakeConn software healthy tests/test_server.py:251
TestTemplateError software healthy tests/test_search.py:25
TestQueryError software healthy tests/test_search.py:74
TestBuildSearchUrl software healthy tests/test_search.py:100
TestLoadConfig software healthy tests/test_search.py:123
SanitizeResult software healthy src/mcp_safe_fetch/sanitizer.py:44
SearchConfig software healthy src/mcp_safe_fetch/search.py:61
FetchError software healthy src/mcp_safe_fetch/server.py:87
_PinnedHTTPConnection software healthy src/mcp_safe_fetch/server.py:175
_PinnedHTTPSConnection software healthy src/mcp_safe_fetch/server.py:186

LabelLayerStatusPath
tests software healthy tests
docs software healthy docs
install software healthy docs/install
img software healthy docs/install/img
.github software healthy .github
workflows software healthy .github/workflows
src software healthy src
mcp_safe_fetch software healthy src/mcp_safe_fetch

LabelLayerStatusPath
build cicd healthy .github/workflows/docker.yml
test cicd healthy .github/workflows/ci.yml
static-analysis cicd healthy .github/workflows/ci.yml
docker-build cicd healthy .github/workflows/ci.yml

LabelLayerStatusPath
REGISTRY cicd healthy
GITHUB_TOKEN cicd healthy
IMAGE_NAME cicd healthy

LabelLayerStatusPath
gha::docker cicd healthy .github/workflows/docker.yml
gha::ci cicd healthy .github/workflows/ci.yml

LabelLayerStatusPath
repobility-clone-na28krzp software healthy /tmp/repobility-clone-na28krzp

LabelLayerStatusPath
port:07 network healthy .github/dependabot.yml

LabelLayerStatusPath
image::Dockerfile hardware healthy Dockerfile

LabelLayerStatusPath
vps::aws hardware healthy tests/test_server.py
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/0c1aca1e-6ad2-42dd-846c-1de1d8423f97/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/0c1aca1e-6ad2-42dd-846c-1de1d8423f97/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.