feat(C2.6): Add dependency graph support to MCP scrape_codebase tool

- Add build_dependency_graph parameter to scrape_codebase MCP tool
- Update tool documentation with new parameter
- Pass --build-dependency-graph flag to CLI command
- Update FastMCP server function signature

Usage via MCP:
  scrape_codebase(
      directory="/path/to/repo",
      build_dependency_graph=True
  )

This completes the C2.6 feature set by exposing dependency graph
generation through the MCP interface, making it available to all
MCP clients (Claude Code, Cursor, etc.).
This commit is contained in:
yusyus
2026-01-01 23:31:49 +03:00
parent b30a45a7a4
commit 0511486677
2 changed files with 12 additions and 3 deletions

View File

@@ -396,7 +396,7 @@ async def scrape_pdf(
@safe_tool_decorator(
description="Analyze local codebase and extract code knowledge. Walks directory tree, analyzes code files, extracts signatures, docstrings, and optionally generates API reference documentation."
description="Analyze local codebase and extract code knowledge. Walks directory tree, analyzes code files, extracts signatures, docstrings, and optionally generates API reference documentation and dependency graphs."
)
async def scrape_codebase(
directory: str,
@@ -405,6 +405,7 @@ async def scrape_codebase(
languages: str = "",
file_patterns: str = "",
build_api_reference: bool = False,
build_dependency_graph: bool = False,
) -> str:
"""
Analyze local codebase and extract code knowledge.
@@ -416,6 +417,7 @@ async def scrape_codebase(
languages: Comma-separated languages to analyze (e.g., "Python,JavaScript,C++")
file_patterns: Comma-separated file patterns (e.g., "*.py,src/**/*.js")
build_api_reference: Generate API reference markdown (default: false)
build_dependency_graph: Generate dependency graph and detect circular dependencies (default: false)
Returns:
Codebase analysis results with file paths.
@@ -427,6 +429,7 @@ async def scrape_codebase(
"languages": languages,
"file_patterns": file_patterns,
"build_api_reference": build_api_reference,
"build_dependency_graph": build_dependency_graph,
}
result = await scrape_codebase_impl(args)

View File

@@ -438,7 +438,8 @@ async def scrape_codebase_tool(args: dict) -> List[TextContent]:
Analyze local codebase and extract code knowledge.
Walks directory tree, analyzes code files, extracts signatures,
docstrings, and optionally generates API reference documentation.
docstrings, and optionally generates API reference documentation
and dependency graphs.
Args:
args: Dictionary containing:
@@ -448,6 +449,7 @@ async def scrape_codebase_tool(args: dict) -> List[TextContent]:
- languages (str, optional): Comma-separated languages (e.g., "Python,JavaScript,C++")
- file_patterns (str, optional): Comma-separated file patterns (e.g., "*.py,src/**/*.js")
- build_api_reference (bool, optional): Generate API reference markdown (default: False)
- build_dependency_graph (bool, optional): Generate dependency graph and detect circular dependencies (default: False)
Returns:
List[TextContent]: Tool execution results
@@ -456,7 +458,8 @@ async def scrape_codebase_tool(args: dict) -> List[TextContent]:
scrape_codebase(
directory="/path/to/repo",
depth="deep",
build_api_reference=True
build_api_reference=True,
build_dependency_graph=True
)
"""
directory = args.get("directory")
@@ -468,6 +471,7 @@ async def scrape_codebase_tool(args: dict) -> List[TextContent]:
languages = args.get("languages", "")
file_patterns = args.get("file_patterns", "")
build_api_reference = args.get("build_api_reference", False)
build_dependency_graph = args.get("build_dependency_graph", False)
# Build command
cmd = [sys.executable, "-m", "skill_seekers.cli.codebase_scraper"]
@@ -483,6 +487,8 @@ async def scrape_codebase_tool(args: dict) -> List[TextContent]:
cmd.extend(["--file-patterns", file_patterns])
if build_api_reference:
cmd.append("--build-api-reference")
if build_dependency_graph:
cmd.append("--build-dependency-graph")
timeout = 600 # 10 minutes for codebase analysis