MCP server that exposes VIKI's skills and memory to external agents/IDEs. Implements the Model Context Protocol as a server so other agents, IDEs (VS Code, Cursor, etc.), and automation tools can list and invoke VIKI skills, query VIKI's knowledge graph and memory, and subscribe to events.
Two tools with basic descriptions but critical schema and parameter documentation gaps. shell_echo lacks input validation guidance and error recovery hints. http_get_sandbox has minimal parameter descriptions. Neither tool documents output schemas. Descriptions are present but generic (under 100 chars each). No tool annotations (readOnlyHint/destructiveHint). Parameter types visible in schema but descriptions are sparse. Error handling not documented. No guidance on when to use each tool vs alternatives.
Perform HTTP GET requests to sandbox-approved hosts only. Validates URL against internal host allowlist, enforces 10-second timeout, and returns response body (max 8000 chars).
Execute allowlisted shell commands with timeout and output capture. Validates binary against allowlist, runs with no shell=True, captures stdout/stderr, and enforces 15-second timeout.
No output schema documented for either tool. LLMs cannot plan downstream calls or extract structured data from responses.
Parameter descriptions are minimal or missing. 'argv' and 'url' lack format/constraint guidance. 'allowlist' and 'allowed_hosts' lack explanation of when/why they're needed.
No tool annotations (destructiveHint, readOnlyHint, idempotentHint). shell_echo is marked DESTRUCTIVE but lacks annotation; http_get_sandbox is READ_ONLY but lacks annotation.
Error handling not documented. No guidance on retryability, user-fixable errors, or recovery steps. E.g., what happens if a command times out or a host is not in allowlist?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | <=2025-11-25 | v2 |
shell_echo accepts 'allowlist' as a parameter, exposing security configuration to the caller. This should be server-side only; the tool should validate against a pre-configured allowlist, not accept it per-call.