This directory contains comprehensive evaluation results for the SMP Model Context Protocol (MCP) tools, designed for AI agent integration.
-
FINAL_SUMMARY.md - Executive summary
- Critical bug fix details
- Tool maturity scores
- Recommendations for AI agents
- Next steps for developers
-
MCP_EVAL_REPORT.md - Comprehensive evaluation (503 lines)
- Tool-by-tool analysis (Tier 1-4)
- 4 scenario testing results
- Root cause analysis of limitations
- Agent-friendly usage patterns
- Detailed workarounds
-
MCP_TOOL_GUIDE.md - Tool reference (107 lines)
- Complete tool listing
- Parameter descriptions
- Usage examples
- Quick troubleshooting
-
MCP_EVALS.md - Evaluation scenarios
- 4 real-world test scenarios
- Expected vs. actual results
- Success criteria
Critical Bug Fixed:
- ✅ Language detection now works (was defaulting to Python)
- ✅ Rust/Java/Go/C++ files now properly parsed
- ✅ All 14 language parsers now functional
Working (Recommended):
- ✅ Single-language code navigation
- ✅ Function lookup by name
- ✅ Per-language call graphs
- ✅ Code context viewing
- ✅ 40+ MCP tools callable
Not Working (Limitations):
- ❌ Multi-language impact analysis (cross-file links broken)
- ❌ Semantic search (vector search ineffective)
- ❌ Type-based queries (not implemented)
| Tool | Score | Status | Recommendation |
|---|---|---|---|
| smp_update | 9/10 | ✅ | Use with auto-language detection |
| smp_navigate | 8/10 | ✅ | Recommended for name lookup |
| smp_context | 7/10 | ✅ | Good for code viewing |
| smp_search | 6/10 | ✅ | Use instead of smp_locate |
| smp_trace | 5/10 | Works within files only | |
| smp_impact | 4/10 | Single-file only | |
| smp_locate | 1/10 | ❌ | Avoid - use smp_navigate instead |
Overall: 6/10 (Conditional recommendation for single-language use)
- Analyzing single-language codebases only
- Need quick function lookup by exact name
- Want to understand local call graphs
- Need code snippets for context
- Need multi-language dependency analysis
- Require semantic/fuzzy search
- Need type-based queries
- Expecting cross-file link resolution
- Score: 9/10
- Result: SUCCESS
- Both Rust functions found with correct signatures
- Score: 2/10
- Result: FAILURE
- Rust function found, but Python caller not identified
- Root cause: Cross-file CALLS edges not resolved
- Score: 0/10
- Result: BROKEN
- SeedWalkEngine returns empty results
- Vector search ineffective
- Score: 5/10
- Result: PARTIAL
- Works within files, fails across files
smp/core/models.py(1 line) - Make language optionalsmp/protocol/handlers/memory.py(14 lines) - Add auto-detectionsmp/protocol/mcp_server.py(2 lines) - Update input schematests/test_models.py(1 line) - Update test expectation
FINAL_SUMMARY.md(230 lines)MCP_EVAL_REPORT.md(503 lines)MCP_TOOL_GUIDE.md(107 lines)MCP_EVALS.md(74 lines)
test_agent_utility.py(80 lines) - Multi-language scenariotest_language_detection_fix.py(75 lines) - Bug fix verificationtest_mcp_comprehensive.py(189 lines) - Tool verificationtest_mcp_direct.py(214 lines) - Direct MCP testing- Other diagnostic scripts (110 lines)
mcp_eval_project/- Multi-language test projectapi.py- Python entry pointcore.rs- Rust core moduleLegacyIntegration.java- Java module
Code Quality:
- ✅ Type checking: PASS (mypy)
- ✅ Linting: PASS (ruff)
- ✅ Tests: 40/40 passing
Functional Testing:
- ✅ Language detection: VERIFIED
- ✅ Single-language: PASSED (9/10)
- ✅ Multi-language: KNOWN BROKEN (2/10)
- ✅ Tool availability: All 40+ tools callable
- Implement cross-file CALLS edge resolution
- Track module imports properly
- Resolve external function references
- Disable/rewrite SeedWalkEngine
- Implement text-based search fallback
- Extract type information
- Add embedding cache
- Support background processing
- Better error messages
# Get all functions in a Rust file
await smp_update(UpdateInput(file_path="core.rs", content=rust_code))
nodes = await smp_search(SearchInput(query="core.rs"))
functions = [n for n in nodes if n["type"] == "Function"]# Find a function by name
entity = await smp_navigate(NavigateInput(query="compute_metric"))
print(f"Found at: {entity['file_path']}:{entity['start_line']}")# Get all functions called by a target
calls = await smp_calls(CallsInput(
entity=entity.id,
direction="outgoing",
depth=3
))# View code around a function
context = await smp_context(ContextInput(entity_id=entity.id))
print(context["code"])Status: ✅ READY FOR SINGLE-LANGUAGE USE
The SMP MCP tools are ready for production use in scenarios that:
- Analyze single-language codebases
- Need quick function/class lookup
- Want to understand call graphs
- Require code context viewing
Status: ❌ NOT RECOMMENDED
Do not use for:
- Cross-language impact analysis
- Multi-language dependency tracking
- Semantic search
- Type-based queries
Set clear expectations when deploying to AI agents.
- Generated: 2026-04-21
- Evaluator: OpenCode Agent v1.0
- Duration: 2 hours
- Coverage: 40+ tools, 14 languages, 4 scenarios
- Validation: 40/40 tests passing
For questions or to report issues with these tools, see the SMP documentation or open an issue on GitHub.