MCP server for analyzing NFT application logs, identifying errors, and automatically filing GitHub issues using local Ollama LLM
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, error handling, and output structure. ping is a deprecated pattern (removed in 2026-07-28 spec). analyze_log_file lacks parameter descriptions for 'severity' and 'dry_run'. No output schemas documented. No error recovery guidance. No tool annotations. Descriptions are present but generic (10-50 chars for params). This server falls in the D/F range, major issues with LLM usability.
Start async log analysis. Returns job_id immediately. Use get_job_status to check progress.
Check status of a running analysis job
Health check
ping tool is deprecated (removed in MCP 2026-07-28 spec). Servers should not expose health checks as tools, use protocol-level keepalive instead.
analyze_log_file parameters 'severity' and 'dry_run' lack descriptions. LLMs cannot infer when to use severity=WARN vs ERROR vs CRITICAL, or what dry_run actually does (preview? no side effects?).
No output schemas documented for any tool. analyze_log_file returns JSON with job_id, status, message, log_file, but LLMs don't know this structure. get_job_status returns job_store[job_id] (untyped dict), could contain status, error, lines_filtered, chunks, issues_filed, github_issues, but no schema guides the LLM on what to expect.
Error handling is minimal. get_job_status returns a bare error dict if job_id not found, no recovery guidance. analyze_log_file background thread catches exceptions and stores them in job_store, but no tool tells the LLM how to recover from 'error' status or what the error means.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). analyze_log_file is destructive (files GitHub issues) but unmarked. LLMs cannot reason about retry safety or side effects.