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.

srgplus/srgplus-mcp

https://github.com/srgplus/srgplus-mcp · scanned 2026-06-16 00:20 UTC (2 months, 2 weeks ago)

75 raw signals (34 security + 41 graph)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 2 months, 2 weeks ago · v1 · 45 actionable findings from 2 signal sources. 61 repeated signals 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 350 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_single_source_accepts_url_only software healthy tests/test_assets.py:16
test_validate_single_source_accepts_base64_only software healthy tests/test_assets.py:20
test_validate_single_source_rejects_neither software healthy tests/test_assets.py:24
test_validate_single_source_rejects_both software healthy tests/test_assets.py:29
test_infer_extension software healthy tests/test_assets.py:44
_lifespan software healthy tests/conftest.py:42
receive software healthy tests/conftest.py:48
send software healthy tests/conftest.py:56
client software healthy tests/conftest.py:81
test_root_post_requires_auth software healthy tests/test_root_endpoint.py:16
test_root_post_serves_core_profile software healthy tests/test_root_endpoint.py:23
test_root_get_still_serves_branding_page software healthy tests/test_root_endpoint.py:42
test_unsuffixed_resource_doc_advertises_root software healthy tests/test_root_endpoint.py:50
_s256 software healthy tests/test_oauth.py:52
_consent_csrf software healthy tests/test_oauth.py:57
reset_state software healthy tests/test_oauth.py:70
srg_mock software healthy tests/test_oauth.py:78
_register software healthy tests/test_oauth.py:101
_full_authorize_flow software healthy tests/test_oauth.py:109
test_authorization_server_metadata software healthy tests/test_oauth.py:154
test_protected_resource_metadata software healthy tests/test_oauth.py:171
test_dcr_happy_path software healthy tests/test_oauth.py:189
test_dcr_rejects_missing_redirect_uris software healthy tests/test_oauth.py:211
test_dcr_rejects_relative_redirect_uri software healthy tests/test_oauth.py:218
test_dcr_rejects_non_none_auth_method software healthy tests/test_oauth.py:227
test_authorize_get_renders_consent software healthy tests/test_oauth.py:242
test_authorize_get_rejects_unregistered_redirect_uri software healthy tests/test_oauth.py:263
test_authorize_get_rejects_substring_redirect_uri software healthy tests/test_oauth.py:282
test_authorize_get_rejects_unknown_client_id software healthy tests/test_oauth.py:299
test_authorize_get_rejects_plain_pkce software healthy tests/test_oauth.py:314
test_authorize_post_valid_key_redirects_with_code software healthy tests/test_oauth.py:333
test_authorize_post_invalid_csrf_rerenders software healthy tests/test_oauth.py:371
test_authorize_post_csrf_is_stateless_across_instances software healthy tests/test_oauth.py:393
test_authorize_post_invalid_api_key_rerenders software healthy tests/test_oauth.py:436
test_token_code_exchange software healthy tests/test_oauth.py:477
test_token_code_replay_rejected software healthy tests/test_oauth.py:501
test_token_bad_pkce_verifier software healthy tests/test_oauth.py:530
test_token_redirect_uri_mismatch software healthy tests/test_oauth.py:548
test_token_unsupported_grant software healthy tests/test_oauth.py:566
test_refresh_token_grant_rotates software healthy tests/test_oauth.py:576
test_revoke_returns_200_for_anything software healthy tests/test_oauth.py:621
test_revoke_marks_access_token_invalid software healthy tests/test_oauth.py:629
test_mcp_unauthenticated_includes_www_authenticate software healthy tests/test_oauth.py:663
test_mcp_x_api_key_backward_compat software healthy tests/test_oauth.py:680
test_mcp_bearer_srgplus_backward_compat software healthy tests/test_oauth.py:700
test_mcp_oauth_bearer_jwt_works software healthy tests/test_oauth.py:715
test_mcp_invalid_jwt_returns_401 software healthy tests/test_oauth.py:746
test_cors_preflight_from_claude_ai software healthy tests/test_oauth.py:763
test_cors_preflight_for_mcp software healthy tests/test_oauth.py:779
test_favicon_ico_served software healthy tests/test_static.py:24

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
Dockerfile software healthy Dockerfile
server.json software healthy server.json
pyproject.toml software healthy pyproject.toml
test_assets.py software healthy tests/test_assets.py
__init__.py software healthy tests/__init__.py
conftest.py software healthy tests/conftest.py
test_root_endpoint.py software healthy tests/test_root_endpoint.py
test_oauth.py software healthy tests/test_oauth.py
test_static.py software healthy tests/test_static.py
test_instructions.py software healthy tests/test_instructions.py
test_core_profile.py software healthy tests/test_core_profile.py
test_stability.py software healthy tests/test_stability.py
cloudbuild.yaml software healthy infra/cloudbuild.yaml
__init__.py software healthy srg_mcp/__init__.py
guide.py software healthy srg_mcp/guide.py
contents.py software healthy srg_mcp/contents.py
assets.py software healthy srg_mcp/assets.py
hub_profiles.py software healthy srg_mcp/hub_profiles.py
_client.py software healthy srg_mcp/_client.py
users.py software healthy srg_mcp/users.py
_app.py software healthy srg_mcp/_app.py
server.py software healthy srg_mcp/server.py
permission_groups.py software healthy srg_mcp/permission_groups.py
workspaces.py software healthy srg_mcp/workspaces.py
channels.py software healthy srg_mcp/channels.py
__init__.py software healthy srg_mcp/serve/__init__.py
_tool_errors.py software healthy srg_mcp/serve/_tool_errors.py
profiles.py software healthy srg_mcp/serve/profiles.py
main.py software healthy srg_mcp/serve/main.py
__init__.py software healthy srg_mcp/serve/oauth/__init__.py
consent.html software healthy srg_mcp/serve/oauth/consent.html
store.py software healthy srg_mcp/serve/oauth/store.py
discovery.py software healthy srg_mcp/serve/oauth/discovery.py
pkce.py software healthy srg_mcp/serve/oauth/pkce.py
authorize.py software healthy srg_mcp/serve/oauth/authorize.py
token.py software healthy srg_mcp/serve/oauth/token.py
dcr.py software healthy srg_mcp/serve/oauth/dcr.py
jwt_codec.py software healthy srg_mcp/serve/oauth/jwt_codec.py
errors.py software healthy srg_mcp/serve/oauth/errors.py

LabelLayerStatusPath
auth::tests/test_oauth.py security healthy tests/test_oauth.py
auth::srg_mcp/serve/oauth/token.py security healthy srg_mcp/serve/oauth/token.py
auth::server.json security healthy server.json
auth::srg_mcp/serve/oauth/jwt_codec.py security healthy srg_mcp/serve/oauth/jwt_codec.py
auth::tests/test_static.py security healthy tests/test_static.py
auth::srg_mcp/serve/oauth/discovery.py security healthy srg_mcp/serve/oauth/discovery.py
auth::srg_mcp/serve/oauth/errors.py security healthy srg_mcp/serve/oauth/errors.py
auth::srg_mcp/serve/oauth/dcr.py security healthy srg_mcp/serve/oauth/dcr.py
auth::tests/conftest.py security healthy tests/conftest.py
auth::tests/test_core_profile.py security healthy tests/test_core_profile.py
auth::srg_mcp/serve/oauth/consent.html security healthy srg_mcp/serve/oauth/consent.html
auth::srg_mcp/serve/oauth/store.py security healthy srg_mcp/serve/oauth/store.py
auth::srg_mcp/serve/main.py security healthy srg_mcp/serve/main.py
auth::srg_mcp/serve/oauth/__init__.py security healthy srg_mcp/serve/oauth/__init__.py
auth::README.md security healthy README.md
auth::srg_mcp/serve/oauth/authorize.py security healthy srg_mcp/serve/oauth/authorize.py
auth::pyproject.toml security healthy pyproject.toml
auth::tests/test_root_endpoint.py security healthy tests/test_root_endpoint.py

LabelLayerStatusPath
_DummyClient software healthy tests/test_stability.py:18
_MCPEndpoint software healthy srg_mcp/serve/main.py:203
OAuthError software healthy srg_mcp/serve/oauth/errors.py:13
InvalidRequest software healthy srg_mcp/serve/oauth/errors.py:45
InvalidClient software healthy srg_mcp/serve/oauth/errors.py:53
InvalidGrant software healthy srg_mcp/serve/oauth/errors.py:59
UnauthorizedClient software healthy srg_mcp/serve/oauth/errors.py:65
UnsupportedGrantType software healthy srg_mcp/serve/oauth/errors.py:71
InvalidRedirectURI software healthy srg_mcp/serve/oauth/errors.py:77

LabelLayerStatusPath
tests software healthy tests
infra software healthy infra
srg_mcp software healthy srg_mcp
serve software healthy srg_mcp/serve
oauth software healthy srg_mcp/serve/oauth

LabelLayerStatusPath
repobility-clone-1eh5g9sm software healthy /tmp/repobility-clone-1eh5g9sm

LabelLayerStatusPath
redis data healthy srg_mcp/serve/oauth/store.py

LabelLayerStatusPath
port:8090 network healthy README.md

LabelLayerStatusPath
loadbalancer network healthy srg_mcp/serve/oauth/store.py

LabelLayerStatusPath
4.1.2.1 network healthy srg_mcp/serve/oauth/authorize.py

LabelLayerStatusPath
image::Dockerfile hardware healthy Dockerfile

LabelLayerStatusPath
vps::gcp hardware healthy README.md
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/f4eba3d5-3dfa-4a92-96d0-f0ef06d96b10/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/f4eba3d5-3dfa-4a92-96d0-f0ef06d96b10/

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.