scplus-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OLLAMA_HOST | No | Override Ollama host | |
| OLLAMA_API_KEY | No | Required only if your Ollama setup needs auth | |
| OPENAI_API_KEY | No | Fallback alias for API key | |
| OPENAI_BASE_URL | No | Fallback alias for base URL | https://api.openai.com/v1 |
| OLLAMA_CHAT_MODEL | No | Chat model used in generated config examples | nemotron-3-nano:4b-128k |
| OLLAMA_EMBED_MODEL | No | Ollama embedding model tag | qwen3-embedding:0.6b-32k |
| OPENAI_EMBED_MODEL | No | Fallback alias for embedding model | text-embedding-3-small |
| SCPLUS_EMBED_NUM_CTX | No | Pass num_ctx into Ollama embed options | |
| SCPLUS_EMBED_NUM_GPU | No | Pass num_gpu into Ollama embed options | |
| SCPLUS_EMBED_LOW_VRAM | No | Pass low_vram into Ollama embed options | |
| SCPLUS_EMBED_MAIN_GPU | No | Pass main_gpu into Ollama embed options | |
| SCPLUS_EMBED_PROVIDER | No | Select embedding provider mode: 'ollama' or 'openai' | ollama |
| SCPLUS_OPENAI_API_KEY | No | Preferred OpenAI-compatible API key when provider is 'openai' | |
| SCPLUS_PARENT_POLL_MS | No | Parent-process polling interval | |
| SCPLUS_EMBED_NUM_BATCH | No | Pass num_batch into Ollama embed options | |
| SCPLUS_IDLE_TIMEOUT_MS | No | Idle shutdown timeout for MCP process | |
| SCPLUS_OPENAI_BASE_URL | No | Preferred OpenAI-compatible base URL | https://api.openai.com/v1 |
| SCPLUS_EMBED_BATCH_SIZE | No | Embedding batch size, clamped in code | 8 |
| SCPLUS_EMBED_NUM_THREAD | No | Pass num_thread into Ollama embed options | |
| SCPLUS_EMBED_CHUNK_CHARS | No | Chunk chars before vector merge, clamped in code | 2000 |
| SCPLUS_OPENAI_EMBED_MODEL | No | Preferred OpenAI-compatible embedding model | text-embedding-3-small |
| SCPLUS_MAX_EMBED_FILE_SIZE | No | Max file size for embed-aware search paths | |
| SCPLUS_SCAN_MAX_MS_PER_TICK | No | Max scanner milliseconds per tick | 100 |
| SCPLUS_SCAN_STAT_CONCURRENCY | No | Max concurrent file stat calls per scanner tick | 16 |
| SCPLUS_SCAN_MAX_DIRS_PER_TICK | No | Max directories scanned per bounded watcher tick | 32 |
| SCPLUS_SCAN_MAX_FILES_PER_TICK | No | Max files fingerprinted per bounded watcher tick | 256 |
| SCPLUS_SCAN_RESCAN_INTERVAL_MS | No | Scanner tick interval cap used while watching | 1000 |
| SCPLUS_WATCH_EVENT_PATH_SAMPLE | No | Max changed paths included in one streamed event payload | 100 |
| SCPLUS_WATCH_MAX_PENDING_PATHS | No | Max detailed pending paths before escalating to full rebuild | 5000 |
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 | {} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| indexA | Create or refresh the .scplus project state for this repo. Builds the repo-local scplus layout, writes project config plus a context-tree snapshot into the durable sqlite substrate at .scplus/state/index.sqlite, persists stage state, indexing status, embedding caches, restore points, and file/identifier indexes there, and in full mode also persists chunk and code-structure artifacts with explicit contract metadata and no JSON mirrors. |
| validate_indexB | Validate that the prepared sqlite-backed index is present, version-compatible, and internally consistent for core or full mode. |
| repair_indexA | Repair the prepared index by rerunning the full pipeline or a specific durable stage, then validate the repaired state. |
| treeA | Get the structural tree of the project with file headers, function names, classes, enums, and line ranges. Automatically reads 2-line headers for file purpose. Dynamic token-aware pruning: Level 2 (deep symbols) -> Level 1 (headers only) -> Level 0 (file names only) based on project size. |
| symbolA | Run a tiny exact symbol lookup over the prepared fast-query substrate. Use this when you already know the symbol name and want deterministic exact matches instead of ranked related search. |
| wordA | Run a tiny indexed word lookup over paths, headers, symbols, and content snippets. Use this for exact words or short phrases before escalating to broader ranked search. |
| outlineA | Return a compact file outline from the prepared fast-query substrate. Use this when you know the file and want imports, exports, and symbols without broader search or full-body reads. |
| depsA | Return compact direct and reverse dependency information for one indexed file. Use this for exact dependency tracing instead of broader related search. |
| statusA | Return a tiny git worktree status summary for the current repository. Use this for branch and dirty-file checks instead of reading broader change context. |
| changesA | Return a tiny git change summary, optionally for one file. Use this for exact changed-file inspection and line-range summaries instead of broader repository search. |
| researchA | Aggregate ranked code retrieval, structure-backed related files, subsystem summaries, and relevant hubs into one bounded report. Use this for broad subsystem understanding after exact lookup or related-item search is no longer enough. |
| evaluateA | Run the built-in real benchmark harness across small, medium, monorepo, polyglot, ignored-tree, broken-state, and rename-freshness scenarios. Reports golden-query accuracy, validation rates, freshness reliability, and p50/p95/p99 query latency. |
| searchA | Route repository search by explicit intent. Use intent='exact' for deterministic fast-substrate answers when you know the exact symbol or file target, and intent='related' for ranked related-item and pattern discovery over the prepared full-engine artifacts. |
| skeletonA | Get detailed function signatures, class methods, and type definitions of a specific file WITHOUT reading the full body. Shows the API surface: function names, parameters, return types, and line ranges. Perfect for understanding how to use code without loading it all. |
| blast_radiusA | Before deleting or modifying code, check the BLAST RADIUS. Traces every file and line where a specific symbol (function, class, variable) is imported or used. Prevents orphaned code. Also warns if usage count is low (candidate for inlining). |
| lintA | Run the project's native linter/compiler to find unused variables, dead code, type errors, and syntax issues. Delegates detection to deterministic tools instead of LLM guessing. Supports TypeScript, Python, Rust, Go. |
| checkpointA | The ONLY way to write code. Validates the code against strict rules before saving: 2-line header comments, FEATURE tags, max nesting depth, max file length. Creates a shadow restore point before writing. REJECTS code that violates formatting rules. |
| restore_pointsA | List all shadow restore points created by checkpoint. Each point captures the file state before the AI made changes. Use this to find a restore point ID for undoing a bad change. |
| restoreA | Restore files to their state before a specific AI change. Uses the shadow restore point system. Does NOT affect git history. Call restore_points first to find the point ID. |
| clusterA | Browse the codebase by MEANING, not directory structure. Renders persisted semantic clusters, subsystem summaries, and related-file neighborhoods from the full index instead of recomputing them on demand. |
| find_hubA | Obsidian-style feature hub navigator. Hub files are .md files containing [[path/to/file]] wikilinks that act as a Map of Content. Modes: (1) No args = list all hubs plus persisted suggested hubs and feature-group candidates, (2) hub_path or feature_name = show hub with bundled skeletons of all linked files, (3) query = rank candidate hubs by keyword, semantic, or mixed retrieval, (4) show_orphans = find files not linked to any hub. Prevents orphaned code and enables graph-based codebase navigation. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| scplus_mcp_instructions |
TDQS
Scored across 21 tools
Several tools have overlapping purposes, such as tree/skeleton/outline for file structure and symbol/word/search for lookup, making it easy for an agent to select the wrong one. Descriptions help but do not fully resolve the ambiguity, and groups like research/cluster/find_hub blur boundaries further.
Names are a mix of single words (status, tree, symbol, outline, lint) and verb_noun phrases (validate_index, repair_index, restore_points, find_hub, blast_radius) with no consistent pattern. This inconsistency makes it harder to predict related tool names or infer their function.
At 21 tools, the surface is borderline heavy, though the server covers a broad and complex domain. Some tools could be consolidated (e.g., skeleton vs outline), but the count is not extreme enough to be problematic.
The toolset covers the full lifecycle of indexing, validation, repair, retrieval, dependency tracing, linting, code writing, and restoration. The main gap is the absence of a raw file-content read tool, but this appears to be an intentional design to favor structural summaries over full-body reads.