Skip to main content
Glama
voxmenthe

Search Tools MCP Server

by voxmenthe
README.md
# ๐Ÿ” Search Tools MCP Server

> โšก An intelligent Model Context Protocol (MCP) server that supercharges code analysis with advanced search capabilities and dependency mapping

## ๐ŸŒŸ Overview

The **Search Tools MCP Server** is a powerful toolkit that combines traditional code search with intelligent analysis algorithms. It leverages the **CodeRank** algorithm (inspired by PageRank) to identify the most critical modules in your codebase and provides sophisticated search capabilities that go beyond simple text matching.

## ๐ŸŽฏ Key Features

### ๐Ÿ”Ž **Smart Search Capabilities**
- **Contextual Keyword Search**: Ripgrep-powered search with configurable context lines
- **Symbol Discovery**: Extract and analyze functions, classes, methods, and modules
- **Usage Tracking**: Find where symbols are used across your codebase
- **Priority-Ranked Results**: Search results ranked by code importance

### ๐Ÿง  **Intelligence & Analysis**
- **CodeRank Algorithm**: Identify the most critical modules using network analysis
- **Dependency Mapping**: Trace complex dependency chains and impact analysis
- **Hotspot Detection**: Find code areas that are both highly connected and frequently used
- **Refactoring Impact**: Analyze the potential impact of code changes

### ๐ŸŽจ **Advanced Filtering**
- Symbol type filtering (functions, methods, classes)
- File inclusion/exclusion patterns
- External module dependency tracking
- Markdown documentation analysis

## ๐Ÿ› ๏ธ Installation

### Prerequisites
- Python 3.13+
- `uv` package manager
- `kit` CLI tool (for symbol analysis)
- `ripgrep` (for fast text search)

### Setup
```bash
# Clone the repository
git clone <repository-url>
cd search-tools

# Install dependencies
uv sync
```

## โš™๏ธ Configuration

### Adding to Cursor/Windsurf

Add the following configuration to your `mcp.json` file:

```json
{
  "mcpServers": {
    "search-tools": {
      "command": "/path/to/uv",
      "args": [
        "run",
        "--directory",
        "/path/to/search-tools",
        "main.py"
      ]
    }
  }
}
```

**For macOS users with Homebrew:**
```json
{
  "mcpServers": {
    "search-tools": {
      "command": "/Users/yourusername/.local/bin/uv",
      "args": [
        "run",
        "--directory",
        "/path/to/your/search-tools/directory",
        "main.py"
      ]
    }
  }
}
```

### To add to claude code:
```bash
claude mcp add-json search-tools '{"type":"stdio","command":"/Users/yourusername/.local/bin/uv","args":[ "run", "--directory", "/path/to/your/search-tools/directory", "main.py"]}'
```

### ๐Ÿ“ Finding Your Paths

To find the correct paths for your system:

```bash
# Find uv location
which uv

# Get absolute path to search-tools directory  
pwd  # (run this from the search-tools directory)
```

## ๐Ÿš€ Available Tools

### ๐Ÿ” `contextual_keyword_search`
Search for keywords with configurable context lines around matches.

**Parameters:**
- `keyword`: Search term (case insensitive)
- `working_directory`: Absolute path to search directory
- `num_context_lines`: Lines of context (default: 2)

### ๐Ÿ—๏ธ `get_repo_symbols`
Extract symbols (functions, classes, methods) from your codebase.

**Parameters:**
- `repo`: Repository path
- `working_directory`: Command execution directory
- `keep_types`: Filter by symbol types
- `file_must_contain/file_must_not_contain`: File filtering

### ๐Ÿ“Š `get_symbol_usages`
Find where specific symbols are used throughout your codebase.

**Parameters:**
- `repo`: Repository path
- `symbol_name_or_substring`: Symbol to search for
- `working_directory`: Command execution directory
- `symbol_type`: Optional type filter

### ๐ŸŽฏ `coderank_analysis`
Analyze repository importance using the CodeRank algorithm.

**Parameters:**
- `repo_path`: Repository to analyze
- `external_modules`: Comma-separated external dependencies
- `top_n`: Number of top modules to return (default: 10)
- `analyze_markdown`: Include markdown files
- `output_format`: "summary", "detailed", or "json"

### ๐Ÿ”ฅ `find_code_hotspots`
Identify critical code areas combining connectivity and usage frequency.

**Parameters:**
- `repo_path`: Repository path
- `working_directory`: Command execution directory
- `min_connections`: Minimum import connections (default: 5)
- `include_external`: Include external dependencies
- `top_n`: Number of hotspots to return (default: 20)

### ๐ŸŒ `trace_dependency_impact`
Trace dependency chains and analyze refactoring impact.

**Parameters:**
- `repo_path`: Repository path
- `target_module`: Module to analyze
- `working_directory`: Command execution directory
- `analysis_type`: "dependency", "refactoring", or "both"
- `max_depth`: Maximum trace depth (default: 3)
- `change_type`: "modify", "split", "merge", or "remove"

### ๐ŸŽช `smart_code_search`
Enhanced search combining ripgrep with CodeRank prioritization.

**Parameters:**
- `keyword`: Search term (supports regex)
- `repo_path`: Repository path
- `working_directory`: Command execution directory
- `rank_results`: Sort by module importance
- `context_lines`: Context lines around matches (default: 3)
- `max_results`: Maximum results to return (default: 20)

## ๐Ÿงช Development & Testing

### Running the Server
```bash
# Development mode
uv run mcp dev main.py

# Testing with MCP Inspector
npx @modelcontextprotocol/inspector python main.py
```

### ๐Ÿ”ง Dependencies
- **mcp[cli]**: Model Context Protocol framework
- **cased-kit**: Symbol analysis toolkit
- **networkx**: Graph analysis for CodeRank algorithm

## ๐ŸŽจ Algorithm Details

### CodeRank Algorithm
The CodeRank algorithm treats your codebase as a directed graph where:
- **Nodes**: Python modules, classes, functions, methods
- **Edges**: Import relationships and dependencies
- **Weights**: Different weights for internal vs external dependencies

This creates a ranking system that identifies the most "central" and important parts of your codebase, similar to how PageRank identifies important web pages.

## ๐Ÿ’ก Use Cases

- **๐Ÿ” Code Exploration**: Quickly understand large codebases
- **๐Ÿ—๏ธ Refactoring Planning**: Identify high-impact areas before changes
- **๐Ÿ“š Documentation**: Find the most important modules to document first
- **๐Ÿ› Bug Investigation**: Focus on critical code paths
- **๐Ÿ‘ฅ Code Review**: Prioritize review efforts on important modules

## ๐Ÿค Contributing

Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.

## ๐Ÿ“„ License

This project is open source. Please check the license file for details.

---

<div align="center">

**๐Ÿ”ฎ Powered by the CodeRank Algorithm & Model Context Protocol**

*Making code search intelligent, one repository at a time*

</div>

TDQS

B3.4/5.0

Scored across 21 tools

Disambiguation4/5

Each tool targets a specific analysis task, but several overlap (e.g., smart_code_search vs contextual_keyword_search; find_code_hotspots vs coderank_analysis) requiring careful reading of descriptions. The distinct focus areas keep them mostly separable.

Naming Consistency2/5

Tool names mix various verb prefixes (get_, find_, trace_, analyze_, discover_, map_, identify_) and some names are noun-led (coderank_analysis, contributor_impact_analysis). No consistent pattern emerges, making the surface harder to predict.

Tool Count3/5

21 tools is in the borderline heavy range per the rubric. Each tool covers a distinct analysis scenario, so it is not excessive, but the number is still large and could overwhelm an agent choosing which tool to invoke.

Completeness4/5

The set covers a wide array of code analysis needsโ€”search, symbols, dependencies, data flow, error handling, performance, testingโ€”and includes several composite tools. Minor gaps like dead code detection don't significantly detract from the overall surface.

Maintenance

ActivityInactive
ResponsivenessNo issues