Narsil MCP

공식

엄청나게 빠른 🔥 최고 수준의 Rust 🦀 기반 MCP 서버로, 신경 엔진, 보안 프로파일링, 선택적 그래프 프론트엔드를 갖추고 있습니다.

Narsil MCP(으)로 무엇을 할 수 있나요?

  • 32개 언어에서 심볼 찾기find_symbols 또는 workspace_symbol_search를 사용하여 함수, 클래스 또는 인터페이스를 이름이나 패턴으로 검색합니다.
  • 보안 감사를 위한 오염 데이터 추적trace_taint로 코드베이스 전체에서 사용자 입력을 추적하고 SQLi 또는 XSS와 같은 주입 취약점을 탐지합니다.
  • 함수 호출 관계 분석get_call_graph, get_callersfind_call_path를 사용하여 호출자, 피호출자 및 함수 간 경로를 매핑합니다.
  • 소프트웨어 자재 명세서 생성 — CycloneDX 또는 SPDX SBOM을 내보내고 generate_sbomcheck_dependencies로 OSV 데이터베이스에 대해 종속성을 확인합니다.
  • 외부 검사기 없이 유형 추론infer_types를 사용하여 Python, JavaScript 또는 TypeScript 변수의 추론된 유형을 가져오고 잠재적인 유형 오류를 찾습니다.
  • 코드베이스를 지식 그래프로 쿼리 — RDF 그래프에 대해 SPARQL 쿼리를 실행하거나 sparql_queryexport_ccg로 AI 소비를 위한 계층형 CCG 레이어를 내보냅니다.

문서

narsil-mcp

초고속, 개인정보 보호 우선의 심층 코드 인텔리전스 MCP 서버

License Rust Tests MCP

AI 어시스턴트에게 90개의 특화된 도구를 통해 심층적인 코드 이해를 제공하는 Rust 기반 MCP(Model Context Protocol) 서버입니다.

narsil-mcp를 선택해야 하는 이유

기능narsil-mcpXRAYSerenaGitHub MCP
지원 언어32430+ (LSP)N/A
뉴럴 검색지원미지원미지원미지원
오염 분석지원미지원미지원미지원
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함수, 구조체, 열거형, typedef
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클래스, 오브젝트, 트레이트, 함수, val
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를 자동으로 구성하고 필요한 빌드 도구를 확인합니다.

소스에서 빌드

사전 요구 사항:

# 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 그래프
  • 색상 코딩(녹색/노란색/주황색/빨간색)이 포함된 복잡성 메트릭 오버레이
  • 오염 소스 및 싱크를 강조하는 보안 취약점 오버레이
  • 6가지 레이아웃 알고리즘 (dagre, force-directed, 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를 통해 사용할 수 있습니다. Forgemax는 90개의 모든 도구를 단 2개(search + execute)로 축소하여 도구 스키마 오버헤드를 ~12,000 토큰에서 ~1,000 토큰으로 줄이는 Code Mode MCP 게이트웨이입니다.

# 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 구성

구성 파일을 생성하여 AI 어시스턴트에 narsil-mcp를 추가하세요. 권장 설정은 다음과 같습니다:


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공급망 보안 분석
스킬Claude가 90개 도구를 효과적으로 사용하도록 안내
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>

Ralph는 narsil-mcp를 사용할 수 없을 때도 정상적으로 성능이 저하되며, 모든 핵심 자동화 기능은 그것 없이도 작동합니다.

문서: 전체 통합 세부 정보는 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함수의 Type-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 Top 10 2021 취약점 스캔
check_cwe_top25CWE Top 25 약점 스캔
explain_vulnerability상세 취약점 설명 가져오기
suggest_fix발견 사항에 대한 해결 제안 가져오기

공급망 보안

도구설명
generate_sbomSBOM 생성 (CycloneDX/SPDX/JSON)
check_dependencies알려진 취약점 확인 (OSV 데이터베이스)
check_licenses규정 준수 문제에 대한 라이선스 분석
find_upgrade_path취약한 종속성에 대한 안전한 업그레이드 경로 찾기

Git 통합 (--git 필요)

도구설명
get_blame파일에 대한 Git blame
get_file_history파일에 대한 커밋 히스토리
get_recent_changes리포지토리의 최근 커밋
get_hotspots높은 변동성과 복잡성을 가진 파일
get_contributors리포지토리/파일 기여자
get_commit_diff특정 커밋에 대한 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) - 리포지토리 ID, 개수
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 Top 10 2021 취약점 패턴
  • cwe-top25.yaml - CWE Top 25 가장 위험한 약점
  • crypto.yaml - 암호화 문제 (취약한 알고리즘, 하드코딩된 키)
  • secrets.yaml - 비밀 탐지 (API 키, 비밀번호, 토큰) 언어별 규칙:
  • rust.yaml - Rust 보안 패턴 (안전하지 않은 transmute, FFI 경계, 명령어 주입, TOCTOU)
  • elixir.yaml - Elixir/BEAM 패턴 (atom 소진, 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
리눅스 커널78,000+~500K45s2.1 GB

주요 지표:

  • Tree-sitter 파싱: ~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

문제 해결

Tree-sitter 빌드 오류

빌드 중 C 컴파일러 또는 tree-sitter 누락 오류가 표시되는 경우:

# 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 (현재)

  • 충돌 방지 청킹 - 멀티바이트 UTF-8 문자(이모지, CJK, 악센트 문자)가 포함된 파일을 처리할 때 hybrid_search, search_chunks, get_chunk_stats이 충돌하는 원인이었던 chunk_file()extract_signature()의 안전하지 않은 바이트 수준 문자열 슬라이싱을 수정했습니다. 이제 모든 바이트 슬라이싱은 폴백과 함께 안전한 content.get()를 사용합니다.
  • NaN 안전 정렬 작업 - partial_cmp().unwrap()이 NaN 부동 소수점 값에서 패닉을 일으키던 검색, 임베딩, git, 인덱스, 추출 모듈 전반의 5개 위치를 수정했습니다. 이제 모든 정렬은 unwrap_or(Ordering::Equal)을 사용합니다.
  • 심층 방어 청킹 - 저장소 전체의 chunk_file() 루프 주위에 catch_unwind 래퍼를 추가하여 한 파일에서 패닉이 발생해도 전체 MCP 서버가 충돌하지 않고 해당 파일을 건너뜁니다.
  • 시각화 프론트엔드 점검 - HashRouter 라우팅, 파일 트리 사이드바, 구문 강조 코드 뷰어, 대시보드, 저장소별 개요 페이지를 갖춘 완전한 SPA
  • 그래프 뷰 성능 - 가져오기 그래프가 이제 파일 시스템 탐색 대신 캐시된 인덱스 데이터를 사용합니다. 심볼 그래프는 마크다운 왕복 대신 파일 캐시를 직접 반복합니다. 모든 뷰는 조기 종료를 위해 max_nodes를 준수합니다.
  • 실제 제어 흐름 그래프 - 흐름 뷰가 이제 단일 블록 스텁 대신 적절한 기본 블록, 분기 조건 및 루프 백에지를 가진 실제 CFG 빌더(cfg::analyze_function)를 사용합니다.
  • 하이브리드 그래프 예산 분할 - 하이브리드 뷰는 균형 잡힌 결과를 위해 호출 그래프와 가져오기 그래프 간에 노드 예산을 60/40으로 할당합니다.
  • 수정 #14: 구성 가능한 임베딩 차원 - text-embedding-3-large과 같은 모델이 하드코딩된 1536 대신 올바른 차원(3072)을 사용하도록 --neural-dimension CLI 인수 및 default_dimension_for_model() 조회를 추가했습니다.
  • 수정 #13: Nix 프론트엔드 빌드 - nix profile install github:postrv/narsil-mcp#with-frontend가 작동하도록 buildNpmPackage을 사용하여 flake.nixfrontendDist 파생을 추가했습니다.
  • Rust 보안 규칙 - 명령어 주입, transmute, FFI 경계, TOCTOU, ReDoS, static mut, SSRF 등을 다루는 18개의 새로운 규칙 (RUST-004 ~ RUST-021)
  • Elixir 보안 규칙 - atom 소진, 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 flake 개선 - 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 템플릿.

라이선스

다음 중 하나에 따라 라이선스가 부여됩니다:

귀하의 선택에 따라.

크레딧

다음을 사용하여 구축: