yusyus
cee3fcf025
fix(A1.3): Add comprehensive validation to submit_config MCP tool
Issue: #11 (A1.3 - Add MCP tool to submit custom configs)
## Summary
Fixed submit_config MCP tool to use ConfigValidator for comprehensive validation
instead of basic 3-field checks. Now supports both legacy and unified config
formats with detailed error messages and validation warnings.
## Critical Gaps Fixed (6 total)
1. ✅ Missing comprehensive validation (HIGH) - Only checked 3 fields
2. ✅ No unified config support (HIGH) - Couldn't handle multi-source configs
3. ✅ No test coverage (MEDIUM) - Zero tests for submit_config_tool
4. ✅ No URL format validation (MEDIUM) - Accepted malformed URLs
5. ✅ No warnings for unlimited scraping (LOW) - Silent config issues
6. ✅ No url_patterns validation (MEDIUM) - No selector structure checks
## Changes Made
### Phase 1: Validation Logic (server.py lines 1224-1380)
- Added ConfigValidator import with graceful degradation
- Replaced basic validation (3 fields) with comprehensive ConfigValidator.validate()
- Enhanced category detection for unified multi-source configs
- Added validation warnings collection (unlimited scraping, missing max_pages)
- Updated GitHub issue template with:
* Config format type (Unified vs Legacy)
* Validation warnings section
* Updated documentation URL handling for unified configs
* Checklist showing "Config validated with ConfigValidator"
### Phase 2: Test Coverage (test_mcp_server.py lines 617-769)
Added 8 comprehensive test cases:
1. test_submit_config_requires_token - GitHub token requirement
2. test_submit_config_validates_required_fields - Required field validation
3. test_submit_config_validates_name_format - Name format validation
4. test_submit_config_validates_url_format - URL format validation
5. test_submit_config_accepts_legacy_format - Legacy config acceptance
6. test_submit_config_accepts_unified_format - Unified config acceptance
7. test_submit_config_from_file_path - File path input support
8. test_submit_config_detects_category - Category auto-detection
### Phase 3: Documentation Updates
- Updated Issue #11 with completion notes
- Updated tool description to mention format support
- Updated CHANGELOG.md with fix details
- Added EVOLUTION_ANALYSIS.md for deep architecture analysis
## Validation Improvements
### Before:
```python
required_fields = ["name", "description", "base_url"]
missing_fields = [field for field in required_fields if field not in config_data]
if missing_fields:
return error
```
### After:
```python
validator = ConfigValidator(config_data)
validator.validate() # Comprehensive validation:
# - Name format (alphanumeric, hyphens, underscores only)
# - URL formats (must start with http:// or https://)
# - Selectors structure (dict with proper keys)
# - Rate limits (non-negative numbers)
# - Max pages (positive integer or -1)
# - Supports both legacy AND unified formats
# - Provides detailed error messages with examples
```
## Test Results
✅ All 427 tests passing (no regressions)
✅ 8 new tests for submit_config_tool
✅ No breaking changes
## Files Modified
- src/skill_seekers/mcp/server.py (157 lines changed)
- tests/test_mcp_server.py (157 lines added)
- CHANGELOG.md (12 lines added)
- EVOLUTION_ANALYSIS.md (500+ lines, new file)
## Issue Resolution
Closes #11 - A1.3 now fully implemented with comprehensive validation,
test coverage, and support for both config formats.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 18:32:20 +03:00
..
2025-10-29 23:19:32 +03:00
2025-10-19 02:08:58 +03:00
2025-11-29 22:13:13 +03:00
2025-10-19 17:01:37 +03:00
2025-11-07 01:21:29 +03:00
2025-11-30 12:25:55 +03:00
2025-11-20 13:55:46 -08:00
2025-11-29 22:13:13 +03:00
2025-11-10 21:35:44 +03:00
2025-11-30 00:13:49 +03:00
2025-11-29 21:55:46 +03:00
2025-11-07 01:14:24 +03:00
2025-11-29 22:13:13 +03:00
2025-11-07 01:14:24 +03:00
2025-11-07 01:14:24 +03:00
2025-12-21 18:32:20 +03:00
2025-11-29 21:34:51 +03:00
2025-11-07 01:14:24 +03:00
2025-11-07 01:21:29 +03:00
2025-10-23 21:43:05 +03:00
2025-10-23 21:43:05 +03:00
2025-11-29 21:55:46 +03:00
2025-10-26 13:05:39 +03:00
2025-11-29 21:34:51 +03:00
2025-11-07 01:14:24 +03:00
2025-11-29 21:34:51 +03:00
2025-11-29 22:56:37 +03:00
2025-11-29 21:34:51 +03:00
2025-11-11 22:26:52 +03:00
2025-11-07 01:21:29 +03:00
2025-11-10 21:35:44 +03:00
2025-11-07 01:21:29 +03:00