smart-coding-mcp
Allows configuring the server as an MCP tool within Codeium's Windsurf IDE for semantic code search.
Allows querying Homebrew for the latest version of macOS packages.
Allows querying the npm registry for the latest version of Node.js packages.
Allows querying nuget.org for the latest version of .NET packages.
Allows querying Packagist for the latest version of PHP packages.
Allows querying the Python Package Index (PyPI) for the latest version of Python packages.
Allows configuring the server as an MCP tool within Raycast for semantic code search.
Allows querying RubyGems.org for the latest version of Ruby gems.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@smart-coding-mcpHow does authentication work?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Smart Coding MCP
An extensible Model Context Protocol (MCP) server that provides intelligent semantic code search for AI assistants. Built with local AI models using Matryoshka Representation Learning (MRL) for flexible embedding dimensions (64-768d).
What This Does
AI coding assistants work better when they can find relevant code quickly. Traditional keyword search falls short - if you ask "where do we handle authentication?" but your code uses "login" and "session", keyword search misses it.
This MCP server solves that by indexing your codebase with AI embeddings. Your AI assistant can search by meaning instead of exact keywords, finding relevant code even when the terminology differs.

Related MCP server: Claude Context MCP
Available Tools
đ a_semantic_search - Find Code by Meaning
The primary tool for codebase exploration. Uses AI embeddings to understand what you're looking for, not just match keywords.
How it works: Converts your natural language query into a vector, then finds code chunks with similar meaning using cosine similarity + exact match boosting.
Best for:
Exploring unfamiliar codebases:
"How does authentication work?"Finding related code:
"Where do we validate user input?"Conceptual searches:
"error handling patterns"Works even with typos:
"embeding modle initializashun"still finds embedding code
Example queries:
"Where do we handle cache persistence?"
"How is the database connection managed?"
"Find all API endpoint definitions"đĻ d_check_last_version - Package Version Lookup
Fetches the latest version of any package from its official registry. Supports 20+ ecosystems.
How it works: Queries official package registries (npm, PyPI, Crates.io, etc.) in real-time. No guessing, no stale training data.
Supported ecosystems: npm, PyPI, Crates.io, Maven, Go, RubyGems, NuGet, Packagist, Hex, pub.dev, Homebrew, Conda, and more.
Best for:
Before adding dependencies:
"express"â4.18.2Checking for updates:
"pip:requests"â2.31.0Multi-ecosystem projects:
"npm:react","go:github.com/gin-gonic/gin"
Example usage:
"What's the latest version of lodash?"
"Check if there's a newer version of axios"đ b_index_codebase - Manual Reindexing
Triggers a full reindex of your codebase. Normally not needed since indexing is automatic and incremental.
How it works: Scans all files, generates new embeddings, and updates the SQLite cache. Uses progressive indexing so you can search while it runs.
When to use:
After major refactoring or branch switches
After pulling large changes from remote
If search results seem stale or incomplete
After changing embedding configuration (dimension, model)
đī¸ c_clear_cache - Reset Everything
Deletes the embeddings cache entirely, forcing a complete reindex on next search.
How it works: Removes the .smart-coding-cache/ directory. Next search or index operation starts fresh.
When to use:
Cache corruption (rare, but possible)
Switching embedding models or dimensions
Starting fresh after major codebase restructure
Troubleshooting search issues
đ e_set_workspace - Switch Projects
Changes the workspace path at runtime without restarting the server.
How it works: Updates the internal workspace reference, creates cache folder for new path, and optionally triggers reindexing.
When to use:
Working on multiple projects in one session
Monorepo navigation between packages
Switching between related repositories
âšī¸ f_get_status - Server Health Check
Returns comprehensive status information about the MCP server.
What it shows:
Server version and uptime
Workspace path and cache location
Indexing status (ready, indexing, percentage complete)
Files indexed and chunk count
Model configuration (name, dimension, device)
Cache size and type
When to use:
Start of session to verify everything is working
Debugging connection or indexing issues
Checking indexing progress on large codebases
Installation
npm install -g smart-coding-mcpTo update:
npm update -g smart-coding-mcpIDE Integration
Detailed setup instructions for your preferred environment:
IDE / App | Setup Guide |
|
VS Code | â Yes | |
Cursor | â Yes | |
Windsurf | â Absolute paths only | |
Claude Desktop | â Absolute paths only | |
OpenCode | â Absolute paths only | |
Raycast | â Absolute paths only | |
Antigravity | â Absolute paths only |
Quick Setup
Add to your MCP config file:
{
"mcpServers": {
"smart-coding-mcp": {
"command": "smart-coding-mcp",
"args": ["--workspace", "/absolute/path/to/your/project"]
}
}
}Config File Locations
IDE | OS | Path |
Claude Desktop | macOS |
|
Claude Desktop | Windows |
|
OpenCode | Global |
|
OpenCode | Project |
|
Windsurf | macOS |
|
Windsurf | Windows |
|
Multi-Project Setup
{
"mcpServers": {
"smart-coding-frontend": {
"command": "smart-coding-mcp",
"args": ["--workspace", "/path/to/frontend"]
},
"smart-coding-backend": {
"command": "smart-coding-mcp",
"args": ["--workspace", "/path/to/backend"]
}
}
}Environment Variables
Customize behavior via environment variables:
Variable | Default | Description |
|
| Enable detailed logging |
|
| Max search results returned |
|
| Files to process in parallel |
|
| Max file size in bytes (1MB) |
|
| Lines of code per chunk |
|
| MRL dimension (64, 128, 256, 512, 768) |
|
| AI embedding model |
|
| Inference device ( |
|
| Weight for semantic vs exact matching |
|
| Boost multiplier for exact text matches |
|
| Max CPU usage during indexing (10-100%) |
|
| Code chunking ( |
|
| Auto-reindex on file changes |
|
| Delay before background indexing (ms), |
Example with env vars:
{
"mcpServers": {
"smart-coding-mcp": {
"command": "smart-coding-mcp",
"args": ["--workspace", "/path/to/project"],
"env": {
"SMART_CODING_VERBOSE": "true",
"SMART_CODING_MAX_RESULTS": "10",
"SMART_CODING_EMBEDDING_DIMENSION": "256"
}
}
}
}Performance
Progressive Indexing - Search works immediately while indexing continues in the background. No waiting for large codebases.
Resource Throttling - CPU limited to 50% by default. Your machine stays responsive during indexing.
SQLite Cache - 5-10x faster than JSON. Automatic migration from older JSON caches.
Incremental Updates - Only changed files are re-indexed. Saves every 5 batches, so no data loss if interrupted.
Optimized Defaults - 128d embeddings (2x faster than 256d with minimal quality loss), smart batch sizing, parallel processing.
How It Works
flowchart TB
subgraph IDE["IDE / AI Assistant"]
Agent["AI Agent<br/>(Claude, GPT, Gemini)"]
end
subgraph MCP["Smart Coding MCP Server"]
direction TB
Protocol["Model Context Protocol<br/>JSON-RPC over stdio"]
Tools["MCP Tools<br/>semantic_search | index_codebase | set_workspace | get_status"]
subgraph Indexing["Indexing Pipeline"]
Discovery["File Discovery<br/>glob patterns + smart ignore"]
Chunking["Code Chunking<br/>Smart (regex) / AST (Tree-sitter)"]
Embedding["AI Embedding<br/>transformers.js + ONNX Runtime"]
end
subgraph AI["AI Model"]
Model["nomic-embed-text-v1.5<br/>Matryoshka Representation Learning"]
Dimensions["Flexible Dimensions<br/>64 | 128 | 256 | 512 | 768"]
Normalize["Layer Norm â Slice â L2 Normalize"]
end
subgraph Search["Search"]
QueryEmbed["Query â Vector"]
Cosine["Cosine Similarity"]
Hybrid["Hybrid Search<br/>Semantic + Exact Match Boost"]
end
end
subgraph Storage["Cache"]
Vectors["SQLite Database<br/>embeddings.db (WAL mode)"]
Hashes["File Hashes<br/>Incremental updates"]
Progressive["Progressive Indexing<br/>Search works during indexing"]
end
Agent <-->|"MCP Protocol"| Protocol
Protocol --> Tools
Tools --> Discovery
Discovery --> Chunking
Chunking --> Embedding
Embedding --> Model
Model --> Dimensions
Dimensions --> Normalize
Normalize --> Vectors
Tools --> QueryEmbed
QueryEmbed --> Model
Cosine --> Hybrid
Vectors --> Cosine
Hybrid --> AgentTech Stack
Component | Technology |
Protocol | Model Context Protocol (JSON-RPC) |
AI Model | nomic-embed-text-v1.5 (MRL) |
Inference | transformers.js + ONNX Runtime |
Chunking | Smart regex / Tree-sitter AST |
Search | Cosine similarity + exact match boost |
Cache | SQLite with WAL mode |
Privacy
Everything runs 100% locally:
AI model runs on your machine (no API calls)
Code never leaves your system
No telemetry or analytics
Cache stored in
.smart-coding-cache/
Research Background
This project builds on research from Cursor showing that semantic search improves AI coding agent performance by 12.5% on average. The key insight: AI assistants benefit more from relevant context than from large amounts of context.
License
MIT License - Copyright (c) 2025 Omar Haris
See LICENSE for full text.
Local Customization Tracking
Local machine-specific integration, client wiring, and operational state are tracked under the external data root.
Local metadata path:
/Volumes/Data/_ai/_mcp/mcp-data/<name>/metaRepo-side capability contract is in
docs/local-capability/.Secrets are never stored in repo docs; only variable names and loading locations are documented.
Local Enhancements Capture (2026-03-13)
Captured current local changes, configuration updates, and operational enhancements for GitHub publication.
Includes synchronization with sub-repo link updates where applicable.
Cross-reference local docs and capability notes added in this repository.
Available Tools
6 toolsa_semantic_searchARead-onlyIdempotent
Performs intelligent hybrid code search combining semantic understanding with exact text matching. Ideal for finding code by meaning (e.g., 'authentication logic', 'database queries') even with typos or variations. Returns the most relevant code snippets with file locations and line numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query - can be natural language (e.g., 'where do we handle user login') or specific terms | |
| maxResults | No | Maximum number of results to return (default: from config) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds meaningful behavioral context beyond annotations: hybrid matching, tolerance to typos/variations, and the return shape. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no filler. The main action is front-loaded, the use case is stated in the second sentence, and the output behavior is summarized in the third. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately explains what the tool returns. It could have mentioned any dependency on a pre-built index or relationship to b_index_codebase, but that is inferable from the sibling set and is not a major gap for a two-parameter search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to re-document parameters. It adds value by explaining that the query can be natural language or specific terms and that semantic matching tolerates typos and variations, which directly informs how to set the query parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Performs intelligent hybrid code search' on code, and clarifies the distinguishing mechanism ('semantic understanding with exact text matching'). It is immediately distinguishable from siblings like b_index_codebase and f_get_status. It also tells the agent what the tool returns: relevant code snippets with locations and line numbers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use for finding code by meaning, even with typos or variations, with relevant natural language examples. It does not explicitly name alternatives or state when not to use this tool, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
b_index_codebaseAIdempotent
Manually trigger a full reindex of the codebase. This will scan all files and update the embeddings cache. Useful after large code changes or if the index seems out of date.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force reindex even if files haven't changed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool non-read-only, idempotent, and non-destructive. The description adds behavioral context by explaining that a reindex scans all files and updates the embeddings cache, which tells the agent what side effects to expect beyond the annotation flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary action is front-loaded ('Manually trigger a full reindex'), followed by the mechanism and a practical use case. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, one-optional-parameter tool with strong annotations and no output schema, the description is complete. It states the action, the effect, and when it is useful, which is sufficient for an agent to decide to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single 'force' parameter with a clear description, so the description does not need to add much. The phrase 'full reindex' and 'even if files haven't changed' are consistent with the parameter, but the description itself does not add new semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Manually trigger a full reindex of the codebase.' It further clarifies the action by stating it will 'scan all files and update the embeddings cache,' making it clearly distinct from sibling tools like a_semantic_search or c_clear_cache.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'Useful after large code changes or if the index seems out of date.' It does not explicitly mention alternatives or when not to use it, but the guidance is specific enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
c_clear_cacheADestructiveIdempotent
Clears the embeddings cache, forcing a complete reindex on next search or manual index operation. Useful when encountering cache corruption or after major codebase changes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral detail beyond the annotations: clearing the cache 'forces a complete reindex on next search or manual index operation,' which helps the agent anticipate downstream effects. It does not contradict the destructiveHint or idempotentHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the action and consequence are front-loaded, and the usage context is given in one short clause. Every word contributes to understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter destructive operation with clear annotations, the description covers what the tool does, what happens afterward, and when to use it. Nothing necessary for a correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema description coverage is 100%, so there are no parameter details for the description to add. The baseline of 4 applies because there is nothing missing for an agent to invoke the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('clears') and the specific resource ('embeddings cache'), and explains the immediate consequence ('forcing a complete reindex'). This makes the tool's purpose unambiguous and distinct from siblings like a_semantic_search and b_index_codebase.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'when encountering cache corruption or after major codebase changes.' It does not explicitly state when not to use the tool or name alternatives, but the stated use cases are clear enough for an agent to decide appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
d_check_last_versionARead-onlyIdempotent
Get the latest version of a library/package from its official registry. Supported ecosystems: npm (JS/TS), PyPI (Python), Packagist (PHP), Crates.io (Rust), Maven (Java/Kotlin), Go, RubyGems, NuGet (.NET), Hex (Elixir), CRAN (R), CPAN (Perl), pub.dev (Dart), Homebrew (macOS), Conda (Python/R), Clojars (Clojure), Hackage (Haskell), Julia, Swift PM, Chocolatey (Windows). Returns the version string to help you avoid using outdated dependencies.
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | Package name (e.g., 'express', 'requests', 'flutter', 'brew:wget', 'conda:numpy', 'swift:apple/swift-nio'). Use prefixes for explicit ecosystem detection. | |
| ecosystem | No | Package ecosystem (optional - auto-detected from prefix) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so safety is covered. The description adds that the return value is a version string and that lookups target official registries, which is valuable given the absence of an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. The long ecosystem list earns its place by defining the tool's scope and the package registries it supports.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple read-only lookup tool. Annotations cover side effects, the schema covers all parameters, and the description states the return value, so an agent has what it needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both package and ecosystem parameters are already described in the schema, including the ecosystem enum. The description reinforces the supported ecosystems but does not add meaningfully beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Get the latest version'), a clear object ('library/package'), and a source ('official registry'). This clearly distinguishes it from sibling tools like a_semantic_search and f_get_status, which serve unrelated purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'help you avoid using outdated dependencies' gives a concrete use case for when to call this tool. It does not explicitly name alternatives, but the sibling tools are all unrelated in scope, so no exclusion is really needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
e_set_workspaceA
Change the project workspace path at runtime. Use this when you detect the current workspace is incorrect or you need to switch to a different project directory. Creates cache folder automatically and optionally re-indexes the new workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the new workspace directory | |
| reindex | No | Whether to trigger re-indexing after switching (default: true) | |
| clearCache | No | Whether to clear existing cache before switching (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It reveals a side effect not in the schema ('Creates cache folder automatically') and mentions optional re-indexing. However, it doesn't describe failure behavior, whether the old workspace index is preserved or removed, or whether re-indexing is synchronous; for a mutation with no annotation safety net, this is only moderate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler, with the core action first, followed by usage guidance and side effects. Every sentence earns its place, and structure aids scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, when to use, and key side effects, and the schema handles parameter meaning. It doesn't describe return values or error conditions, which is a gap given there's no output schema or annotations, but an agent has enough context to select and call it correctly in the common case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are fully documented in the schema (100% coverage), so the baseline applies. The description adds no parameter-specific detail beyond what the schema already provides; it only restates the reindex concept in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact operation ('Change the project workspace path at runtime'), naming both the action and the resource. It is clearly distinct from sibling tools such as a_semantic_search or c_clear_cache, which have different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition ('when you detect the current workspace is incorrect or you need to switch to a different project directory'), so an agent knows when to invoke it. It does not enumerate when-not-to-use cases or explicitly name alternative sibling tools, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f_get_statusA
Get comprehensive status information about the Smart Coding MCP server. Returns version, workspace path, model configuration, indexing status, and cache information. Useful for understanding the current state of the semantic search system.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The verbs 'Get' and 'Returns' imply a read-only operation and the description lists the types of information returned, but it does not explicitly state that the tool has no side effects, requires no special permissions, or has any operational caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It opens with the core purpose, then lists return categories, then adds a use case. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status tool without an output schema, the description does the necessary work by naming the return categories. It is adequate for an agent to know what the tool does and roughly what it returns, though it could be more explicit about the exact shape of the response or any operational caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description coverage is 100%. Per the calibration baseline, no parameter documentation is needed, and the description's focus on return values is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get') and resource ('status information about the Smart Coding MCP server'), and enumerates the returned data: version, workspace path, model configuration, indexing status, and cache information. However, it does not explicitly distinguish itself from the sibling d_check_last_version, which also appears version-related, so it misses the strongest form of sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use context: 'Useful for understanding the current state of the semantic search system.' This implies when the tool is appropriate, but it offers no explicit guidance about when not to use it or which alternative sibling to prefer for narrower queries like version-only checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v2.3.3- First observed
a_semantic_search - First observed
b_index_codebase - First observed
c_clear_cache - First observed
d_check_last_version - First observed
e_set_workspace - First observed
f_get_status
TDQS
Each tool has a clearly described purpose and most are easy to distinguish. The main ambiguity is between b_index_codebase and c_clear_cache, since both can result in a rebuilt embedding index, but their described triggers differ enough to avoid serious confusion.
The names use consistent snake_case and mostly follow a verb_noun pattern, but the arbitrary a_, b_, c_ prefixes are not semantically meaningful and a_semantic_search breaks the verb_noun pattern by leading with an adjective. The overall style is readable but mixes conventions.
Six tools is a reasonable size for a focused semantic code search server. However, d_check_last_version is unrelated to the core semantic-search/indexing workflow, so the tool set is slightly less focused than it could be.
The core workflow is well covered: workspace setup, indexing, cache invalidation, semantic search, and server status. Minor gaps exist around configuration control or more granular index inspection, but agents can complete the primary tasks without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Project memory, semantic code search, and grounded agent context.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analyâĻ
Related MCP Servers
- AlicenseAqualityFmaintenanceProvides intelligent semantic code search using local AI embeddings, enabling natural language queries to find relevant code by meaning rather than exact keywords. Indexes codebases in the background with smart project detection and privacy-first local processing.639199MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to index and search codebases using semantic search powered by multiple embedding providers (OpenAI, VoyageAI, Gemini, Ollama) and vector database storage.-
- AlicenseNot gradedqualityFmaintenanceEnables semantic code search for AI assistants by indexing codebases with embeddings and Tree-sitter, returning relevant snippets via natural language queries.15MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to perform semantic code search locally, finding code by meaning rather than exact keywords.3MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/amalikn/smart-coding-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server