code-search-mcp
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., "@code-search-mcpwhere is the morning drink discount calculated?"
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.
š code-search-mcp
Zero-daemon local semantic code search MCP server powered by LanceDB and in-process ONNX embeddings.
Stop grepping for exact words. Give your AI coding assistant the power to search your codebase by meaning.
Works out-of-the-box with Claude Code, Gemini CLI, Antigravity (agy), and Cursor on macOS, Windows, and Linux.
āļø Imagine a Coffee Shop App
Imagine you are building software for a busy local coffee shop.
In your codebase, you have a file that handles what happens when a customer orders an extra oat milk latte and gets a morning discount:
// Apply a 15% promotional deduction if the customer visits before 9 AM
export function calculateEarlyBirdReward(bill: OrderSummary): number {
if (bill.orderHour < 9) {
return bill.subtotal * 0.85;
}
return bill.subtotal;
}Now imagine you open your AI coding assistant (like Claude Code, Cursor, or Gemini CLI) and ask:
"Where is the morning drink discount calculated?"
If your tool relies only on traditional text search (like grep), it searches for the exact word "discount".
Did it find
calculateEarlyBirdReward? No.Why? Because the code used the words
promotional deductionandEarlyBirdReward, but never the exact word"discount".
This is where Semantic Search changes everything.
Related MCP server: claude-context-local
š§ What is Semantic Search (In Plain English)?
Traditional search looks for exact letters and words.
Semantic search looks for the meaning behind your words.
How It Works: The Map of Meaning
Numbers instead of letters: An AI model takes a piece of text (or code) and translates it into a list of numbers called an embedding (or vector).
Coordinates on a map: Think of these numbers like GPS coordinates on a giant map of human concepts.
"discount"and"promotional deduction"end up sitting right next to each other on the map."espresso shot"and"latte"sit together."database migration"sits far away on the other side of the map.
Finding nearest neighbors: When you ask a question in plain English, the search engine turns your question into coordinates and simply finds the pieces of code sitting closest to it on the map.
[ Map of Meaning ]
āļø "morning drink discount" š (Your Question)
ā (Close match!)
ā¼
š· "calculateEarlyBirdReward" š (Your Code)
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
š "sql database migration" š (Far Away - Ignored)š Why Semantic Search is a Game-Changer for AI Coding
When AI coding assistants work on large repositories with thousands of files, they cannot read every single file on every prompt ā it is too slow and costs too many tokens.
Instead, the AI needs to find the exact 2 or 3 relevant files instantly.
In real-world projects, our codebases are full of rich context:
Markdown documentation (
.md): Architecture decision records, API guides, onboarding docs.Code comments: Explaining why a business rule exists (e.g.
// Deduct beans from bean hopper inventory).Function and variable names: Naming patterns that may differ across libraries.
Semantic search connects your natural language thoughts directly to those markdown docs, comments, and code snippets ā even when you do not remember the exact function names.
š What We Built: code-search-mcp
Many existing semantic search tools for developers require heavy setups:
Installing Python 3, virtual environments, and
pip.Running an external background database server (like ChromaDB) listening on a network port.
Setting up startup daemons (
LaunchAgentson Mac, Task Scheduler on Windows) that drain battery on boot.Adding complex Git hooks (
pre-commit) that can block your work if the database server is offline.
We wanted something completely different: Zero setup. Zero external daemons. Works in any project instantly.
So we built code-search-mcp ā a standalone, cross-platform Model Context Protocol (MCP) server for Node.js.
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā AI Client ā
ā (Claude Code / Gemini CLI / Antigravity / Cursor) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā MCP Protocol (JSON-RPC over stdio)
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā code-search-mcp ā
ā ā
ā āāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāā ā
ā ā Scanner & ā ā EmbeddingEngine ā ā Watcher ā ā
ā ā Layered Ignores ā ā (all-MiniLM-L6) ā ā(chokidar) ā ā
ā āāāāāāāāāā¬āāāāāāāāāā āāāāāāāāāā¬āāāāāāāāāā āāāāāāā¬āāāāāā ā
ā ā ā ā ā
ā āāāāāāāāāāāāā¬āāāāāāāāāā“āāāāāāāāāāāāāāāāāāā ā
ā ā¼ ā
ā VectorStore (LanceDB) ā
ā node_modules/.cache/code-search/ ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāļø The Technology Inside
Component | Technology | Why We Chose It |
Runtime | Node.js + TypeScript | Cross-platform (macOS, Windows, Linux) with zero runtime dependencies. |
Local AI Embeddings |
| Generates dense 384-dimensional vectors in-process via |
Vector Storage | Embedded, serverless vector database built on Apache Arrow. No external server process needed. | |
Live File Watcher |
| Watches files in real-time and updates vectors incrementally within ~200ms when you hit Save. |
Protocol |
| Standard MCP protocol supported by Claude Code, Gemini CLI, Cursor, and Windsurf. |
š How It Works Under the Hood
1. How does it know when to start indexing?
When your AI assistant launches (e.g. when you start Claude Code, Antigravity, or Gemini CLI), it connects to code-search-mcp over standard input/output (stdio).
The MCP server connects immediately in <15ms.
A background worker starts scanning the project files without blocking your chat session.
2. Can you search before indexing finishes? (The Mid-Indexing Superpower)
Yes! If you ask a question 2 seconds after opening your project, code-search-mcp never blocks or hangs.
It searches whatever files have been indexed so far and provides a live progress header:
ā ļø [Index status: INDEXING (35% complete - 2,100/6,000 files indexed)]
Results from currently indexed files:
### Match 1: src/drinks/espresso.ts (Lines 12-30) [Score: 54.2%]3. Be Patient on the First Run ā It Only Runs Once! ā³
On massive repositories with 5,000+ files, the very first indexing scan takes a few minutes because the local AI model is generating vector embeddings for every single chunk of code on your machine for the first time.
The good news:
You only ever pay this cost once: The resulting vector database is permanently stored in
node_modules/.cache/code-search/lancedb/.Instant Subsequent Boot: On every future session or editor restart, the server connects in <15ms without re-indexing.
Incremental Live Updates: As you write code during the day, the live watcher updates only the single file you changed in ~150ms upon saving.
Zero Waiting Required: You can start asking questions and searching immediately ā the assistant will search whatever is already indexed in the background.
4. Where is the index stored?
By default, the database is stored in:
š node_modules/.cache/code-search/lancedb/
Why node_modules/.cache?
node_modulesis already ignored by Git in 100% of projects.Zero Git noise: No untracked folders or unwanted diffs ever appear in your repository.
(If the project does not have
node_modules, it cleanly falls back to.code-search/).
5. What happens when you switch Git branches? š
When you run git checkout, git switch, or git pull:
Live Watcher Detection: Git updates files on disk, and the built-in
chokidarfile watcher detects the added, modified, or deleted files in real-time.Fast Differential Re-Scan: It only re-indexes the specific files that changed between the two branches (taking 1ā2 seconds instead of minutes).
Automatic Pruning: Deleted files or old code chunks from the previous branch are automatically removed from LanceDB.
Manual Sync: If you ever want to force a clean full rebuild after a massive merge, simply tell your assistant: "Run
code_search_reindexwith force: true".
āļø How to Manage Settings & Ignore More Files
By default, code-search-mcp automatically ignores binaries (.png, .mp4, .zip), build outputs (dist/, build/), lockfiles, and any file over 500 KB, as well as honoring your existing .gitignore.
If you want to customize settings or ignore extra files for your project, you have two simple options:
Option 1: Create a .codesearchignore File (Quick & Simple)
Create a .codesearchignore file in your project root using standard gitignore syntax:
# Ignore mock data and test fixtures
tests/fixtures/**
src/mocks/**
# Ignore auto-generated files
src/models/*.generated.ts
locales/**Option 2: Create a .codesearchrc.json File (Advanced Settings)
Create a .codesearchrc.json file in your project root to control indexing behavior, batching, and file size limits:
{
"maxFileSizeKb": 300,
"batchSize": 50,
"customExcludes": [
"legacy_vendor/**",
"docs/archive/**"
],
"supportedExtensions": [
".ts", ".tsx", ".js", ".vue", ".py", ".md", ".json"
]
}š¦ How to Install the Tool
You can install and run the tool using any of the following methods:
Step 1: Choose Your Installation Method
Method A: Direct from GitHub via npx (Zero-Install ā No npm publish needed!)
Any AI client can run it on-demand directly from your GitHub repository:
npx -y github:your-username/code-search-mcp(Node automatically downloads the repo, builds the bundle, and executes the MCP server).
Method B: From NPM Registry (Once Published)
If you published the package to npm:
npx -y code-search-mcp
# or global install:
npm install -g code-search-mcpMethod C: Local Development / Linked (Fastest Local Startup)
If running directly from your local source directory:
cd /path/to/code-search-mcp
npm install
npm run build
npm linkNow code-search-mcp is registered as a global command on your system!
Step 2: Connect It to Your AI Client
1. Claude Code
# If running via GitHub:
claude mcp add code-search -s user -- npx -y github:your-username/code-search-mcp
# If running locally (linked):
claude mcp add code-search -s user -- code-search-mcp2. Antigravity CLI (agy)
Run this one-liner in your terminal:
mkdir -p ~/.gemini/config/plugins/code-search && cat << 'EOF' > ~/.gemini/config/plugins/code-search/plugin.json
{ "name": "code-search" }
EOF
cat << 'EOF' > ~/.gemini/config/plugins/code-search/mcp_config.json
{
"mcpServers": {
"code-search": {
"command": "npx",
"args": ["-y", "github:your-username/code-search-mcp"]
}
}
}
EOF3. Gemini CLI
Add to your ~/.gemini/settings.json:
{
"mcpServers": {
"code-search": {
"command": "npx",
"args": ["-y", "github:your-username/code-search-mcp"],
"trust": true
}
}
}4. Cursor / Claude Desktop
Add to your .cursor/mcp.json:
{
"mcpServers": {
"code-search": {
"command": "npx",
"args": ["-y", "github:your-username/code-search-mcp", "--path", "${workspaceFolder}"]
}
}
}š¤ AI Agent Guide & Tool Reference
If you are an AI assistant (Claude Code, Gemini CLI, Cursor, Antigravity, or Windsurf) reading this repository, here is your quick-start guide to using the MCP tools provided by code-search-mcp:
š ļø Available MCP Tools
Tool Name | Arguments | Description | When to Call |
|
| Performs hybrid semantic + lexical search across indexed repository files. Returns line-numbered code chunks with similarity scores. | FIRST CALL whenever locating concepts, business logic, workflows, UI components, or features described in natural language (e.g. "where is user authentication refreshed", "shopping cart tax calculator"). |
| (none) | Returns current indexing progress ( | Check before large searches if you suspect indexing is still in progress. |
|
| Triggers a background re-index or complete database rebuild. | Call when the user explicitly requests a database rebuild or after massive branch merges. |
| (none) | Returns inline agent usage best practices and tips. | Call to self-discover best practices during tool invocation. |
š§ Tool Decision Matrix: When to Use Which Tool
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā What are you looking for in the codebase? ā
āāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāā
ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā¼ ā¼ ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Concept / Feature / ā ā Known Symbol / Callers ā ā Exact Literal String / ā
ā Business Logic Intent ā ā & Blast Radius Analysis ā ā Error Code / CSS Class ā
ā (Natural Language) ā ā (Exact identifier) ā ā (Exact text match) ā
āāāāāāāāāāāā¬āāāāāāāāāāāāāāā āāāāāāāāāāāā¬āāāāāāāāāāāāāāā āāāāāāāāāāāā¬āāāāāāāāāāāāāāā
ā¼ ā¼ ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā š USE: code_search ā ā š³ USE: codegraph ā ā š USE: grep_search ā
ā ⢠"where is payment..." ā ā ⢠codegraph_explore ā ā ⢠"ERR_INVALID_AUTH" ā
ā ⢠"tax calculation..." ā ā ⢠callers / callees ā ā ⢠".btn-primary-blue" ā
āāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāš” Pro Tips for AI Agents
Use
codeOnly: truefor Pure Implementation Logic: If you want to find pure TypeScript/JavaScript calculation formulas and exclude markdown documentation or skill guides, always passcodeOnly: true.Use
pathFilterto Narrow Subsystems: If the user asks "how does checkout work in the billing module?", passpathFilter: "src/billing".Use Line Numbers for Direct Code Edits: Code snippets are returned with 1-indexed line numbers (
14: export function calculateTotal()). You can pass these line ranges directly toreplace_file_contentorview_filewithout guesswork.Typo Tolerant: Feel free to pass natural words directly ā the engine automatically handles plurals (
stemming) and typos (Levenshtein correction) in <1ms.
š¤ The Ultimate AI Pair: Why You Should Install Both code-search & codegraph
Modern AI coding assistants perform best when equipped with two complementary tools: Semantic Search (code-search-mcp) and AST Code Graphs (codegraph).
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā User: "Where is subscription discount handled?" ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā 1. SEMANTIC SEARCH (code_search) ā
ā ⢠Understands intent, concepts, and natural language ā
ā ⢠Finds: subscription-billing.engine.ts (via JSDoc) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā 2. AST CODE GRAPH (codegraph_explore) ā
ā ⢠Understands syntax trees, callers, and blast radius ā
ā ⢠Traces: callers into legacy LegacyOrderProcessor.js ā
ā ⢠Discovers: unit tests (subscription-billing.spec.ts) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāWhy One Tool Alone Isn't Enough:
Tool | Primary Job | What It Does Best | Where It Struggles |
| Concept & Intent Discovery | Finding business logic, features, components, and architectural docs described in plain English. | Traversal across dynamic call hierarchies and legacy unannotated files. |
| Structural Navigation & Blast Radius | Tracing verbatim symbol definitions, callers, callees, and covering unit tests in 1 jump. | Finding concepts described in natural language without knowing symbol names. |
Real-World Case Study: Modern Engine vs Legacy Monolith
In a real enterprise codebase:
The Modern Engine (
subscription-billing.engine.ts) has explicit names (calculateSubscriptionDiscount) and rich JSDoc explanations.code_searchfinds it with a >55% similarity match in milliseconds.The Legacy Core (
LegacyOrderProcessor.js) is a 2,000-line file using old terms (getDiscountedTotal,applyOldDeduction) or typos. Semantic search alone might score it lower.The Synergy: Once
code_searchlands onsubscription-billing.engine.ts,codegraph_exploreimmediately traces every caller directly intoLegacyOrderProcessor.jsand maps the blast radius across covering unit tests without guessing!
Recommended Dual Configuration
Add both tools to your MCP configuration:
{
"mcpServers": {
"code-search": {
"command": "node",
"args": ["/path/to/code-search-mcp/dist/bin/cli.js"]
},
"codegraph": {
"command": "codegraph",
"args": ["mcp"]
}
}
}š Recommended Assistant Rules
To ensure your AI assistant picks code_search and codegraph automatically, add this rule to your project's instruction file (CLAUDE.md, GEMINI.md, .github/copilot-instructions.md, or .cursorrules):
## Code Navigation & Search
1. **CodeGraph (`codegraph_explore`)**: Call FIRST when exploring known symbols, tracking call paths, finding usages, or analyzing blast radius (callers + covering tests).
2. **Semantic Search (`code_search`)**: Call FIRST when looking for features, domain behaviors, or business logic described in natural language (e.g. "where is discount calculated", "checkout suggestions formatted").š§Ŗ How to Verify It Is Working
Once installed, you can verify that code-search-mcp is working with three quick checks:
Check 1: Ask Your AI Assistant for Status
In any chat session with Claude Code, Cursor, or Gemini CLI, ask:
"Check
code_search_status"
Expected Output:
Index Status: READY (or INDEXING)
Progress: 100%
Files: 6,070 / 6,070 indexed
Chunks: 8,204 code chunks in LanceDBCheck 2: Try a Natural Language Code Search
Ask your AI assistant:
"Use
code_searchto find how customer discount rules or rewards are handled"
Expected Output:
### Match 1: src/rewards/early-bird.ts (Lines 1-18) [Score: 56.4%]The assistant returns relevant code snippets with exact line numbers and similarity scores instantly.
Check 3: Test Live File Watching
Create a new test file in your project (e.g.
src/drinks/secret-recipe.ts) with a unique comment:// Caramel macchiato secret syrup blend formula export const caramelBlend = 42;Save the file.
Immediately ask your AI assistant:
"Search for secret syrup blend formula using
code_search"The new file will be found and returned in under 1 second ā no manual rebuilds or restart needed!
Check 4: Run the Automated Test Suite (Optional)
If developing from source, run:
npm testAll 31 unit & integration tests will execute and pass, verifying the MCP protocol handshake, ONNX vector generation, LanceDB storage, watcher lifecycle, word stemming, and typo correction.
š ļø Real-World Problems We Hit & How We Fixed Them (In Plain English)
Building a search engine that works seamlessly for both humans and AI coding agents revealed several practical challenges. Here is what we ran into and how we solved each one:
1. š¤ The Plurals & Word-Endings Trap ("marks" vs "Marker")
The Problem: When someone naturally types "how chart iq uses marks on the chart", they used the plural word
"marks". But in the code, the class is namedCIQ.MarkerormarkersSample. A standard database query (LIKE '%marks%') completely missesMarkerbecause of the extra"s".How We Fixed It: We built a lightweight word stemmer. It automatically strips common suffixes (
-s,-ing,-ed,-tion,-ers). When you search for"marks", it searches for the root"mark", instantly findingCIQ.Marker,markAxis, andmarkersSamplewith 0ms overhead.
2. āļø The Typo Trap ("calcualte mrgin shortfal")
The Problem: Humans type fast in chat and make typos (e.g. typing
mrgininstead ofmargin, orcalcualteinstead ofcalculate). If the word has a typo, traditional keyword search fails 100% of the time.How We Fixed It: We created an In-Memory Vocabulary & Levenshtein Typo Corrector. While indexing files, the engine gathers a dictionary of all real variable names, class names, and terms in your repository. When you send a query with a typo, it checks the dictionary and corrects typos in < 1ms before searching.
3. š¤ AI-Agent Friendly Code Blocks (Line Numbers)
The Problem: The search output gave line numbers in the header (
Lines 10-50), but the code inside the block had no line numbers. When an AI coding agent (Claude Code, Gemini CLI, Antigravity) wanted to edit or quote a line, it had to manually count lines or guess line offsets.How We Fixed It: Every line inside search result code snippets is now automatically prefixed with its real 1-indexed line number (
10: export class ...). AI agents can immediately pass exact line numbers into edit tools without extra file reads.
4. š Documentation Noise in Pure Code Searches
The Problem: When searching for broad concepts like "how to format currency", large markdown skill files and architectural guides sometimes ranked higher than the actual
.tsutility functions because markdown docs contain a lot of conversational English.How We Fixed It:
Added search filters:
codeOnly: true(ignores markdown/docs),pathFilter: "src/...", andlanguage.Down-weighted static JSON dictionary files so core TypeScript/JavaScript logic always ranks first.
5. š Result Flooding (Too Many Chunks From One Big File)
The Problem: When searching for a common topic, a single 3,000-line file with multiple matches would take over all 10 result slots, hiding matches from smaller, cleaner helper files.
How We Fixed It: Added per-file result diversity. The engine returns at most 2 top-scoring chunks per file so you get a healthy variety of results across different parts of your codebase.
6. ā” Database Lock Conflicts During Rapid Saves
The Problem: When switching branches or saving multiple files in quick succession, multiple writes to LanceDB could trigger concurrent version conflict errors.
How We Fixed It: Added an async write queue with exponential retry backoff. If a write conflict occurs, it automatically waits a few milliseconds and safely retries without crashing the server.
š” Summary
By combining in-process ONNX embeddings with embedded LanceDB, smart token enhancement, and the Model Context Protocol (MCP), we eliminated the friction of local semantic search:
ā No background daemons running on your laptop.
ā No Python/ChromaDB dependencies.
ā No Git noise (stored in
node_modules/.cache).ā Handles typos & word variations automatically in < 1ms.
ā Instant search by meaning, connecting your natural language questions to the exact code and markdown docs you need.
Happy coding! āļøš
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 Servers
- 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 gradedqualityCmaintenanceProvides Claude Code with local semantic search and indexing of your codebase using AST-aware chunking and hybrid search, enabling deep code understanding without sending data to the cloud.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform intelligent semantic code search across codebases using local AI embeddings for meaning-based retrieval.56MIT
- FlicenseNot gradedqualityDmaintenanceEnables semantic code search across codebases using AI embeddings and vector similarity, integrated with Claude Desktop and Cursor.
Related MCP Connectors
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analyā¦
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/genautkin/code-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server