A collection of MCP servers for code analysis and calculation tasks
MCP-Fresh has 13 tools with highly inconsistent quality. Basic calculator tools (add, subtract, multiply) have proper schemas and English descriptions, but the code analysis suite is severely underdocumented. Most critically: tools 4-6 and 9-13 have Chinese descriptions that are under 20 characters in English equivalent, making them non-compliant with description standards. No tool includes error recovery guidance, output schemas are undocumented, and parameter descriptions lack constraint information (e.g., file_path format, directory traversal safety). The codebase shows hardcoded absolute paths (/Users/yuanquan/code_project/GalaxyAI/MCP-Fresh) that compromise security and portability. Tools claim to be STDIO-based but the calculator_server.py and minimal_code_server.py files show uvicorn/FastAPI patterns inconsistent with standard STDIO MCP. Schema completeness varies widely, calculator tools have proper integer typing, but code analysis tools return complex nested dicts without documented structure.
Add two numbers together.
Semantic-level code analysis with complexity metrics and issue detection
Analyze project architecture, technology stack, and technical debt assessment
分析Python文件结构
统计文件行数
Generate conventional commit messages based on code changes description
Generate comprehensive docstrings for Python functions
Chinese tool descriptions (tools 4-6, 9) violate LLM-optimized description standard. '统计文件行数' (17 chars) and '分析Python文件结构' (13 chars) are below the 20-char minimum and untranslated. This prevents English-speaking LLMs and multi-language clients from understanding tool purpose.
Hardcoded absolute filesystem paths (/Users/yuanquan/code_project/GalaxyAI/MCP-Fresh) embedded in tool logic (minimal_code_server.py, lines 25, 72, 98) compromise security, portability, and fail on any other system. Path traversal vulnerability: analyze_python() accepts user-provided file_path without validation.
No output schemas documented for any tool. Tools 4-6 return complex nested dicts (e.g., get_project_overview returns {project_directory, summary, all_files} with per-file nested objects) but LLM cannot predict structure without explicit schema. Violates pattern:tool and pattern:response-shaper.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Get a comprehensive analysis report of a Python file with all metrics and recommendations
获取整个项目的概览信息
列出目录中的Python文件
Multiply two numbers together.
Subtract one number from another.
Suggest refactoring opportunities and code improvements
No error recovery guidance. Tools return {'error': <message>} but never suggest next steps. E.g., analyze_python returns 'File not found: <path>' with no hint to call list_python_files() first. Violates pattern:recovery-guide.
Parameter descriptions lack constraint information. file_path parameter in analyze_python() has description 'Python file path to analyze' but does not state: Must exist? Absolute or relative? What happens with ../traversal? What encoding? Violates pattern:constrained-input.
Tools 7-13 lack descriptions entirely or are under 20 chars in English. Tool 9 'Analyze project architecture, technology stack, and technical debt assessment' (80 chars) is good, but tools 4-6 have only Chinese descriptions. Violates rule: 'Every tool must have a non-empty description.'
No pagination or result limits. list_python_files() and get_project_overview() return unbounded result sets (all files in directory). No limit parameter, no offset/cursor, no total_count. Violates pattern:paginated-result.
Transport declaration mismatch. Server is labeled 'STDIO' but source code (calculator_server.py, minimal_code_server.py) use uvicorn + FastAPI HTTP server on port 8000, not STDIO. Protocol transport is ambiguous.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are READ_ONLY but no annotation in schema. Missing current MCP spec alignment feature (2026-07-28).
Duplicate or overlapping tool intent. analyze_python(), analyze_code_intelligence(), and get_comprehensive_analysis() all analyze Python files but with unclear distinctions. LLM cannot decide which to call without deeper reasoning. Violates pattern:tool composition.