Context Tools Plugin - Usage Guide
Dynamic Directory Support (v0.8.0+)
GOOD NEWS: MCP tools automatically adapt to the current working directory!
How it works:
cd /home/user/project-a
# MCP tools query/index project-a/.claude/repo-map.db
cd /home/user/project-b
# MCP tools now query/index project-b/.claude/repo-map.db ✅
Behavior:
- Tools check current working directory on each call
- If
.claude/repo-map.dbexists: query it - If not: trigger indexing for current directory
- Logs show which directory is being queried
Benefits:
- No need to restart session when changing projects
- Can work with multiple projects in one session
- Each project maintains its own index
- Tools "just work" wherever you are
Plugin Installation and Updates
CRITICAL: When the user runs /plugin install or /plugin update:
The MCP server configuration changes immediately, but the MCP server itself does not restart automatically. The new plugin features (especially MCP tools like search_symbols) will NOT be available until the session restarts.
YOU MUST tell the user:
The plugin has been installed/updated successfully. To use the MCP tools (search_symbols, get_file_symbols, etc.), you need to restart the session:
1. Exit this session (Ctrl+C or type 'exit')
2. Start a new session with: claude continue
The MCP server will restart with the new plugin configuration.
When to give this instruction:
- Immediately after the user runs
/plugin install context-tools - Immediately after the user runs
/plugin update context-tools - When the user tries to use MCP tools but they're not available (and you suspect they just installed)
Why this matters:
- MCP servers are started when Claude Code starts
- Plugin installation modifies MCP server configuration
- Changes only take effect on next Claude Code startup
- Users will be confused if tools don't work after installation
Available MCP Tools
Once the session has been restarted after installation, the following MCP tools are available:
mcp__repo-map__search_symbols
Search for symbols (functions, classes, methods) by name pattern.
Faster than Grep/Search - uses pre-built SQLite index.
Parameters:
pattern(required): Glob pattern likeget_*,*Handler,Config*kind(optional): Filter by"class","function", or"method"limit(optional): Max results (default: 20)
Example:
{
"pattern": "parse_*",
"kind": "function",
"limit": 10
}
mcp__repo-map__get_file_symbols
Get all symbols defined in a specific file.
Parameters:
file(required): Relative path from project root (e.g.,"src/models/user.py")
mcp__repo-map__get_symbol_content
Get the source code content of a symbol by exact name.
Faster than Grep/Search+Read - directly retrieves function/class source code.
Parameters:
name(required): Exact symbol name (e.g.,"MyClass","User.save")kind(optional): Filter by type if name is ambiguous
mcp__repo-map__reindex_repo_map
Trigger a reindex of the repository symbols.
Parameters:
force(optional): Force reindex even if cache is fresh (default: false)
mcp__repo-map__repo_map_status
Get the current status of the repo map index.
Shows:
- Index status:
idle,indexing,completed, orfailed - Symbol count
- Last indexed time
- Whether index is stale
- Indexing errors (if any)
mcp__repo-map__wait_for_index
Wait for indexing to complete.
Parameters:
timeout_seconds(optional): How long to wait (default: 60)
Note: Most tools automatically wait for indexing to complete, so this is rarely needed.
Database Schema (.claude/repo-map.db)
symbols table:
name(TEXT): Symbol namekind(TEXT):class,function, ormethodfile_path(TEXT): Relative path from project rootline_number(INTEGER): Start line (1-indexed)end_line_number(INTEGER): End line (nullable)parent(TEXT): Parent class/module (nullable)docstring(TEXT): First line of docstring (nullable)signature(TEXT): Function/method signature (nullable)language(TEXT):python,cpp, orrust
metadata table (v0.7.0+):
key(TEXT PRIMARY KEY): Metadata keyvalue(TEXT): Metadata value
Keys:
status:idle|indexing|completed|failedindex_start_time: ISO8601 timestamp when indexing startedlast_indexed: ISO8601 timestamp when last completedsymbol_count: Total symbols indexed (string)error_message: Error message if status='failed'
Indexing Status and Auto-Wait (v0.7.0+)
First Use Behavior:
- On first use, indexing starts automatically in background
- Tools automatically wait (up to 60s) if indexing is in progress
- If timeout, tools return helpful error asking user to retry
Watchdog (v0.7.0+):
- Detects hung indexing processes (>10 minutes)
- Automatically resets status to 'failed'
- Can be manually recovered with
reindex_repo_map
Multiprocess Architecture (v0.8.0+):
- Indexing runs in separate subprocess
- MCP server remains responsive even if indexing hangs
- Watchdog can kill hung subprocess without affecting MCP server
- Resource limits (Unix/macOS): 4GB memory, 20 min CPU time
When to Use MCP Tools vs Other Tools
Use MCP repo-map tools when:
- Searching for symbols by name pattern (faster than Grep)
- Getting all symbols in a file (faster than Read + parsing)
- Getting source code of a specific function/class (faster than Grep + Read)
- Need to search across multiple languages (Python, C++, Rust)
Use other tools when:
- Searching file contents (not symbol names) - use Grep
- Reading entire files - use Read
- Need to search files that aren't Python/C++/Rust
- Searching for non-code patterns (comments, strings, etc.)
Project-Specific Files
Automatically generated at session start:
.claude/project-manifest.json- Project structure and build commands.claude/repo-map.md- Human-readable code structure with duplicate detection.claude/repo-map.db- SQLite database for fast symbol queries (MCP server)
Optional (created manually):
.claude/learnings.md- Project-specific learnings and discoveries
Logs:
.claude/logs/repo-map-server.log- MCP server rotating log (1MB per file, 3 backups)- Tool calls and results
- Indexing events and performance
- Watchdog actions and resource limit violations
- Server startup/shutdown
- Session start hook outputs are also logged for debugging