MCP server for gori (고리), a free/open-source TUI web proxy (MITM) written in Crystal. Provides tools for intercepting, analyzing, and manipulating HTTP/WebSocket traffic.
gori MCP Server provides 29 tools with basic parameter schemas and descriptions, but exhibits significant quality gaps typical of community servers. While tool names follow verb_noun conventions (decode, create_repeater, list_issues), descriptions are inconsistent in depth and clarity. Most tools have JSON Schema input definitions with type annotations, but several lack critical parameter documentation, constraint specifications, and error guidance. Output schemas are not documented in source code. The server operates as a web security testing proxy integration (Burp-suite-like) with both read-only discovery tools and destructive write operations, but lacks proper permission gating and confirmation patterns for irreversible actions. Parameter validation rules are sparse, and recovery guidance in errors is absent.
Diff two flows' response bodies line by line
Create a new security issue
Create a new project
Create a new repeater session from raw payload, flow_id, or issue_id
Decode data using various encodings (base64, hex, URL, etc.) with optional truncation support
Delete an environment variable from the current project
Get results from a fuzzing operation
Missing output schema documentation for all 29 tools. Source code provides no visible documentation of return types, fields, or structure. LLMs cannot plan downstream chaining without knowing what fields each tool returns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2025-06-18+ | v2 |
Start a fuzzing operation
Get the status of a fuzzing operation
Get detailed information about a specific HTTP flow
Get detailed information about a specific issue
Get repeater sessions with optional content and sensitivity handling
Drop an intercepted HTTP flow
Forward an intercepted HTTP flow
List intercepted HTTP flows
Modify an intercepted HTTP flow
List environment variables for the current project
List HTTP flows from the project history
List discovered security issues
Get results from a mining operation
Start a mining/scanning operation
Get the status of a mining operation
Poll for pending operator messages
Get information about the current project
Send a message back to the operator
Send an HTTP request with optional rule application and audit recording
Set an environment variable for the current project
Switch to a different project
Update an existing repeater session
No error recovery guidance in tool descriptions. Tools like intercept_drop, intercept_modify, send_request perform irreversible operations but provide no error categories (retryable vs fatal), no recovery suggestions, and no user-fixable error messages. Pattern requires: 'User not found. Try search_users() with a partial name.'
No confirmation or dry-run pattern for destructive tools. Tools like intercept_drop (deletes an HTTP flow), delete_env_var (removes configuration), switch_project (changes state), and fuzz_start/mine_start (trigger long-running operations) lack multi-step confirmation or dry-run support. Agents can accidentally trigger harmful actions with no rollback path.
Sparse parameter descriptions and validation rules. Many tools have minimal parameter documentation. For example, create_repeater accepts 'flow_id' or 'issue_id' but descriptions do not clarify mutual exclusivity. fuzz_start and mine_start accept no parameters but descriptions say nothing about required configuration. Parameter constraints (min/max ranges, enums, patterns) are absent.
No pagination or result limiting documented. Tools like list_history, list_issues, intercept_list, mine_results, fuzz_results have no visible limit parameters, offset/cursor handling, or total count returns. Unbounded results risk context window exhaustion and degrade LLM reasoning on large datasets.
No permission gating documented. Destructive tools (intercept_drop, delete_env_var, fuzz_start on production data, mine_start) lack permission checks. Descriptions do not declare required scopes (e.g., 'read:flows', 'write:env'). An agent could be misconfigured with overly broad privileges.
Incomplete parameter type specifications in some tools. While most provide type info, tools like fuzz_start and mine_start appear to accept empty parameter objects, which is ambiguous. Descriptions do not clarify whether they require session configuration, target specification, or are completely stateless.
Tool composition gaps. Multi-step workflows (e.g., 'Create repeater from flow then compare results') require chaining tools whose return types are unknown. get_repeater_context returns 'context' but compare_flows accepts 'flow_id_a' and 'flow_id_b', the mapping between these is unclear. Missing include-chaining-ids pattern.
Descriptions lack WHEN-to-use context. Tools like decode, compare_flows, operator_messages have functional descriptions but do not explain use cases or prerequisites. Descriptions should answer: 'When would an LLM call this instead of a similar tool?' and 'What discovery step must happen first?'