mcp-semantic-search
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QDRANT_URL | Yes | URL of the Qdrant vector database (default: http://localhost:6333) | |
| GEMINI_API_KEY | Yes | Google Gemini API key | |
| CHUNK_MAX_LINES | No | Maximum lines per chunk (default: 50) | |
| CHUNK_MIN_LINES | No | Minimum lines for valid chunk (default: 5) | |
| CHUNK_OVERLAP_LINES | No | Overlap between chunks (default: 10) | |
| GEMINI_EMBEDDING_MODEL | No | Embedding model (default: text-embedding-004) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| index_codebaseA | Index the codebase for semantic search. This operation adds files to the indexing queue immediately (no debounce). Use get_status() to track progress. |
| search_codeB | Search the codebase using natural language. |
| get_statusA | Get the current index status and queue progress. Returns: Dict with collection info, statistics, and real-time queue status. |
| clear_indexA | Clear the entire index. Use this to start fresh or recover from errors. Returns: Dict with confirmation status. |
| search_fileB | Search within a specific file. |
| start_live_watchA | Start live file watching for automatic reindexing. When enabled, the server will automatically detect file changes and add them to the indexing queue with debouncing. |
| stop_live_watchA | Stop the live file watcher. Returns: Dict with status. |
| get_live_watch_statusB | Get the status of the live file watcher. Returns: Dict with current state. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_status_resource | Resource for getting index status. |
TDQS
Scored across 8 tools
search_code and search_file are distinct (codebase vs specific file), but their names are similar and could be confused without careful reading. get_status and get_live_watch_status also target different subsystems but share a naming pattern. Other tools have clearly unique roles.
Tools follow a verb_noun pattern with consistent snake_case (search_code, clear_index, start_live_watch). Verbs vary (search, get, clear, start, stop, index) but the pattern is predictable. Minor deviation: index_codebase uses verb+noun while others use search_/get_ prefixes, but it remains consistent in style.
8 tools is well within the ideal range and each covers a necessary function for a semantic search server: indexing, searching, status, and lifecycle management. No redundant tools are present.
The server covers the core lifecycle: index (manual and watch), search (codebase and file), status (index and watcher), and clear. Missing is the ability to remove a specific file from the index or selectively reindex, but agents can clear and reindex as a workaround.