Narsil MCP
आधिकारिकब्लेज़िंगली फास्ट 🔥 रस्ट 🦀 में बेस्ट-इन-क्लास MCP सर्वर, जिसमें न्यूरल इंजन, सुरक्षा प्रोफाइलिंग और वैकल्पिक ग्राफ़ फ्रंटएंड शामिल है
Narsil MCP के साथ आप क्या कर सकते हैं?
- Find symbols across 32 languages — Search for functions, classes, or interfaces by name or pattern using
find_symbolsorworkspace_symbol_search. - Trace tainted data for security audits — Follow user input through the codebase with
trace_taintand detect injection vulnerabilities like SQLi or XSS. - Analyze function call relationships — Map callers, callees, and paths between functions with
get_call_graph,get_callers, andfind_call_path. - Generate a software bill of materials — Export a CycloneDX or SPDX SBOM and check dependencies against the OSV database with
generate_sbomandcheck_dependencies. - Infer types without external checkers — Get inferred types for Python, JavaScript, or TypeScript variables using
infer_typesand find potential type errors. - Query the codebase as a knowledge graph — Run SPARQL queries against the RDF graph or export tiered CCG layers for AI consumption with
sparql_queryandexport_ccg.
दस्तावेज़
narsil-mcp
गहन कोड बुद्धिमत्ता के लिए अत्यंत तेज़, गोपनीयता-प्रथम MCP सर्वर
एक Rust-संचालित MCP (मॉडल संदर्भ प्रोटोकॉल) सर्वर जो AI सहायकों को 90 विशेष उपकरणों के माध्यम से गहन कोड समझ प्रदान करता है।
narsil-mcp क्यों?
| सुविधा | narsil-mcp | XRAY | Serena | GitHub MCP |
|---|---|---|---|---|
| भाषाएँ | 32 | 4 | 30+ (LSP) | लागू नहीं |
| न्यूरल खोज | हाँ | नहीं | नहीं | नहीं |
| टेंट विश्लेषण | हाँ | नहीं | नहीं | नहीं |
| SBOM/लाइसेंस | हाँ | नहीं | नहीं | आंशिक |
| ऑफ़लाइन/स्थानीय | हाँ | हाँ | हाँ | नहीं |
| WASM/ब्राउज़र | हाँ | नहीं | नहीं | नहीं |
| कॉल ग्राफ़ | हाँ | आंशिक | नहीं | नहीं |
| प्रकार अनुमान | हाँ | नहीं | नहीं | नहीं |
मुख्य विशेषताएँ
- कोड बुद्धिमत्ता - प्रतीक निष्कर्षण, अर्थगत खोज, कॉल ग्राफ़ विश्लेषण
- न्यूरल अर्थगत खोज - एम्बेडिंग का उपयोग करके समान कोड खोजें (Voyage AI, OpenAI)
- सुरक्षा विश्लेषण - टेंट विश्लेषण, भेद्यता स्कैनिंग, OWASP/CWE कवरेज
- आपूर्ति श्रृंखला सुरक्षा - SBOM निर्माण, निर्भरता ऑडिटिंग, लाइसेंस अनुपालन
- उन्नत विश्लेषण - नियंत्रण प्रवाह ग्राफ़, डेटा प्रवाह विश्लेषण, डेड कोड पहचान
narsil-mcp क्यों चुनें?
- Rust में लिखित - अत्यंत तेज़, मेमोरी-सुरक्षित, एकल बाइनरी (~30MB)
- Tree-sitter संचालित - 32 भाषाओं के लिए सटीक, वृद्धिशील पार्सिंग
- शून्य कॉन्फ़िग - रिपोज़ पर इंगित करें और जाएँ
- MCP अनुरूप - Claude, Cursor, VS Code Copilot, Zed, और किसी भी MCP क्लाइंट के साथ काम करता है
- गोपनीयता-प्रथम - पूरी तरह से स्थानीय, कोई डेटा आपकी मशीन नहीं छोड़ता
- समानांतर अनुक्रमण - Rayon के माध्यम से सभी कोर का उपयोग करता है
- स्मार्ट अंश - पूर्ण वाक्यात्मक क्षेत्रों तक विस्तारित होता है
- सुरक्षा-प्रथम - अंतर्निहित भेद्यता पहचान और टेंट विश्लेषण
- न्यूरल एम्बेडिंग - Voyage AI या OpenAI के साथ वैकल्पिक अर्थगत खोज
- WASM समर्थन - WebAssembly बिल्ड के साथ ब्राउज़र में चलाएँ
- रीयल-टाइम स्ट्रीमिंग - बड़े रिपोज़ के लिए अनुक्रमण प्रगति के रूप में परिणाम
समर्थित भाषाएँ
| भाषा | एक्सटेंशन | निकाले गए प्रतीक |
|---|---|---|
| Rust | .rs | फ़ंक्शन, स्ट्रक्ट, एनम, ट्रेट्स, इम्प्ल्स, मॉड्स |
| Python | .py, .pyi | फ़ंक्शन, क्लासेस |
| JavaScript | .js, .jsx, .mjs | फ़ंक्शन, क्लासेस, मेथड्स, वेरिएबल्स |
| TypeScript | .ts, .tsx | फ़ंक्शन, क्लासेस, इंटरफेसेस, टाइप्स, एनम |
| Go | .go | फ़ंक्शन, मेथड्स, टाइप्स |
| C | .c, .h | फ़ंक्शन, स्ट्रक्ट, एनम, टाइपडेफ़्स |
| C++ | .cpp, .cc, .hpp | फ़ंक्शन, क्लासेस, स्ट्रक्ट, नेमस्पेसेस |
| Java | .java | मेथड्स, क्लासेस, इंटरफेसेस, एनम |
| C# | .cs | मेथड्स, क्लासेस, इंटरफेसेस, स्ट्रक्ट, एनम, डेलिगेट्स, नेमस्पेसेस |
| Bash | .sh, .bash, .zsh | फ़ंक्शन, वेरिएबल्स |
| Ruby | .rb, .rake, .gemspec | मेथड्स, क्लासेस, मॉड्यूल्स |
| Kotlin | .kt, .kts | फ़ंक्शन, क्लासेस, ऑब्जेक्ट्स, इंटरफेसेस |
| PHP | .php, .phtml | फ़ंक्शन, मेथड्स, क्लासेस, इंटरफेसेस, ट्रेट्स |
| Swift | .swift | क्लासेस, स्ट्रक्ट, एनम, प्रोटोकॉल, फ़ंक्शन |
| Verilog/SystemVerilog | .v, .vh, .sv, .svh | मॉड्यूल्स, टास्क, फ़ंक्शन, इंटरफेसेस, क्लासेस |
| Scala | .scala, .sc | क्लासेस, ऑब्जेक्ट्स, ट्रेट्स, फ़ंक्शन, वैल्स |
| Lua | .lua | फ़ंक्शन, मेथड्स |
| Haskell | .hs, .lhs | फ़ंक्शन, डेटा टाइप्स, टाइप क्लासेस |
| Elixir | .ex, .exs | मॉड्यूल्स, फ़ंक्शन |
| Clojure | .clj, .cljs, .cljc, .edn | सूचियाँ (मूल AST) |
| Dart | .dart | फ़ंक्शन, क्लासेस, मेथड्स |
| Julia | .jl | फ़ंक्शन, मॉड्यूल्स, स्ट्रक्ट |
| R | .R, .r, .Rmd | फ़ंक्शन |
| Perl | .pl, .pm, .t | फ़ंक्शन, पैकेजेस |
| Zig | .zig | फ़ंक्शन, वेरिएबल्स |
| Erlang | .erl, .hrl | फ़ंक्शन, मॉड्यूल्स, रिकॉर्ड्स |
| Elm | .elm | फ़ंक्शन, टाइप्स |
| Fortran | .f90, .f95, .f03, .f08, .f, .for, .fpp | प्रोग्राम, सबरूटीन्स, फ़ंक्शन, मॉड्यूल्स |
| PowerShell | .ps1, .psm1, .psd1 | फ़ंक्शन, क्लासेस, एनम |
| Nix | .nix | बाइंडिंग्स |
| Groovy | .groovy, .gradle | मेथड्स, क्लासेस, इंटरफेसेस, एनम, फ़ंक्शन |
स्थापना
पैकेज प्रबंधकों के माध्यम से (अनुशंसित)
macOS / Linux (Homebrew):
brew tap postrv/narsil
brew install narsil-mcp
Windows (Scoop):
scoop bucket add narsil https://github.com/postrv/scoop-narsil
scoop install narsil-mcp
Rust/Cargo (सभी प्लेटफ़ॉर्म):
cargo install narsil-mcp
Node.js/npm (सभी प्लेटफ़ॉर्म):
npm install -g narsil-mcp
# or
yarn global add narsil-mcp
# or
pnpm add -g narsil-mcp
Nix:
# Run directly without installing
nix run github:postrv/narsil-mcp -- --repos ./my-project
# Install to profile
nix profile install github:postrv/narsil-mcp
# With web visualization frontend
nix profile install github:postrv/narsil-mcp#with-frontend
# Development shell
nix develop github:postrv/narsil-mcp
एक-क्लिक इंस्टॉल स्क्रिप्ट
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/postrv/narsil-mcp/main/install.sh | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/postrv/narsil-mcp/main/install.ps1 | iex
Windows (Git Bash / MSYS2):
curl -fsSL https://raw.githubusercontent.com/postrv/narsil-mcp/main/install.sh | bash
Windows उपयोगकर्ताओं के लिए नोट: PowerShell इंस्टॉलर बेहतर त्रुटि संदेश और मूल Windows एकीकरण प्रदान करता है। यह स्वचालित रूप से आपके PATH को कॉन्फ़िगर करेगा और यदि स्रोत से निर्माण कर रहे हैं तो आवश्यक बिल्ड टूल्स की जाँच करेगा।
स्रोत से
पूर्वापेक्षाएँ:
- Rust 1.70 या बाद का संस्करण
- Windows पर: Visual Studio Build Tools "Desktop development with C++" के साथ
# Clone and build
git clone [email protected]:postrv/narsil-mcp.git
cd narsil-mcp
cargo build --release
# Binary will be at:
# - macOS/Linux: target/release/narsil-mcp
# - Windows: target/release/narsil-mcp.exe
फ़ीचर बिल्ड
narsil-mcp विभिन्न उपयोग मामलों के लिए विभिन्न फ़ीचर सेट का समर्थन करता है:
# Default build - native MCP server (~30MB)
cargo build --release
# With RDF knowledge graph and CCG tools (~35MB) - SPARQL queries, Code Context Graph
cargo build --release --features graph
# With neural vector search (~32MB) - adds TF-IDF similarity
cargo build --release --features neural
# With ONNX model support (~50MB) - adds local neural embeddings
cargo build --release --features neural-onnx
# With embedded visualization frontend (~31MB)
cargo build --release --features frontend
# Full-featured build with graph + frontend (~40MB)
cargo build --release --features graph,frontend
# For browser/WASM usage
cargo build --release --target wasm32-unknown-unknown --features wasm
| फ़ीचर | विवरण | आकार |
|---|---|---|
native (डिफ़ॉल्ट) | सभी उपकरणों के साथ पूर्ण MCP सर्वर | ~30MB |
graph | + RDF नॉलेज ग्राफ़, SPARQL, CCG उपकरण | ~35MB |
frontend | + एम्बेडेड विज़ुअलाइज़ेशन वेब UI | ~31MB |
neural | + TF-IDF वेक्टर खोज, API एम्बेडिंग | ~32MB |
neural-onnx | + स्थानीय ONNX मॉडल अनुमान | ~50MB |
wasm | ब्राउज़र बिल्ड (कोई फ़ाइल सिस्टम, git नहीं) | ~3MB |
महत्वपूर्ण:
--graphCLI फ़्लैग के लिए आवश्यक है कि बाइनरी--features graphके साथ बनाई गई हो। यदि आप इस फ़ीचर के बिना बनी बाइनरी में--graphपास करते हैं, तो आपको एक चेतावनी दिखाई देगी और SPARQL/CCG उपकरण उपलब्ध नहीं होंगे। नीचे समस्या निवारण देखें।
विस्तृत स्थापना निर्देशों, समस्या निवारण और प्लेटफ़ॉर्म-विशिष्ट गाइड के लिए, docs/INSTALL.md देखें।
उपयोग
बुनियादी उपयोग
macOS / Linux:
# Index a single repository
narsil-mcp --repos /path/to/your/project
# Index multiple repositories
narsil-mcp --repos ~/projects/project1 --repos ~/projects/project2
# Enable verbose logging
narsil-mcp --repos /path/to/project --verbose
# Force re-index on startup
narsil-mcp --repos /path/to/project --reindex
Windows (PowerShell / CMD):
# Index a single repository
narsil-mcp --repos C:\Users\YourName\Projects\my-project
# Index multiple repositories
narsil-mcp --repos C:\Projects\project1 --repos C:\Projects\project2
# Enable verbose logging
narsil-mcp --repos C:\Projects\my-project --verbose
# Force re-index on startup
narsil-mcp --repos C:\Projects\my-project --reindex
पूर्ण फ़ीचर सेट
narsil-mcp \
--repos ~/projects/my-app \
--git \ # Enable git blame, history, contributors
--call-graph \ # Enable function call analysis
--persist \ # Save index to disk for fast startup
--watch \ # Auto-reindex on file changes
--lsp \ # Enable LSP for hover, go-to-definition
--streaming \ # Stream large result sets
--remote \ # Enable GitHub remote repo support
--neural \ # Enable neural semantic embeddings
--neural-backend api \ # Backend: "api" (Voyage/OpenAI) or "onnx"
--neural-model voyage-code-2 \ # Model to use
--neural-dimension 3072 \ # Override embedding dimensions (auto-detected per model)
--graph # Enable SPARQL/RDF knowledge graph and CCG tools (requires --features graph build)
--graphके बारे में नोट: यह फ़्लैग SPARQL क्वेरीज़ और कोड संदर्भ ग्राफ़ (CCG) उपकरणों को सक्षम करता है, लेकिन केवल तभी जब बाइनरी--features graphके साथ बनाई गई हो। डिफ़ॉल्ट बाइनरी में यह फ़ीचर शामिल नहीं है। यदि आपको SPARQL/CCG क्षमताओं की आवश्यकता है, तो स्रोत से बनाएँ:cargo build --release --features graphयदि आप फ़ीचर के बिना बाइनरी में
--graphपास करते हैं, तो आपको स्टार्टअप पर एक चेतावनी दिखाई देगी और सर्वर SPARQL/CCG उपकरणों के बिना जारी रहेगा।
नोट: न्यूरल एम्बेडिंग के लिए एक API कुंजी (या कस्टम एंडपॉइंट) की आवश्यकता होती है। इसे सेट करने का सबसे आसान तरीका इंटरैक्टिव विज़ार्ड है:
# Run the neural API key setup wizard
narsil-mcp config init --neural
विज़ार्ड करेगा:
- आपके संपादक का पता लगाएगा (Claude Desktop, Claude Code, Zed, VS Code, JetBrains)
- आपके API प्रदाता के लिए संकेत देगा (Voyage AI, OpenAI, या कस्टम)
- आपकी API कुंजी मान्य करेगा
- इसे स्वचालित रूप से आपके संपादक के MCP कॉन्फ़िग में जोड़ देगा
वैकल्पिक रूप से, आप मैन्युअल रूप से इनमें से कोई एक पर्यावरण चर सेट कर सकते हैं:
EMBEDDING_API_KEY- किसी भी प्रदाता के लिए सामान्य API कुंजीVOYAGE_API_KEY- Voyage AI विशिष्ट API कुंजीOPENAI_API_KEY- OpenAI विशिष्ट API कुंजीEMBEDDING_SERVER_ENDPOINT- कस्टम एम्बेडिंग API एंडपॉइंट URL (वैकल्पिक, स्व-होस्टेड मॉडल का उपयोग करने की अनुमति देता है)
कॉन्फ़िगरेशन
v1.1.0+ उपकरणों और प्रदर्शन पर सूक्ष्म नियंत्रण के लिए वैकल्पिक कॉन्फ़िगरेशन प्रस्तुत करता है। सभी मौजूदा उपयोग काम करना जारी रखते हैं - कॉन्फ़िगरेशन पूरी तरह से वैकल्पिक है!
त्वरित शुरुआत
# Generate default config interactively
narsil-mcp config init
# List available tools
narsil-mcp tools list
# Apply a preset via CLI
narsil-mcp --repos ~/project --preset minimal
स्वचालित संपादक पहचान
narsil-mcp आपके संपादक का पता लगाता है और स्वचालित रूप से एक इष्टतम प्रीसेट लागू करता है:
| संपादक | प्रीसेट | उपकरण | संदर्भ टोकन | क्यों |
|---|---|---|---|---|
| Zed | न्यूनतम | 26 | ~4,686 | तेज़ स्टार्टअप, न्यूनतम संदर्भ |
| VS Code | संतुलित | 51 | ~8,948 | अच्छा फ़ीचर संतुलन |
| Claude Desktop | पूर्ण | 90 | ~12,001 | अधिकतम क्षमताएँ |
टोकन बचत:
- न्यूनतम प्रीसेट: पूर्ण की तुलना में 61% कम टोकन
- संतुलित प्रीसेट: पूर्ण की तुलना में 25% कम टोकन
प्रीसेट
अपने उपयोग के मामले के आधार पर एक प्रीसेट चुनें:
# Minimal - Fast, lightweight (Zed, Cursor)
narsil-mcp --repos ~/project --preset minimal
# Balanced - Good defaults (VS Code, IntelliJ)
narsil-mcp --repos ~/project --preset balanced --git --call-graph
# Full - All features (Claude Desktop, comprehensive analysis)
narsil-mcp --repos ~/project --preset full --git --call-graph
# Security-focused - Security and supply chain tools
narsil-mcp --repos ~/project --preset security-focused
कॉन्फ़िगरेशन फ़ाइलें
उपयोगकर्ता कॉन्फ़िग (~/.config/narsil-mcp/config.yaml):
version: "1.0"
preset: "balanced"
tools:
# Disable slow tools
overrides:
neural_search:
enabled: false
reason: "Too slow for interactive use"
performance:
max_tool_count: 50 # Limit total tools
प्रोजेक्ट कॉन्फ़िग (रेपो रूट में .narsil.yaml):
version: "1.0"
preset: "security-focused" # Override user preset
tools:
categories:
Security:
enabled: true
SupplyChain:
enabled: true
नामित रिपॉज़िटरी प्रोफ़ाइल बहु-रेपो कार्यस्थानों के लिए उपयोगी हैं:
version: "1.0"
profiles:
platform:
repos:
- ~/src/api
- ~/src/web
git: true
call_graph: true
persist: true
preset: balanced
narsil-mcp --profile platform
narsil-mcp config profiles
प्राथमिकता: CLI फ़्लैग > पर्यावरण चर > प्रोजेक्ट कॉन्फ़िग > उपयोगकर्ता कॉन्फ़िग > डिफ़ॉल्ट
पर्यावरण चर
# Select repos/profile
export NARSIL_REPOS=~/src/api,~/src/web
export NARSIL_PROFILE=platform
# Apply preset
export NARSIL_PRESET=minimal
# Enable specific categories
export NARSIL_ENABLED_CATEGORIES=Repository,Symbols,Search
# Disable specific tools
export NARSIL_DISABLED_TOOLS=neural_search,generate_sbom
CLI कमांड
# View effective config
narsil-mcp config show
# Validate config file
narsil-mcp config validate ~/.config/narsil-mcp/config.yaml
# List tools by category
narsil-mcp tools list --category Search
# Search for tools
narsil-mcp tools search "git"
# Export config
narsil-mcp config export > my-config.yaml
# List named repository profiles
narsil-mcp config profiles
और जानें:
- कॉन्फ़िगरेशन गाइड - पूर्ण कॉन्फ़िगरेशन संदर्भ
- स्थापना गाइड - प्लेटफ़ॉर्म-विशिष्ट स्थापना
विज़ुअलाइज़ेशन फ़्रंटएंड
अपने ब्राउज़र में इंटरैक्टिव रूप से कॉल ग्राफ़, आयात, प्रतीक संदर्भ और नियंत्रण प्रवाह का अन्वेषण करें।
# Build with embedded frontend
cargo build --release --features frontend
# Run with HTTP server
narsil-mcp --repos ~/project --http --call-graph
# Open http://localhost:3000
पाँच ग्राफ़ दृश्य:
| दृश्य | विवरण |
|---|---|
| कॉल ग्राफ़ | गहराई नियंत्रण और दिशा फ़िल्टरिंग के साथ फ़ंक्शन कॉल संबंध |
| आयात ग्राफ़ | कोडबेस में फ़ाइल-स्तरीय आयात निर्भरताएँ |
| प्रतीक ग्राफ़ | फ़ाइल क्लस्टरिंग के साथ, किसी प्रतीक के सभी संदर्भ |
| हाइब्रिड | विभाजित बजट के साथ संयुक्त कॉल + आयात ग्राफ़ |
| नियंत्रण प्रवाह | बुनियादी ब्लॉक, शाखाओं और लूप बैक-एज के साथ वास्तविक CFG |
विशेषताएँ:
- ड्रैग, ज़ूम और डबल-क्लिक ड्रिल-डाउन के साथ इंटरैक्टिव Cytoscape.js ग्राफ़
- रंग कोडिंग (हरा/पीला/नारंगी/लाल) के साथ जटिलता मेट्रिक्स ओवरले
- टेंट स्रोतों और सिंक को हाइलाइट करने वाला सुरक्षा भेद्यता ओवरले
- छह लेआउट एल्गोरिदम (dagre, बल-निर्देशित, breadthfirst, concentric, circle, grid)
- सिंटैक्स-हाइलाइटेड कोड व्यूअर के साथ फ़ाइल ट्री साइडबार
- URL-संचालित स्थिति (साझा करने योग्य लिंक, ब्राउज़र बैक/फ़ॉरवर्ड)
- डार्क मोड समर्थन
- कोड अंश और स्रोत पर नेविगेशन के साथ नोड विवरण पैनल
पूर्ण दस्तावेज़ीकरण: सेटअप, API एंडपॉइंट और विकास मोड के लिए docs/frontend.md देखें।
न्यूरल अर्थगत खोज
न्यूरल एम्बेडिंग का उपयोग करके समान कोड खोजें - तब भी जब चर नाम और संरचना भिन्न हो।
# Quick setup with wizard
narsil-mcp config init --neural
# Or manually with Voyage AI
export VOYAGE_API_KEY="your-key"
narsil-mcp --repos ~/project --neural --neural-model voyage-code-2
Voyage AI, OpenAI, कस्टम एंडपॉइंट और स्थानीय ONNX मॉडल का समर्थन करता है।
पूर्ण दस्तावेज़ीकरण: सेटअप, बैकएंड और उपयोग मामलों के लिए docs/neural-search.md देखें।
प्रकार अनुमान
Python, JavaScript और TypeScript के लिए अंतर्निहित प्रकार अनुमान - किसी mypy या tsc की आवश्यकता नहीं है।
| उपकरण | विवरण |
|---|---|
infer_types | किसी फ़ंक्शन में सभी चर के लिए अनुमानित प्रकार प्राप्त करें |
check_type_errors | संभावित प्रकार बेमेल खोजें |
get_typed_taint_flow | प्रकार की जानकारी के साथ उन्नत सुरक्षा विश्लेषण |
def process(data):
result = data.split(",") # result: list[str]
count = len(result) # count: int
return count * 2 # returns: int
Forgemax एकीकरण (प्रायोगिक)
बड़े पैमाने पर एजेंटिक वर्कफ़्लो के लिए, narsil-mcp का उपयोग Forgemax के माध्यम से किया जा सकता है — एक कोड मोड MCP गेटवे जो सभी 90 उपकरणों को केवल 2 (search + execute) में समेट देता है, उपकरण स्कीमा ओवरहेड को ~12,000 टोकन से घटाकर ~1,000 कर देता है।
# Install Forgemax
cargo install forgemax
# Run narsil-mcp through Forgemax (uses forge.toml in repo root)
forgemax
शामिल forge.toml समझदार डिफ़ॉल्ट के साथ narsil-mcp को कॉन्फ़िगर करता है:
[servers.narsil]
command = "narsil-mcp"
args = ["--repos", ".", "--git", "--call-graph", "--persist", "--watch"]
transport = "stdio"
[sandbox]
timeout_secs = 10
max_heap_mb = 64
max_concurrent = 8
LLM एक सैंडबॉक्स्ड V8 आइसोलेट के अंदर टाइप्ड प्रॉक्सी ऑब्जेक्ट्स के माध्यम से कॉल करने वाला JavaScript लिखता है — क्रेडेंशियल्स, फ़ाइल पथ और आंतरिक स्थिति कभी भी होस्ट से बाहर नहीं जाते। यह दृष्टिकोण विशेष रूप से तब उपयोगी होता है जब एक साथ कई MCP सर्वरों के साथ काम किया जाता है, क्योंकि यह कुल टूल संदर्भ को छोटा और पूर्वानुमान योग्य रखता है।
MCP कॉन्फ़िगरेशन
एक कॉन्फ़िगरेशन फ़ाइल बनाकर narsil-mcp को अपने AI सहायक में जोड़ें। यहाँ अनुशंसित सेटअप दिए गए हैं:
Claude Code (प्रोजेक्ट रूट में .mcp.json - अनुशंसित):
प्रति-प्रोजेक्ट कॉन्फ़िगरेशन के लिए अपनी प्रोजेक्ट निर्देशिका में .mcp.json बनाएँ:
{
"mcpServers": {
"narsil-mcp": {
"command": "narsil-mcp",
"args": ["--repos", ".", "--git", "--call-graph"]
}
}
}
फिर अपने प्रोजेक्ट में Claude Code प्रारंभ करें:
cd /path/to/project
claude
--repos के लिए . का उपयोग करने से वर्तमान निर्देशिका स्वचालित रूप से अनुक्रमित हो जाती है। Claude के पास अब 90 कोड इंटेलिजेंस टूल तक पहुँच है।
सुझाव: बाद के रन पर तेज़ स्टार्टअप के लिए
--persist --index-path .claude/cacheजोड़ें।
वैश्विक कॉन्फ़िगरेशन के लिए, इसके बजाय ~/.claude/settings.json संपादित करें। उन्नत सेटअप के लिए Claude Code एकीकरण देखें।
Cursor (.cursor/mcp.json):
{
"mcpServers": {
"narsil-mcp": {
"command": "narsil-mcp",
"args": ["--repos", ".", "--git", "--call-graph"]
}
}
}
VS Code + GitHub Copilot (.vscode/mcp.json):
{
"servers": {
"narsil-mcp": {
"command": "narsil-mcp",
"args": ["--repos", ".", "--git", "--call-graph"]
}
}
}
Copilot Enterprise के लिए नोट: MCP समर्थन के लिए VS Code 1.102+ आवश्यक है और इसे आपके संगठन व्यवस्थापक द्वारा सक्षम किया जाना चाहिए।
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"narsil-mcp": {
"command": "narsil-mcp",
"args": ["--repos", "/path/to/your/projects", "--git"]
}
}
}
Zed (settings.json → संदर्भ सर्वर):
{
"context_servers": {
"narsil-mcp": {
"command": "narsil-mcp",
"args": ["--repos", ".", "--git"]
}
}
}
Zed के लिए नोट: narsil-mcp तुरंत प्रारंभ होता है और पृष्ठभूमि में अनुक्रमण करता है, जिससे आरंभीकरण टाइमआउट से बचा जा सकता है।
Claude Code प्लगइन
Claude Code उपयोगकर्ताओं के लिए, हम प्रभावी टूल उपयोग के लिए स्लैश कमांड और एक कौशल के साथ एक प्लगइन प्रदान करते हैं।
मार्केटप्लेस के माध्यम से इंस्टॉल करें (अनुशंसित):
# Add the narsil-mcp marketplace
/plugin marketplace add postrv/narsil-mcp
# Install the plugin
/plugin install narsil@narsil-mcp
या सीधे GitHub से इंस्टॉल करें:
/plugin install github:postrv/narsil-mcp/narsil-plugin
क्या शामिल है:
| घटक | विवरण |
|---|---|
/narsil:security-scan | व्यापक सुरक्षा ऑडिट चलाएँ |
/narsil:explore | अपरिचित कोडबेस का अन्वेषण करें |
/narsil:analyze-function | विशिष्ट फ़ंक्शनों पर गहराई से जाएँ |
/narsil:find-feature | पता लगाएँ कि सुविधाएँ कहाँ कार्यान्वित हैं |
/narsil:supply-chain | आपूर्ति श्रृंखला सुरक्षा का विश्लेषण करें |
| कौशल | 90 टूल का प्रभावी ढंग से उपयोग करने पर Claude का मार्गदर्शन करता है |
| MCP कॉन्फ़िग | समझदार डिफ़ॉल्ट के साथ narsil-mcp को ऑटो-स्टार्ट करता है |
पूर्ण दस्तावेज़ीकरण के लिए narsil-plugin/README.md देखें।
Ralph स्वचालन एकीकरण
Ralph स्वायत्त कोड विकास के लिए एक Claude Code स्वचालन सूट है। जब narsil-mcp उपलब्ध होता है, तो Ralph को उन्नत कोड इंटेलिजेंस क्षमताएँ प्राप्त होती हैं:
| सुविधा | narsil-mcp के बिना | narsil-mcp के साथ |
|---|---|---|
| सुरक्षा स्कैनिंग | बुनियादी (clippy) | OWASP/CWE भेद्यता का पता लगाना |
| कोड समझ | फ़ाइल-आधारित | कॉल ग्राफ़, प्रतीक संदर्भ |
| आर्किटेक्चर विश्लेषण | मैन्युअल | CCG L0/L1/L2 स्वचालित परतें |
| निर्भरता विश्लेषण | cargo tree | आयात ग्राफ़, वृत्ताकार पहचान |
सेटअप:
# Install narsil-mcp (Ralph auto-detects it)
cargo install narsil-mcp
# Ralph's quality gates use these tools:
narsil-mcp scan_security --repo <name>
narsil-mcp check_type_errors --repo <name> --path src
narsil-mcp find_injection_vulnerabilities --repo <name>
जब narsil-mcp अनुपलब्ध होता है तो Ralph सुचारू रूप से डाउनग्रेड हो जाता है - सभी मुख्य स्वचालन सुविधाएँ इसके बिना काम करती हैं।
दस्तावेज़ीकरण: पूर्ण एकीकरण विवरण के लिए Ralph README देखें।
प्लेबुक और ट्यूटोरियल
व्यावहारिक उपयोग मार्गदर्शिकाओं के लिए docs/playbooks देखें:
| मार्गदर्शिका | विवरण |
|---|---|
| आरंभ करना | त्वरित सेटअप और पहला टूल कॉल |
| कोडबेस को समझें | अपरिचित परियोजनाओं का अन्वेषण करें |
| बग ठीक करें | कॉल ग्राफ़ और टेंट विश्लेषण के साथ डीबग करें |
| सुरक्षा ऑडिट | OWASP/CWE स्कैनिंग के साथ भेद्यताएँ खोजें |
| कोड समीक्षा | परिवर्तनों की प्रभावी ढंग से समीक्षा करें |
प्रत्येक प्लेबुक आपके प्रश्नों का उत्तर देने के लिए Claude द्वारा उपयोग की जाने वाली सटीक टूल श्रृंखलाएँ दिखाती है।
WebAssembly (ब्राउज़र) उपयोग
narsil-mcp पूरी तरह से WebAssembly के माध्यम से ब्राउज़र में चल सकता है - ब्राउज़र-आधारित IDE, कोड समीक्षा टूल या शैक्षिक प्लेटफ़ॉर्म के लिए एकदम सही।
npm install @narsil-mcp/wasm
import { CodeIntelClient } from '@narsil-mcp/wasm';
const client = new CodeIntelClient();
await client.init();
client.indexFile('src/main.rs', rustSourceCode);
const symbols = client.findSymbols('Handler');
पूर्ण दस्तावेज़ीकरण: बिल्ड निर्देशों, React उदाहरणों और API संदर्भ के लिए docs/wasm.md देखें।
उपलब्ध टूल (90)
रिपॉजिटरी और फ़ाइल प्रबंधन
| टूल | विवरण |
|---|---|
list_repos | मेटाडेटा के साथ सभी अनुक्रमित रिपॉजिटरी सूचीबद्ध करें |
get_project_structure | फ़ाइल आइकन और आकारों के साथ निर्देशिका ट्री प्राप्त करें |
get_file | वैकल्पिक पंक्ति श्रेणी के साथ फ़ाइल सामग्री प्राप्त करें |
get_excerpt | संदर्भ के साथ विशिष्ट पंक्तियों के आसपास कोड निकालें |
reindex | रिपॉजिटरी का पुन: अनुक्रमण ट्रिगर करें |
discover_repos | एक निर्देशिका में रिपॉजिटरी ऑटो-खोजें |
validate_repo | जाँचें कि पथ एक मान्य रिपॉजिटरी है या नहीं |
get_index_status | अनुक्रमणिका आँकड़े और सक्षम सुविधाएँ दिखाएँ |
प्रतीक खोज और नेविगेशन
| टूल | विवरण |
|---|---|
find_symbols | प्रकार/पैटर्न द्वारा संरचनाएँ, वर्ग, फ़ंक्शन खोजें |
get_symbol_definition | आसपास के संदर्भ के साथ प्रतीक स्रोत प्राप्त करें |
find_references | किसी प्रतीक के सभी संदर्भ खोजें |
get_dependencies | आयात और आश्रितों का विश्लेषण करें |
workspace_symbol_search | कार्यक्षेत्र में फ़ज़ी प्रतीक खोज |
find_symbol_usages | आयात के साथ क्रॉस-फ़ाइल प्रतीक उपयोग |
get_export_map | किसी फ़ाइल/मॉड्यूल से निर्यातित प्रतीक प्राप्त करें |
कोड खोज
| टूल | विवरण |
|---|---|
search_code | प्रासंगिकता रैंकिंग के साथ कीवर्ड खोज |
semantic_search | BM25-रैंक्ड सिमेंटिक खोज |
hybrid_search | रैंक फ्यूजन के साथ संयुक्त BM25 + TF-IDF |
search_chunks | AST-जागरूक कोड खंडों पर खोजें |
find_similar_code | एक स्निपेट (TF-IDF) के समान कोड खोजें |
find_similar_to_symbol | एक प्रतीक के समान कोड खोजें |
AST-जागरूक खंडन
| टूल | विवरण |
|---|---|
get_chunks | किसी फ़ाइल के लिए AST-जागरूक खंड प्राप्त करें |
get_chunk_stats | कोड खंडों के बारे में आँकड़े |
get_embedding_stats | एम्बेडिंग अनुक्रमणिका आँकड़े |
न्यूरल सिमेंटिक खोज (--neural आवश्यक)
| टूल | विवरण |
|---|---|
neural_search | न्यूरल एम्बेडिंग का उपयोग करके सिमेंटिक खोज (विभिन्न नामों के साथ भी समान कोड ढूँढता है) |
find_semantic_clones | किसी फ़ंक्शन के प्रकार-3/4 सिमेंटिक क्लोन खोजें |
get_neural_stats | न्यूरल एम्बेडिंग अनुक्रमणिका आँकड़े |
कॉल ग्राफ़ विश्लेषण (--call-graph आवश्यक)
| टूल | विवरण |
|---|---|
get_call_graph | रिपॉजिटरी/फ़ंक्शन के लिए कॉल ग्राफ़ प्राप्त करें |
get_callers | ऐसे फ़ंक्शन खोजें जो किसी फ़ंक्शन को कॉल करते हैं |
get_callees | किसी फ़ंक्शन द्वारा कॉल किए गए फ़ंक्शन खोजें |
find_call_path | दो फ़ंक्शनों के बीच पथ खोजें |
get_complexity | साइक्लोमैटिक/संज्ञानात्मक जटिलता प्राप्त करें |
get_function_hotspots | अत्यधिक जुड़े फ़ंक्शन खोजें |
नियंत्रण प्रवाह विश्लेषण
| टूल | विवरण |
|---|---|
get_control_flow | बुनियादी ब्लॉक और शाखाएँ दिखाने वाला CFG प्राप्त करें |
find_dead_code | अगम्य कोड ब्लॉक खोजें |
डेटा प्रवाह विश्लेषण
| टूल | विवरण |
|---|---|
get_data_flow | चर परिभाषाएँ और उपयोग |
get_reaching_definitions | कौन से असाइनमेंट प्रत्येक बिंदु तक पहुँचते हैं |
find_uninitialized | आरंभीकरण से पहले उपयोग किए गए चर |
find_dead_stores | असाइनमेंट जो कभी पढ़े नहीं जाते |
प्रकार अनुमान (Python/JavaScript/TypeScript)
| टूल | विवरण |
|---|---|
infer_types | बाहरी प्रकार जाँचकों के बिना किसी फ़ंक्शन में चर के लिए प्रकारों का अनुमान लगाएँ |
check_type_errors | mypy/tsc चलाए बिना संभावित प्रकार त्रुटियाँ खोजें |
get_typed_taint_flow | प्रकार अनुमान के साथ डेटा प्रवाह को मिलाकर उन्नत टेंट विश्लेषण |
आयात/निर्भरता ग्राफ़
| टूल | विवरण |
|---|---|
get_import_graph | आयात ग्राफ़ बनाएँ और उसका विश्लेषण करें |
find_circular_imports | वृत्ताकार निर्भरताओं का पता लगाएँ |
get_incremental_status | मर्कल ट्री और परिवर्तन आँकड़े |
सुरक्षा विश्लेषण - टेंट ट्रैकिंग
| टूल | विवरण |
|---|---|
find_injection_vulnerabilities | SQL इंजेक्शन, XSS, कमांड इंजेक्शन, पथ ट्रैवर्सल खोजें |
trace_taint | किसी स्रोत से दूषित डेटा प्रवाह का पता लगाएँ |
get_taint_sources | टेंट स्रोतों (उपयोगकर्ता इनपुट, फ़ाइलें, नेटवर्क) की सूची बनाएँ |
get_security_summary | व्यापक सुरक्षा जोखिम मूल्यांकन |
सुरक्षा विश्लेषण - नियम इंजन
| टूल | विवरण |
|---|---|
scan_security | सुरक्षा नियमों (OWASP, CWE, क्रिप्टो, रहस्य) के साथ स्कैन करें |
check_owasp_top10 | OWASP शीर्ष 10 2021 भेद्यताओं के लिए स्कैन करें |
check_cwe_top25 | CWE शीर्ष 25 कमजोरियों के लिए स्कैन करें |
explain_vulnerability | विस्तृत भेद्यता स्पष्टीकरण प्राप्त करें |
suggest_fix | निष्कर्षों के लिए उपचार सुझाव प्राप्त करें |
आपूर्ति श्रृंखला सुरक्षा
| टूल | विवरण |
|---|---|
generate_sbom | SBOM जनरेट करें (CycloneDX/SPDX/JSON) |
check_dependencies | ज्ञात भेद्यताओं की जाँच करें (OSV डेटाबेस) |
check_licenses | अनुपालन मुद्दों के लिए लाइसेंस का विश्लेषण करें |
find_upgrade_path | भेद्य निर्भरताओं के लिए सुरक्षित अपग्रेड पथ खोजें |
Git एकीकरण (--git आवश्यक)
| टूल | विवरण |
|---|---|
get_blame | फ़ाइल के लिए Git ब्लेम |
get_file_history | फ़ाइल के लिए कमिट इतिहास |
get_recent_changes | रिपॉजिटरी में हाल के कमिट |
get_hotspots | उच्च मंथन और जटिलता वाली फ़ाइलें |
get_contributors | रिपॉजिटरी/फ़ाइल योगदानकर्ता |
get_commit_diff | विशिष्ट कमिट के लिए अंतर |
get_symbol_history | वे कमिट जिन्होंने किसी प्रतीक को बदला |
get_branch_info | वर्तमान शाखा और स्थिति |
get_modified_files | कार्यशील ट्री परिवर्तन |
LSP एकीकरण (--lsp आवश्यक)
| टूल | विवरण |
|---|---|
get_hover_info | प्रकार की जानकारी और दस्तावेज़ीकरण |
get_type_info | सटीक प्रकार की जानकारी |
go_to_definition | परिभाषा स्थान खोजें |
दूरस्थ रिपॉजिटरी समर्थन (--remote आवश्यक)
| टूल | विवरण |
|---|---|
add_remote_repo | GitHub रिपॉजिटरी क्लोन और अनुक्रमित करें |
list_remote_files | GitHub API के माध्यम से फ़ाइलें सूचीबद्ध करें |
get_remote_file | GitHub API के माध्यम से फ़ाइल प्राप्त करें |
मेट्रिक्स
| टूल | विवरण |
|---|---|
get_metrics | प्रदर्शन आँकड़े और समय |
SPARQL / ज्ञान ग्राफ़ (--graph आवश्यक)
| टूल | विवरण |
|---|---|
sparql_query | RDF ज्ञान ग्राफ़ के विरुद्ध SPARQL क्वेरी निष्पादित करें |
list_sparql_templates | उपलब्ध SPARQL क्वेरी टेम्पलेट सूचीबद्ध करें |
run_sparql_template | पैरामीटर के साथ पूर्वनिर्धारित SPARQL टेम्पलेट निष्पादित करें |
कोड संदर्भ ग्राफ़ (CCG) (--graph आवश्यक)
CCG स्तरीय परतों में कोडबेस का मानकीकृत, AI-उपभोज्य प्रतिनिधित्व प्रदान करता है।
| टूल | विवरण |
|---|---|
get_ccg_manifest | परत 0 मैनिफेस्ट (~1-2KB JSON-LD) - रिपो पहचान, गणनाएँ |
export_ccg_manifest | परत 0 मैनिफेस्ट को फ़ाइल में निर्यात करें |
export_ccg_architecture | परत 1 आर्किटेक्चर (~10-50KB JSON-LD) - मॉड्यूल, API |
export_ccg_index | परत 2 प्रतीक अनुक्रमणिका (~100-500KB N-Quads gzipped) |
export_ccg_full | परत 3 पूर्ण विवरण (~1-20MB N-Quads gzipped) |
export_ccg | सभी CCG परतों को एक बंडल के रूप में निर्यात करें |
query_ccg | SPARQL का उपयोग करके CCG क्वेरी करें |
get_ccg_acl | CCG परतों के लिए WebACL अभिगम नियंत्रण जनरेट करें |
get_ccg_access_info | CCG अभिगम स्तरीय जानकारी प्राप्त करें |
import_ccg | URL या फ़ाइल से CCG परत आयात करें |
import_ccg_from_registry | codecontextgraph.com रजिस्ट्री से CCG आयात करें |
सुरक्षा नियम
narsil-mcp में rules/ में अंतर्निहित सुरक्षा नियम शामिल हैं:
मुख्य नियम सेट:
owasp-top10.yaml- OWASP शीर्ष 10 2021 भेद्यता पैटर्नcwe-top25.yaml- CWE शीर्ष 25 सबसे खतरनाक कमजोरियाँcrypto.yaml- क्रिप्टोग्राफ़िक मुद्दे (कमजोर एल्गोरिदम, हार्डकोडेड कुंजियाँ)secrets.yaml- रहस्य का पता लगाना (API कुंजियाँ, पासवर्ड, टोकन) भाषा-विशिष्ट नियम:rust.yaml- Rust सुरक्षा पैटर्न (असुरक्षित transmute, FFI सीमाएँ, कमांड इंजेक्शन, TOCTOU)elixir.yaml- Elixir/BEAM पैटर्न (atom exhaustion, binary_to_term, Code.eval, Ecto SQL इंजेक्शन)go.yaml- Go सुरक्षा पैटर्न (SQL इंजेक्शन, TLS, कमांड इंजेक्शन)java.yaml- Java कमजोरियाँ (XXE, डिसीरियलाइज़ेशन, LDAP इंजेक्शन)csharp.yaml- C# सुरक्षा मुद्दे (डिसीरियलाइज़ेशन, XSS, पथ ट्रैवर्सल)kotlin.yaml- Kotlin/Android पैटर्न (WebView, इंटेंट, सीक्रेट्स)bash.yaml- शेल स्क्रिप्ट कमजोरियाँ (कमांड इंजेक्शन, eval)
इंफ्रास्ट्रक्चर और कॉन्फ़िगरेशन:
iac.yaml- कोड के रूप में इंफ्रास्ट्रक्चर (Terraform, CloudFormation, Kubernetes)config.yaml- कॉन्फ़िगरेशन फ़ाइल सुरक्षा (हार्डकोडेड क्रेडेंशियल्स, असुरक्षित सेटिंग्स)
कस्टम नियम scan_security --ruleset /path/to/rules.yaml के साथ लोड किए जा सकते हैं।
आर्किटेक्चर
+-----------------------------------------------------------------+
| MCP Server |
| +-----------------------------------------------------------+ |
| | JSON-RPC over stdio | |
| +-----------------------------------------------------------+ |
| | |
| +---------------------------v-------------------------------+ |
| | Code Intel Engine | |
| | +------------+ +------------+ +------------------------+ | |
| | | Symbol | | File | | Search Engine | | |
| | | Index | | Cache | | (Tantivy + TF-IDF) | | |
| | | (DashMap) | | (DashMap) | +------------------------+ | |
| | +------------+ +------------+ | |
| | +------------+ +------------+ +------------------------+ | |
| | | Call Graph | | Taint | | Security Rules | | |
| | | Analysis | | Tracker | | Engine | | |
| | +------------+ +------------+ +------------------------+ | |
| +-----------------------------------------------------------+ |
| | |
| +---------------------------v-------------------------------+ |
| | Tree-sitter Parser | |
| | +------+ +------+ +------+ +------+ +------+ | |
| | | Rust | |Python| | JS | | TS | | Go | ... | |
| | +------+ +------+ +------+ +------+ +------+ | |
| +-----------------------------------------------------------+ |
| | |
| +---------------------------v-------------------------------+ |
| | Repository Walker | |
| | (ignore crate - respects .gitignore) | |
| +-----------------------------------------------------------+ |
+-----------------------------------------------------------------+
प्रदर्शन
Apple M1 पर बेंचमार्क किया गया (criterion.rs):
पार्सिंग थ्रूपुट
| भाषा | इनपुट आकार | समय | थ्रूपुट |
|---|---|---|---|
| Rust (बड़ी फ़ाइल) | 278 KB | 131 µs | 1.98 GiB/s |
| Rust (मध्यम फ़ाइल) | 27 KB | 13.5 µs | 1.89 GiB/s |
| Python | ~4 KB | 16.7 µs | - |
| TypeScript | ~5 KB | 13.9 µs | - |
| मिश्रित (5 फ़ाइलें) | ~15 KB | 57 µs | - |
खोज विलंबता
| ऑपरेशन | कॉर्पस आकार | समय |
|---|---|---|
| प्रतीक सटीक मिलान | 1,000 प्रतीक | 483 ns |
| प्रतीक उपसर्ग मिलान | 1,000 प्रतीक | 2.7 µs |
| प्रतीक अस्पष्ट मिलान | 1,000 प्रतीक | 16.5 µs |
| BM25 पूर्ण-पाठ | 1,000 दस्तावेज़ | 80 µs |
| TF-IDF समानता | 1,000 दस्तावेज़ | 130 µs |
| हाइब्रिड (BM25+TF-IDF) | 1,000 दस्तावेज़ | 151 µs |
एंड-टू-एंड इंडेक्सिंग
| रिपॉजिटरी | फ़ाइलें | प्रतीक | समय | मेमोरी |
|---|---|---|---|---|
| narsil-mcp (यह रिपो) | 53 | 1,733 | 220 ms | ~50 MB |
| rust-analyzer | 2,847 | ~50K | 2.1s | 89 MB |
| linux kernel | 78,000+ | ~500K | 45s | 2.1 GB |
मुख्य मीट्रिक्स:
- ट्री-सिटर पार्सिंग: ~2 GiB/s निरंतर थ्रूपुट
- प्रतीक लुकअप: सटीक मिलान के लिए <1µs
- पूर्ण-पाठ खोज: अधिकांश प्रश्नों के लिए <1ms
- हाइब्रिड खोज rayon के माध्यम से BM25 + TF-IDF को समानांतर में चलाती है
विकास
# Run the full test suite
cargo test
# Run benchmarks (criterion.rs)
cargo bench
# Run with debug logging
RUST_LOG=debug cargo run -- --repos ./test-fixtures
# Format code
cargo fmt
# Lint
cargo clippy
# Test with MCP Inspector
npx @modelcontextprotocol/inspector ./target/release/narsil-mcp --repos ./path/to/repo
समस्या निवारण
ट्री-सिटर बिल्ड त्रुटियाँ
यदि आप बिल्ड के दौरान गुम C कंपाइलर या ट्री-सिटर के बारे में त्रुटियाँ देखते हैं:
# macOS
xcode-select --install
# Ubuntu/Debian
sudo apt install build-essential
# For WASM builds
brew install emscripten # macOS
न्यूरल सर्च API त्रुटियाँ
# Check your API key is set
echo $VOYAGE_API_KEY # or $OPENAI_API_KEY
# Common issue: wrong key format
export VOYAGE_API_KEY="pa-..." # Voyage keys start with "pa-"
export OPENAI_API_KEY="sk-..." # OpenAI keys start with "sk-"
इंडेक्स फ़ाइलें नहीं ढूँढ रहा है
# Check .gitignore isn't excluding files
narsil-mcp --repos /path --verbose # Shows skipped files
# Force reindex
narsil-mcp --repos /path --reindex
बड़े रिपो के साथ मेमोरी समस्याएँ
# For very large repos (>50K files), increase stack size
RUST_MIN_STACK=8388608 narsil-mcp --repos /path/to/huge-repo
# Or index specific subdirectories
narsil-mcp --repos /path/to/repo/src --repos /path/to/repo/lib
ग्राफ़ सुविधा काम नहीं कर रही है
यदि आप --graph पास करते हैं और ऐसी चेतावनी देखते हैं:
WARN: --graph flag was passed but the binary was built without the 'graph' feature.
SPARQL and CCG tools will not be available.
इसका मतलब है कि आप एक ऐसे बाइनरी का उपयोग कर रहे हैं जो graph सुविधा के साथ संकलित नहीं किया गया था। ठीक करने के लिए:
# Build from source with the graph feature
cargo build --release --features graph
# Or with multiple features
cargo build --release --features graph,frontend
# Then run with --graph
./target/release/narsil-mcp --repos ~/project --graph
यह एक अलग सुविधा क्यों है? graph सुविधा Oxigraph RDF डेटाबेस (~5MB अतिरिक्त बाइनरी आकार) जोड़ती है जिसकी अधिकांश उपयोग मामलों के लिए आवश्यकता नहीं होती है। डिफ़ॉल्ट बाइनरी को छोटा रखने के लिए इसे वैकल्पिक रखा गया है।
कैसे जाँचें कि ग्राफ़ सक्षम है या नहीं: स्टार्टअप लॉग देखें:
graph=trueका अर्थ है कि सुविधा संकलित है और सक्षम हैgraph=falseका अर्थ है कि या तो सुविधा संकलित नहीं है, या--graphपास नहीं किया गया था
रोडमैप
पूर्ण
- बहु-भाषा प्रतीक निष्कर्षण (32 भाषाएँ)
- Tantivy के साथ पूर्ण-पाठ खोज (BM25 रैंकिंग)
- हाइब्रिड खोज (RRF के साथ BM25 + TF-IDF)
- AST-अवेयर कोड चंकिंग
- Git blame/इतिहास एकीकरण
- जटिलता मीट्रिक्स के साथ कॉल ग्राफ़ विश्लेषण
- नियंत्रण प्रवाह ग्राफ़ (CFG) विश्लेषण
- पहुँचने वाली परिभाषाओं के साथ डेटा प्रवाह विश्लेषण (DFG)
- डेड कोड और डेड स्टोर डिटेक्शन
- इंजेक्शन कमजोरियों के लिए टेंट विश्लेषण
- सुरक्षा नियम इंजन (OWASP, CWE, क्रिप्टो, सीक्रेट्स)
- SBOM जनरेशन (CycloneDX, SPDX)
- निर्भरता भेद्यता जाँच (OSV)
- लाइसेंस अनुपालन विश्लेषण
- सर्कुलर निर्भरता डिटेक्शन के साथ इम्पोर्ट ग्राफ़
- क्रॉस-लैंग्वेज प्रतीक समाधान
- Merkle ट्री के साथ वृद्धिशील इंडेक्सिंग
- इंडेक्स स्थायित्व
- फ़ाइल परिवर्तनों के लिए वॉच मोड
- LSP एकीकरण
- रिमोट रिपॉजिटरी समर्थन
- स्ट्रीमिंग प्रतिक्रियाएँ
नया क्या है
v1.6.x (वर्तमान)
- क्रैश-प्रूफ चंकिंग -
chunk_file()औरextract_signature()में असुरक्षित बाइट-स्तरीय स्ट्रिंग स्लाइसिंग को ठीक किया गया, जो मल्टी-बाइट UTF-8 वर्णों (इमोजी, CJK, एक्सेंटेड वर्ण) वाली फ़ाइलों को प्रोसेस करते समयhybrid_search,search_chunks, औरget_chunk_statsको क्रैश कर देता था। सभी बाइट स्लाइसिंग अब फ़ॉलबैक के साथ सुरक्षितcontent.get()का उपयोग करती है। - NaN-सुरक्षित सॉर्ट ऑपरेशन - खोज, एम्बेडिंग, git, इंडेक्स और एक्सट्रैक्ट मॉड्यूल में 5 स्थानों को ठीक किया गया जहाँ
partial_cmp().unwrap()NaN फ्लोट मानों पर पैनिक करता था। सभी सॉर्ट अबunwrap_or(Ordering::Equal)का उपयोग करते हैं। - डिफेंस-इन-डेप्थ चंकिंग - सभी रिपो-वाइड
chunk_file()लूप के चारों ओरcatch_unwindरैपर जोड़े गए ताकि एक फ़ाइल में पैनिक पूरे MCP सर्वर को क्रैश करने के बजाय उसे छोड़ दे। - विज़ुअलाइज़ेशन फ्रंटएंड ओवरहाल - HashRouter रूटिंग, फ़ाइल ट्री साइडबार, सिंटैक्स-हाइलाइटेड कोड व्यूअर, डैशबोर्ड और प्रति-रिपो अवलोकन पृष्ठों के साथ पूर्ण SPA
- ग्राफ़ व्यू प्रदर्शन - इम्पोर्ट ग्राफ़ अब फ़ाइलसिस्टम वॉक के बजाय कैश्ड इंडेक्स डेटा का उपयोग करता है; प्रतीक ग्राफ़ मार्कडाउन राउंड-ट्रिप के बजाय सीधे फ़ाइल कैश को इटरेट करता है; सभी व्यू जल्दी समाप्ति के लिए
max_nodesका सम्मान करते हैं - वास्तविक नियंत्रण प्रवाह ग्राफ़ - फ्लो व्यू अब सिंगल-ब्लॉक स्टब के बजाय उचित बेसिक ब्लॉक, ब्रांच कंडीशन और लूप बैक-एज के साथ वास्तविक CFG बिल्डर (
cfg::analyze_function) का उपयोग करता है - हाइब्रिड ग्राफ़ बजट विभाजन - हाइब्रिड व्यू संतुलित परिणामों के लिए कॉल और इम्पोर्ट ग्राफ़ के बीच 60/40 नोड बजट आवंटित करता है
- फिक्स #14: कॉन्फ़िगरेबल एम्बेडिंग डाइमेंशन -
--neural-dimensionCLI आर्ग औरdefault_dimension_for_model()लुकअप जोड़ा गया ताकिtext-embedding-3-largeजैसे मॉडल हार्डकोडेड 1536 के बजाय सही डाइमेंशन (3072) का उपयोग करें - फिक्स #13: Nix फ्रंटएंड बिल्ड -
buildNpmPackageका उपयोग करकेflake.nixमेंfrontendDistडेरिवेशन जोड़ा गया ताकिnix profile install github:postrv/narsil-mcp#with-frontendकाम करे - Rust सुरक्षा नियम - कमांड इंजेक्शन, transmute, FFI सीमाएँ, TOCTOU, ReDoS, static mut, SSRF, और अधिक को कवर करने वाले 18 नए नियम (RUST-004 से RUST-021)
- Elixir सुरक्षा नियम - atom exhaustion, binary_to_term डिसीरियलाइज़ेशन, Code.eval इंजेक्शन, Ecto SQL इंजेक्शन, Phoenix XSS, Erlang वितरण सुरक्षा को कवर करने वाले 18 नए नियम (EX-001 से EX-018)
serde_yamlसेserde-saphyrमें माइग्रेट किया गया - डेप्रिकेटेडserde_yamlको सक्रिय रूप से अनुरक्षित, पैनिक-मुक्त YAML लाइब्रेरी से बदल दिया गया- कस्टम फ़ेविकॉन - फ्रंटएंड अब डिफ़ॉल्ट Vite लोगो के बजाय narsil-mcp ब्रांडिंग आइकन का उपयोग करता है
- निर्भरता सुरक्षा -
timeको 0.3.47 (RUSTSEC-2026-0009),bytesको 1.11.1 (RUSTSEC-2026-0007) में अपडेट किया गया - परीक्षण संख्या 1,611 से बढ़कर 1,763 (+152 परीक्षण) हो गई
v1.5.x
- नियतात्मक कॉल ग्राफ़ समाधान - स्कोप-हिंट प्रसार कैली समाधान को स्पष्ट करता है (जैसे,
App::run()सही ढंग सेsrc/app/mod.rs::runको हल करता है) - 8 ग्राफ़ विश्लेषण सुधार - योग्य नोड कुंजियाँ, हॉटस्पॉट फ़िल्टरिंग, CFG अभिव्यक्ति हैंडलिंग, इम्पोर्ट पथ पार्सिंग
- Nix फ्लेक सुधार - DRY
mkPkgहेल्पर, अनावश्यक macOS फ्रेमवर्क हटाए गए, सैंडबॉक्स बिल्ड के लिए--libपरीक्षण रणनीति
v1.4.x
- SPARQL / RDF नॉलेज ग्राफ़ - Oxigraph के माध्यम से SPARQL के साथ कोड इंटेलिजेंस डेटा क्वेरी करें
- कोड कॉन्टेक्स्ट ग्राफ़ (CCG) - स्तरीय परतों (L0-L3) के साथ मानकीकृत, AI-उपभोज्य कोडबेस प्रतिनिधित्व के लिए 12 उपकरण
- प्रकार-जागरूक सुरक्षा विश्लेषण - प्रकार अनुमान और ट्रेट कार्यान्वयन के साथ उन्नत टेंट ट्रैकिंग
- बहु-भाषा CFG/DFG - नियंत्रण प्रवाह और डेटा प्रवाह विश्लेषण Go, Java, C#, Kotlin तक विस्तारित
- कोड स्कैनिंग के रूप में इंफ्रास्ट्रक्चर - Terraform, CloudFormation, Kubernetes के लिए नए
iac.yamlनियम - भाषा-विशिष्ट सुरक्षा नियम - Go, Java, C#, Kotlin, Bash के लिए नए नियम
- 6 नई भाषाएँ - Erlang, Elm, Fortran, PowerShell, Nix, Groovy
- कुल 90 उपकरण - नई SPARQL, CCG और विश्लेषण क्षमताओं के साथ 79 से ऊपर
v1.2.x
exclude_testsपैरामीटर - 22 उपकरण परीक्षण फ़ाइलों को फ़िल्टर करने का समर्थन करते हैं- npm पैकेज -
npm install -g narsil-mcpके माध्यम से इंस्टॉल करें
v1.1.x
- मल्टी-प्लेटफ़ॉर्म वितरण - Homebrew, Scoop, npm, Cargo, या सीधे डाउनलोड के माध्यम से इंस्टॉल करें
- कॉन्फ़िगरेबल टूल प्रीसेट - न्यूनतम, संतुलित, पूर्ण और सुरक्षा-केंद्रित प्रीसेट
- स्वचालित संपादक डिटेक्शन - Zed, VS Code, Claude Desktop के लिए इष्टतम डिफ़ॉल्ट
- इंटरैक्टिव सेटअप विज़ार्ड - आसान कॉन्फ़िगरेशन के लिए
narsil-mcp config init - 32 भाषा समर्थन - Dart, Julia, R, Perl, Zig, और अधिक जोड़े गए
- बेहतर प्रदर्शन - पृष्ठभूमि इंडेक्सिंग के साथ तेज़ स्टार्टअप
v1.0.x
- न्यूरल सिमैंटिक सर्च - Voyage AI या OpenAI एम्बेडिंग का उपयोग करके समान कोड खोजें
- प्रकार अनुमान - बाहरी उपकरणों के बिना Python/JavaScript/TypeScript में प्रकारों का अनुमान लगाएं
- बहु-भाषा टेंट विश्लेषण - PHP, Java, C#, Ruby, Kotlin के लिए सुरक्षा स्कैनिंग
- WASM बिल्ड - कोड प्लेग्राउंड और शैक्षिक उपकरणों के लिए ब्राउज़र में चलाएं
- 147 बंडल सुरक्षा नियम - OWASP, CWE, क्रिप्टो, सीक्रेट्स, Rust, Elixir डिटेक्शन
- IDE कॉन्फ़िग शामिल - Claude Desktop, Cursor, VS Code, Zed टेम्पलेट
लाइसेंस
निम्नलिखित में से किसी एक के तहत लाइसेंस प्राप्त:
- Apache License, Version 2.0 (LICENSE-APACHE या http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT या http://opensource.org/licenses/MIT)
अपने विकल्प पर।
श्रेय
इनके साथ निर्मित:
- tree-sitter - वृद्धिशील पार्सिंग
- tantivy - पूर्ण-पाठ खोज
- tokio - एसिंक रनटाइम
- rayon - डेटा समानता
- serde - सीरियलाइज़ेशन