@@ -15,9 +15,10 @@ MCP Server Code Extractor solves these problems by providing structured, tree-si
1515## Features
1616
1717- ** 🎯 Precise Extraction** : Uses tree-sitter parsing for accurate code boundary detection
18+ - ** 🔍 Semantic Search** : Search for function calls and code patterns across files and directories
1819- ** 🌍 30+ Languages** : Supports Python, JavaScript, TypeScript, Go, Rust, Java, C/C++, and many more
1920- ** 📍 Line Numbers** : Every extraction includes precise line number information
20- - ** 🔍 Code Discovery ** : List all functions and classes in a file before extracting
21+ - ** 🗂️ Directory Search ** : Search entire codebases with file pattern filtering and exclusions
2122- ** 📊 Depth Control** : Extract at different levels (top-level only, classes+methods, everything)
2223- ** 🌐 URL Support** : Fetch and extract code from GitHub, GitLab, and direct file URLs
2324- ** 🔄 Git Integration** : Extract code from any git revision, branch, or tag
@@ -132,7 +133,33 @@ Returns:
132133- parent: Parent class name (for methods)
133134```
134135
135- ### 2. ` get_function ` - Extract Complete Functions
136+ ### 2. ` search_code ` - Semantic Code Search
137+ Search for code patterns using tree-sitter parsing. Supports both single-file and directory-wide searches.
138+
139+ ```
140+ Parameters:
141+ - search_type: Type of search ("function-calls")
142+ - target: What to search for (e.g., "requests.get", "logger.error", "validateData")
143+ - scope: File path, directory path, or URL to search in
144+ - language: Programming language (auto-detected if not specified)
145+ - git_revision: Optional git revision (commit, branch, tag) - not supported for URLs
146+ - max_results: Maximum number of results to return (default: 100)
147+ - include_context: Include surrounding code lines for context (default: true)
148+ - file_patterns: File patterns for directory search (e.g., ["*.py", "*.js"])
149+ - exclude_patterns: File patterns to exclude (e.g., ["*.pyc", "node_modules/*"])
150+ - max_files: Maximum number of files to search in directory mode (default: 1000)
151+ - follow_symlinks: Whether to follow symbolic links in directory search (default: false)
152+
153+ Returns:
154+ - file_path: Path to file containing the match
155+ - start_line/end_line: Line numbers of the match
156+ - match_text: The matching code
157+ - context_before/context_after: Surrounding code lines
158+ - language: Detected programming language
159+ - metadata: Additional search information
160+ ```
161+
162+ ### 3. ` get_function ` - Extract Complete Functions
136163Extract a complete function with all its code.
137164
138165```
@@ -147,7 +174,7 @@ Returns:
147174- language: Detected language
148175```
149176
150- ### 3 . ` get_class ` - Extract Complete Classes
177+ ### 4 . ` get_class ` - Extract Complete Classes
151178Extract an entire class definition including all methods.
152179
153180```
@@ -162,7 +189,7 @@ Returns:
162189- language: Detected language
163190```
164191
165- ### 4 . ` get_lines ` - Extract Specific Line Ranges
192+ ### 5 . ` get_lines ` - Extract Specific Line Ranges
166193Get exact line ranges when you know the line numbers.
167194
168195```
@@ -177,7 +204,7 @@ Returns:
177204- line numbers and metadata
178205```
179206
180- ### 5 . ` get_signature ` - Get Function Signatures
207+ ### 6 . ` get_signature ` - Get Function Signatures
181208Quickly get just the function signature without the body.
182209
183210```
@@ -251,7 +278,39 @@ lines = get_lines("models/user.py", 10, 25)
251278# Returns: Lines 10-25 of the file
252279```
253280
254- ### Example 4: Multi-Language Support
281+ ### Example 4: Semantic Code Search
282+
283+ ``` python
284+ # Search for specific function calls in a single file
285+ results = search_code(
286+ search_type = " function-calls" ,
287+ target = " requests.get" ,
288+ scope = " src/api.py"
289+ )
290+ # Returns: All requests.get() calls with line numbers and context
291+
292+ # Search across an entire directory
293+ results = search_code(
294+ search_type = " function-calls" ,
295+ target = " logger.error" ,
296+ scope = " src/" ,
297+ file_patterns = [" *.py" ],
298+ exclude_patterns = [" test_*" , " __pycache__/*" ]
299+ )
300+ # Returns: All logger.error() calls across Python files, excluding tests
301+
302+ # Cross-language search in frontend code
303+ results = search_code(
304+ search_type = " function-calls" ,
305+ target = " fetchData" ,
306+ scope = " frontend/" ,
307+ file_patterns = [" *.js" , " *.ts" , " *.jsx" ],
308+ max_results = 50
309+ )
310+ # Returns: All fetchData() calls in JavaScript/TypeScript files
311+ ```
312+
313+ ### Example 5: Multi-Language Support
255314
256315``` javascript
257316// Works with JavaScript/TypeScript
@@ -277,11 +336,19 @@ method = get_function("main.go", "ServeHTTP")
277336## Best Practices
278337
279338### Progressive Discovery Workflow
280- 1 . ** Start with ` get_symbols ` ** using ` depth=1 ` to see file structure
281- 2 . ** Use depth control** - ` depth=2 ` for classes+methods, ` depth=0 ` for everything
282- 3 . ** Extract specific items** with ` get_function/get_class ` for implementation details
283- 4 . ** Use ` get_signature ` ** for quick API exploration without full code
284- 5 . ** Use ` get_lines ` ** when you know exact line numbers
339+ 1 . ** Start with ` search_code ` ** to find relevant functions and patterns across the codebase
340+ 2 . ** Use ` get_symbols ` ** with ` depth=1 ` to see file structure of interesting files
341+ 3 . ** Use depth control** - ` depth=2 ` for classes+methods, ` depth=0 ` for everything
342+ 4 . ** Extract specific items** with ` get_function/get_class ` for implementation details
343+ 5 . ** Use ` get_signature ` ** for quick API exploration without full code
344+ 6 . ** Use ` get_lines ` ** when you know exact line numbers
345+
346+ ### Semantic Search Tips
347+ - Use ** directory search** to find patterns across your entire codebase
348+ - Apply ** file patterns** to focus on specific languages or file types
349+ - Use ** exclusion patterns** to skip test files, build artifacts, and dependencies
350+ - Set appropriate ** max_results** and ** max_files** limits for large codebases
351+ - Enable ** context** to understand the surrounding code
285352
286353### Git Integration Tips
287354- Use git revisions to compare implementations across versions
0 commit comments