Skip to main content
Glama
semantic-code-mcp
by vrppaul

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SEMANTIC_CODE_MCP_DEBUGNoEnable debug loggingfalse
SEMANTIC_CODE_MCP_PROFILENoEnable pyinstrument profilingfalse
SEMANTIC_CODE_MCP_CACHE_DIRNoWhere indexes are stored~/.cache/semantic-code-mcp
SEMANTIC_CODE_MCP_LOCAL_INDEXNoStore index in .semantic-code/ within each projectfalse
SEMANTIC_CODE_MCP_EMBEDDING_MODELNoSentence-transformers modelall-MiniLM-L6-v2

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_codeA

Find the functions, classes, methods and document sections of a project by the words their code uses.

It matches the words of code: write the identifiers and terms the code would use, and on a miss search again with others. A query that is a name, or a qualified one, brings the chunks of that name first:

  • "retry backoff delay attempts"

  • "parse_args config options"

  • "Stack.push"

For every place a name is used, Grep: this returns only the best matches.

Indexes Python, Rust and Markdown files. Automatically indexes the project if not already indexed, and re-indexes any files that have changed since the last search.

Args: query: The words to find, as code would write them, or a name. project_path: Absolute path to the project, or to a directory inside its git repository, which keeps the search to that directory; left out, the client's workspace root, which must lie in a git repository. limit: Maximum number of results to return. chunk_kinds: Only chunks of these kinds. languages: Only chunks of files in these languages. path_glob: Only files this glob names, read from the directory searched. exclude_glob: No file this glob names, read as path_glob is. include_debug: Also return timings and counts of the search.

Returns: The root of the project whose index answered and the directory the search kept to; then matching chunks, best first, with the file's absolute path, line range, name, kind (module, function, method, class, section), the class, impl, module or heading it belongs to, and content.

index_codebaseA

Index a codebase's words for search.

Splits Python, Rust and Markdown files into functions, classes, methods, module docstrings and document sections, and stores them with their words; it embeds nothing, and a server set to search by meaning too embeds them on its next search. search_code indexes on its own; call this only to re-index everything.

With force: true, it re-indexes everything even if files haven't changed; a model whose weights nothing pins, as a local path, has its vectors dropped too, so a server set to search by meaning embeds every chunk again on its next search. Otherwise, only new and modified files are indexed (incremental).

Args: project_path: Absolute path to the project; a directory inside a git repository indexes the whole repository, unless the repository ignores it or holds the user's home directory. Left out, the client's workspace root, which must lie in a git repository. force: Re-index all files regardless of changes.

Returns: The root of the project indexed, and what the run indexed and deleted.

index_statusA

Get the index status for a project.

Returns whether the project is indexed, when it was last updated, how many of its Python, Rust and Markdown files and their chunks are indexed, how many chunks have the model's vectors, how many files changed since, what built the index (each chunker version keeps an index of its own, and each model's vectors are kept apart in it), and whether a run, this session's or another's, holds it now, so its counts may be what the run has written so far.

Note: search_code automatically re-indexes stale files before searching, so there is no need to check or act on staleness manually.

Args: project_path: Absolute path to the project; a directory inside a git repository reports the whole repository's index, unless the repository ignores it or holds the user's home directory. Left out, the client's workspace root, which must lie in a git repository.

Returns: The root of the project whose index this is, and its status, including the counts of files and chunks.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation4/5

The three tools map to distinct operations: retrieval (search_code), bulk indexing (index_codebase), and inspection (index_status). The only overlap is that search_code auto-indexes and re-indexes changed files, but the description explicitly says to call index_codebase 'only to re-index everything', which resolves the boundary.

Naming Consistency4/5

All names are snake_case verb_noun (search_code, index_codebase, index_status), which is predictable. Minor deviation: index_status is a read-only getter sharing the 'index_' prefix with the mutating index_codebase, but the meaning is still clear.

Tool Count4/5

Three tools is lean but each earns its place for a focused code-search server: search, index, and status. Nothing looks padded or redundant, though the surface is on the thin side of the 3-15 sweet spot.

Completeness4/5

The search lifecycle (index, re-index, status, query with filters) is covered with no dead ends for its stated purpose. Gaps are minor: there is no explicit index deletion/reset tool, so force re-index is the only workaround, and no way to fetch chunks by file path without a query.

Maintenance

ActivityNo data
ResponsivenessSyncing