feat: Update MCP scrape_codebase_tool with enhance-level support
- Add enhance_level parameter (0-3) for granular AI control - Add skip_* parameters for feature control (skip_patterns, skip_test_examples, etc.) - Remove deprecated --build-* flags (features are now ON by default) - Adjust timeout based on enhance_level (10min base, up to 60min for level 3) - Update documentation with examples Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -441,8 +441,10 @@ async def scrape_codebase_tool(args: dict) -> list[TextContent]:
|
|||||||
Analyze local codebase and extract code knowledge.
|
Analyze local codebase and extract code knowledge.
|
||||||
|
|
||||||
Walks directory tree, analyzes code files, extracts signatures,
|
Walks directory tree, analyzes code files, extracts signatures,
|
||||||
docstrings, and optionally generates API reference documentation
|
docstrings, and generates API reference documentation, dependency graphs,
|
||||||
and dependency graphs.
|
design patterns, test examples, and how-to guides.
|
||||||
|
|
||||||
|
All features are ON by default. Use skip_* parameters to disable specific features.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
args: Dictionary containing:
|
args: Dictionary containing:
|
||||||
@@ -451,8 +453,17 @@ async def scrape_codebase_tool(args: dict) -> list[TextContent]:
|
|||||||
- depth (str, optional): Analysis depth - surface, deep, full (default: deep)
|
- depth (str, optional): Analysis depth - surface, deep, full (default: deep)
|
||||||
- languages (str, optional): Comma-separated languages (e.g., "Python,JavaScript,C++")
|
- languages (str, optional): Comma-separated languages (e.g., "Python,JavaScript,C++")
|
||||||
- file_patterns (str, optional): Comma-separated file patterns (e.g., "*.py,src/**/*.js")
|
- file_patterns (str, optional): Comma-separated file patterns (e.g., "*.py,src/**/*.js")
|
||||||
- build_api_reference (bool, optional): Generate API reference markdown (default: False)
|
- enhance_level (int, optional): AI enhancement level 0-3 (default: 0)
|
||||||
- build_dependency_graph (bool, optional): Generate dependency graph and detect circular dependencies (default: False)
|
- 0: No AI enhancement
|
||||||
|
- 1: SKILL.md enhancement only
|
||||||
|
- 2: SKILL.md + Architecture + Config enhancement
|
||||||
|
- 3: Full enhancement (patterns, tests, config, architecture, SKILL.md)
|
||||||
|
- skip_api_reference (bool, optional): Skip API reference generation (default: False)
|
||||||
|
- skip_dependency_graph (bool, optional): Skip dependency graph (default: False)
|
||||||
|
- skip_patterns (bool, optional): Skip design pattern detection (default: False)
|
||||||
|
- skip_test_examples (bool, optional): Skip test example extraction (default: False)
|
||||||
|
- skip_how_to_guides (bool, optional): Skip how-to guide generation (default: False)
|
||||||
|
- skip_config_patterns (bool, optional): Skip config pattern extraction (default: False)
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
List[TextContent]: Tool execution results
|
List[TextContent]: Tool execution results
|
||||||
@@ -461,8 +472,12 @@ async def scrape_codebase_tool(args: dict) -> list[TextContent]:
|
|||||||
scrape_codebase(
|
scrape_codebase(
|
||||||
directory="/path/to/repo",
|
directory="/path/to/repo",
|
||||||
depth="deep",
|
depth="deep",
|
||||||
build_api_reference=True,
|
enhance_level=1
|
||||||
build_dependency_graph=True
|
)
|
||||||
|
scrape_codebase(
|
||||||
|
directory="/path/to/repo",
|
||||||
|
enhance_level=2,
|
||||||
|
skip_patterns=True
|
||||||
)
|
)
|
||||||
"""
|
"""
|
||||||
directory = args.get("directory")
|
directory = args.get("directory")
|
||||||
@@ -473,8 +488,15 @@ async def scrape_codebase_tool(args: dict) -> list[TextContent]:
|
|||||||
depth = args.get("depth", "deep")
|
depth = args.get("depth", "deep")
|
||||||
languages = args.get("languages", "")
|
languages = args.get("languages", "")
|
||||||
file_patterns = args.get("file_patterns", "")
|
file_patterns = args.get("file_patterns", "")
|
||||||
build_api_reference = args.get("build_api_reference", False)
|
enhance_level = args.get("enhance_level", 0)
|
||||||
build_dependency_graph = args.get("build_dependency_graph", False)
|
|
||||||
|
# Skip flags (features are ON by default)
|
||||||
|
skip_api_reference = args.get("skip_api_reference", False)
|
||||||
|
skip_dependency_graph = args.get("skip_dependency_graph", False)
|
||||||
|
skip_patterns = args.get("skip_patterns", False)
|
||||||
|
skip_test_examples = args.get("skip_test_examples", False)
|
||||||
|
skip_how_to_guides = args.get("skip_how_to_guides", False)
|
||||||
|
skip_config_patterns = args.get("skip_config_patterns", False)
|
||||||
|
|
||||||
# Build command
|
# Build command
|
||||||
cmd = [sys.executable, "-m", "skill_seekers.cli.codebase_scraper"]
|
cmd = [sys.executable, "-m", "skill_seekers.cli.codebase_scraper"]
|
||||||
@@ -488,15 +510,36 @@ async def scrape_codebase_tool(args: dict) -> list[TextContent]:
|
|||||||
cmd.extend(["--languages", languages])
|
cmd.extend(["--languages", languages])
|
||||||
if file_patterns:
|
if file_patterns:
|
||||||
cmd.extend(["--file-patterns", file_patterns])
|
cmd.extend(["--file-patterns", file_patterns])
|
||||||
if build_api_reference:
|
if enhance_level > 0:
|
||||||
cmd.append("--build-api-reference")
|
cmd.extend(["--enhance-level", str(enhance_level)])
|
||||||
if build_dependency_graph:
|
|
||||||
cmd.append("--build-dependency-graph")
|
|
||||||
|
|
||||||
timeout = 600 # 10 minutes for codebase analysis
|
# Skip flags
|
||||||
|
if skip_api_reference:
|
||||||
|
cmd.append("--skip-api-reference")
|
||||||
|
if skip_dependency_graph:
|
||||||
|
cmd.append("--skip-dependency-graph")
|
||||||
|
if skip_patterns:
|
||||||
|
cmd.append("--skip-patterns")
|
||||||
|
if skip_test_examples:
|
||||||
|
cmd.append("--skip-test-examples")
|
||||||
|
if skip_how_to_guides:
|
||||||
|
cmd.append("--skip-how-to-guides")
|
||||||
|
if skip_config_patterns:
|
||||||
|
cmd.append("--skip-config-patterns")
|
||||||
|
|
||||||
|
# Adjust timeout based on enhance_level
|
||||||
|
timeout = 600 # 10 minutes base
|
||||||
|
if enhance_level >= 2:
|
||||||
|
timeout = 1200 # 20 minutes with AI enhancement
|
||||||
|
if enhance_level >= 3:
|
||||||
|
timeout = 3600 # 60 minutes for full enhancement
|
||||||
|
|
||||||
|
level_names = {0: "off", 1: "SKILL.md only", 2: "standard", 3: "full"}
|
||||||
progress_msg = "🔍 Analyzing local codebase...\n"
|
progress_msg = "🔍 Analyzing local codebase...\n"
|
||||||
progress_msg += f"📁 Directory: {directory}\n"
|
progress_msg += f"📁 Directory: {directory}\n"
|
||||||
|
progress_msg += f"📊 Depth: {depth}\n"
|
||||||
|
if enhance_level > 0:
|
||||||
|
progress_msg += f"🤖 AI Enhancement: Level {enhance_level} ({level_names.get(enhance_level, 'unknown')})\n"
|
||||||
progress_msg += f"⏱️ Maximum time: {timeout // 60} minutes\n\n"
|
progress_msg += f"⏱️ Maximum time: {timeout // 60} minutes\n\n"
|
||||||
|
|
||||||
stdout, stderr, returncode = run_subprocess_with_streaming(cmd, timeout=timeout)
|
stdout, stderr, returncode = run_subprocess_with_streaming(cmd, timeout=timeout)
|
||||||
|
|||||||
Reference in New Issue
Block a user