72hours MCP
Scans public GitHub repositories for security risks, provides AI-generated fix prompts, and allows rescanning to confirm fixes. It integrates with AI coding tools like Claude Code and Codex.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://oboe-handiness-enroll.ngrok-free.dev/mcp/service/rpcWhat you can do with it
- Scan a public GitHub repository for security vulnerabilities
- Get AI-generated prompts to fix identified security risks
- Rescan the repository to confirm that fixes have been applied
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- 72hours-service 1.30.0
- MCP protocol
- 2025-06-18
- Tools
- 15 advertised
- Resources
- 0 advertised
- Resource templates
- 0 advertised
- Prompts
- 2 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"experimental": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
15 advertised
service_info
Learn the whole workflow and available service capabilities before creating work.
{
"type": "object",
"title": "service_infoArguments",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_workspace
Create a private, expiring workspace. Save its capability only in the user's AI conversation.
{
"type": "object",
"title": "create_workspaceArguments",
"properties": {}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}close_workspace
Revoke this workspace and its result access. Does not cancel already submitted backend jobs.
{
"type": "object",
"title": "close_workspaceArguments",
"required": [
"workspace_token"
],
"properties": {
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}start_scan
Start a REAL public GitHub scan. User authorization required. Reuse request_id on identical retries.
{
"type": "object",
"title": "start_scanArguments",
"required": [
"workspace_token",
"repository_url",
"request_id"
],
"properties": {
"authorized": {
"type": "boolean",
"title": "Authorized",
"default": false
},
"request_id": {
"type": "string",
"title": "Request Id"
},
"repository_url": {
"type": "string",
"title": "Repository Url"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_scan
Poll every >=10 seconds; on done return actual commit, coverage and up to 50 LLM-input findings.
{
"type": "object",
"title": "get_scanArguments",
"required": [
"workspace_token",
"scan_id"
],
"properties": {
"scan_id": {
"type": "string",
"title": "Scan Id"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}start_analysis
Start GPU Red/Blue review of one real scan finding. Same inputs deduplicate.
{
"type": "object",
"title": "start_analysisArguments",
"required": [
"workspace_token",
"scan_id",
"fingerprint"
],
"properties": {
"scan_id": {
"type": "string",
"title": "Scan Id"
},
"fingerprint": {
"type": "string",
"title": "Fingerprint"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_analysis
Poll GPU status and delivery gates; inference can take several minutes. Never fake ready results.
{
"type": "object",
"title": "get_analysisArguments",
"required": [
"workspace_token",
"analysis_id"
],
"properties": {
"analysis_id": {
"type": "string",
"title": "Analysis Id"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_fix_prompt
Get a gated real LLM proposal. Agent must inspect code, check repo/commit, fix and test in its workspace.
{
"type": "object",
"title": "get_fix_promptArguments",
"required": [
"workspace_token",
"analysis_id"
],
"properties": {
"analysis_id": {
"type": "string",
"title": "Analysis Id"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"type": "object",
"title": "get_fix_promptOutput",
"required": [
"result"
],
"properties": {
"result": {
"type": "string",
"title": "Result"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}rescan
Rescan the SAME repository default branch. Only published changes are visible; unpushed edits are not.
{
"type": "object",
"title": "rescanArguments",
"required": [
"workspace_token",
"previous_scan_id",
"request_id"
],
"properties": {
"authorized": {
"type": "boolean",
"title": "Authorized",
"default": false
},
"request_id": {
"type": "string",
"title": "Request Id"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
},
"previous_scan_id": {
"type": "string",
"title": "Previous Scan Id"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}generate_report
Generate the service's report from owned server scan and available analyses, indicating incomplete work.
{
"type": "object",
"title": "generate_reportArguments",
"required": [
"workspace_token",
"scan_id"
],
"properties": {
"scan_id": {
"type": "string",
"title": "Scan Id"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}incident_report
Draft only; NEVER submits. kind: assess/incident-24h/privacy-72h. incident requires discovered_at ISO time; optional organization {name,service_name,contact_email}, summary, incident_types, damage, actions_taken, personal_info {leaked: confirmed/suspected/none, affected_count, items}. Use only user-confirmed facts.
{
"type": "object",
"title": "incident_reportArguments",
"required": [
"workspace_token",
"scan_id",
"kind",
"incident"
],
"properties": {
"kind": {
"type": "string",
"title": "Kind"
},
"scan_id": {
"type": "string",
"title": "Scan Id"
},
"incident": {
"type": "object",
"title": "Incident",
"additionalProperties": true
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}audit_repository
One call security audit of a PUBLIC GitHub repo the user is authorized to scan. Creates a workspace if workspace_token is empty (keep the returned token private), scans, waits up to 90 s, starts GPU analysis for the top max_analyses (0-5) findings and returns summary + next steps. Reuse request_id only for the SAME request.
{
"type": "object",
"title": "audit_repositoryArguments",
"required": [
"repository_url",
"request_id"
],
"properties": {
"authorized": {
"type": "boolean",
"title": "Authorized",
"default": false
},
"request_id": {
"type": "string",
"title": "Request Id"
},
"max_analyses": {
"type": "integer",
"title": "Max Analyses",
"default": 3
},
"repository_url": {
"type": "string",
"title": "Repository Url"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token",
"default": ""
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}audit_status
Scan summary, analysis statuses and which fix prompts (get_fix_prompt) are ready, in one call.
{
"type": "object",
"title": "audit_statusArguments",
"required": [
"workspace_token",
"scan_id"
],
"properties": {
"scan_id": {
"type": "string",
"title": "Scan Id"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_fix
After fixes are PUSHED to the default branch: rescan the same repo against scan_id and list resolved, persisting, new and key-reissue-needed findings. Same commit means the fix was not pushed yet.
{
"type": "object",
"title": "check_fixArguments",
"required": [
"workspace_token",
"scan_id",
"request_id"
],
"properties": {
"scan_id": {
"type": "string",
"title": "Scan Id"
},
"authorized": {
"type": "boolean",
"title": "Authorized",
"default": false
},
"request_id": {
"type": "string",
"title": "Request Id"
},
"workspace_token": {
"type": "string",
"title": "Workspace Token"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}verify_demo
Runtime proof on the DEMO target only: isolated sandbox replays attacks before/after the fix and runs functional tests. mode: reference (human fix) or ai (Red/Blue generated attacks and fix). Not the user's repo. If a previous call returned status queued/running, pass its verify_job_id to keep polling the same job.
{
"type": "object",
"title": "verify_demoArguments",
"properties": {
"mode": {
"type": "string",
"title": "Mode",
"default": "reference"
},
"verify_job_id": {
"type": "string",
"title": "Verify Job Id",
"default": ""
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
2 advertised
security_audit
이 저장소의 보안 점검을 처음부터 끝까지 진행합니다.
- repository_url
- No description (required)
fix_and_verify
준비된 수정 지시로 고치고, push 후 재검사로 해결을 확인합니다.
- workspace_token
- No description (required)
- scan_id
- No description (required)
Resources
0 advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 2511 ms
- 95th percentile latency
- 2511 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2511 ms · metadata changed · 15 tool(s), 0 resource(s), 0 resource template(s), 2 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http 72hours-mcp https://oboe-handiness-enroll.ngrok-free.dev/mcp/service/rpcCodex
codex mcp add 72hours-mcp --url https://oboe-handiness-enroll.ngrok-free.dev/mcp/service/rpcCursor
{
"mcpServers": {
"72hours-mcp": {
"url": "https://oboe-handiness-enroll.ngrok-free.dev/mcp/service/rpc"
}
}
}Cline
{
"mcpServers": {
"72hours-mcp": {
"type": "streamableHttp",
"url": "https://oboe-handiness-enroll.ngrok-free.dev/mcp/service/rpc",
"disabled": false
}
}
}VS Code
{
"servers": {
"72hours-mcp": {
"type": "http",
"url": "https://oboe-handiness-enroll.ngrok-free.dev/mcp/service/rpc"
}
}
}Gemini CLI
gemini mcp add --transport http 72hours-mcp https://oboe-handiness-enroll.ngrok-free.dev/mcp/service/rpcClaude Desktop
{
"mcpServers": {
"72hours-mcp": {
"url": "https://oboe-handiness-enroll.ngrok-free.dev/mcp/service/rpc"
}
}
}Windsurf
{
"mcpServers": {
"72hours-mcp": {
"serverUrl": "https://oboe-handiness-enroll.ngrok-free.dev/mcp/service/rpc"
}
}
}Let your agent find its tools
Find servers like 72hours MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.