Narsil MCP

आधिकारिक

ब्लेज़िंगली फास्ट 🔥 रस्ट 🦀 में बेस्ट-इन-क्लास MCP सर्वर, जिसमें न्यूरल इंजन, सुरक्षा प्रोफाइलिंग और वैकल्पिक ग्राफ़ फ्रंटएंड शामिल है

Narsil MCP के साथ आप क्या कर सकते हैं?

  • 32 भाषाओं में प्रतीक खोजेंfind_symbols या workspace_symbol_search का उपयोग करके नाम या पैटर्न द्वारा फ़ंक्शन, क्लास या इंटरफ़ेस खोजें।
  • सुरक्षा ऑडिट के लिए दूषित डेटा का पता लगाएंtrace_taint के साथ कोडबेस में उपयोगकर्ता इनपुट का अनुसरण करें और SQLi या XSS जैसी इंजेक्शन कमजोरियों का पता लगाएं।
  • फ़ंक्शन कॉल संबंधों का विश्लेषण करेंget_call_graph, get_callers और find_call_path के साथ कॉल करने वालों, कॉल किए जाने वालों और फ़ंक्शनों के बीच पथों का मानचित्रण करें।
  • सॉफ़्टवेयर बिल ऑफ़ मटेरियल्स जनरेट करें — CycloneDX या SPDX SBOM निर्यात करें और generate_sbom और check_dependencies के साथ OSV डेटाबेस के विरुद्ध निर्भरताओं की जाँच करें।
  • बाहरी जाँचकर्ताओं के बिना प्रकार अनुमान लगाएंinfer_types का उपयोग करके Python, JavaScript या TypeScript वेरिएबल्स के लिए अनुमानित प्रकार प्राप्त करें और संभावित प्रकार त्रुटियाँ खोजें।
  • कोडबेस को ज्ञान ग्राफ के रूप में क्वेरी करें — RDF ग्राफ के विरुद्ध SPARQL क्वेरी चलाएं या sparql_query और export_ccg के साथ AI उपभोग के लिए स्तरीकृत CCG परतें निर्यात करें।

दस्तावेज़

narsil-mcp

गहन कोड बुद्धिमत्ता के लिए अत्यंत तेज़, गोपनीयता-प्रथम MCP सर्वर

License Rust Tests MCP

एक Rust-संचालित MCP (मॉडल संदर्भ प्रोटोकॉल) सर्वर जो AI सहायकों को 90 विशेष उपकरणों के माध्यम से गहन कोड समझ प्रदान करता है।

narsil-mcp क्यों?

सुविधाnarsil-mcpXRAYSerenaGitHub MCP
भाषाएँ32430+ (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

महत्वपूर्ण: --graph CLI फ़्लैग के लिए आवश्यक है कि बाइनरी --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_searchBM25-रैंक्ड सिमेंटिक खोज
hybrid_searchरैंक फ्यूजन के साथ संयुक्त BM25 + TF-IDF
search_chunksAST-जागरूक कोड खंडों पर खोजें
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_errorsmypy/tsc चलाए बिना संभावित प्रकार त्रुटियाँ खोजें
get_typed_taint_flowप्रकार अनुमान के साथ डेटा प्रवाह को मिलाकर उन्नत टेंट विश्लेषण

आयात/निर्भरता ग्राफ़

टूलविवरण
get_import_graphआयात ग्राफ़ बनाएँ और उसका विश्लेषण करें
find_circular_importsवृत्ताकार निर्भरताओं का पता लगाएँ
get_incremental_statusमर्कल ट्री और परिवर्तन आँकड़े

सुरक्षा विश्लेषण - टेंट ट्रैकिंग

टूलविवरण
find_injection_vulnerabilitiesSQL इंजेक्शन, XSS, कमांड इंजेक्शन, पथ ट्रैवर्सल खोजें
trace_taintकिसी स्रोत से दूषित डेटा प्रवाह का पता लगाएँ
get_taint_sourcesटेंट स्रोतों (उपयोगकर्ता इनपुट, फ़ाइलें, नेटवर्क) की सूची बनाएँ
get_security_summaryव्यापक सुरक्षा जोखिम मूल्यांकन

सुरक्षा विश्लेषण - नियम इंजन

टूलविवरण
scan_securityसुरक्षा नियमों (OWASP, CWE, क्रिप्टो, रहस्य) के साथ स्कैन करें
check_owasp_top10OWASP शीर्ष 10 2021 भेद्यताओं के लिए स्कैन करें
check_cwe_top25CWE शीर्ष 25 कमजोरियों के लिए स्कैन करें
explain_vulnerabilityविस्तृत भेद्यता स्पष्टीकरण प्राप्त करें
suggest_fixनिष्कर्षों के लिए उपचार सुझाव प्राप्त करें

आपूर्ति श्रृंखला सुरक्षा

टूलविवरण
generate_sbomSBOM जनरेट करें (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_repoGitHub रिपॉजिटरी क्लोन और अनुक्रमित करें
list_remote_filesGitHub API के माध्यम से फ़ाइलें सूचीबद्ध करें
get_remote_fileGitHub API के माध्यम से फ़ाइल प्राप्त करें

मेट्रिक्स

टूलविवरण
get_metricsप्रदर्शन आँकड़े और समय

SPARQL / ज्ञान ग्राफ़ (--graph आवश्यक)

टूलविवरण
sparql_queryRDF ज्ञान ग्राफ़ के विरुद्ध 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_ccgSPARQL का उपयोग करके CCG क्वेरी करें
get_ccg_aclCCG परतों के लिए WebACL अभिगम नियंत्रण जनरेट करें
get_ccg_access_infoCCG अभिगम स्तरीय जानकारी प्राप्त करें
import_ccgURL या फ़ाइल से CCG परत आयात करें
import_ccg_from_registrycodecontextgraph.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 KB131 µs1.98 GiB/s
Rust (मध्यम फ़ाइल)27 KB13.5 µs1.89 GiB/s
Python~4 KB16.7 µs-
TypeScript~5 KB13.9 µs-
मिश्रित (5 फ़ाइलें)~15 KB57 µ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 (यह रिपो)531,733220 ms~50 MB
rust-analyzer2,847~50K2.1s89 MB
linux kernel78,000+~500K45s2.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-dimension CLI आर्ग और 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 टेम्पलेट

लाइसेंस

निम्नलिखित में से किसी एक के तहत लाइसेंस प्राप्त:

अपने विकल्प पर।

श्रेय

इनके साथ निर्मित:

  • tree-sitter - वृद्धिशील पार्सिंग
  • tantivy - पूर्ण-पाठ खोज
  • tokio - एसिंक रनटाइम
  • rayon - डेटा समानता
  • serde - सीरियलाइज़ेशन