Narsil MCP

公式

Rustで実装された超高速🔥最高クラスのMCPサーバー。ニューラルエンジン、セキュリティプロファイリング、オプションのグラフフロントエンドを搭載

Narsil MCPで何ができますか?

  • Find symbols across 32 languages — Search for functions, classes, or interfaces by name or pattern using find_symbols or workspace_symbol_search.
  • Trace tainted data for security audits — Follow user input through the codebase with trace_taint and detect injection vulnerabilities like SQLi or XSS.
  • Analyze function call relationships — Map callers, callees, and paths between functions with get_call_graph, get_callers, and find_call_path.
  • Generate a software bill of materials — Export a CycloneDX or SPDX SBOM and check dependencies against the OSV database with generate_sbom and check_dependencies.
  • Infer types without external checkers — Get inferred types for Python, JavaScript, or TypeScript variables using infer_types and 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_query and export_ccg.

ドキュメント

narsil-mcp

深いコードインテリジェンスのための、超高速でプライバシーを最優先するMCPサーバー

License Rust Tests MCP

90の専用ツールを通じて、AIアシスタントに深いコード理解を提供する、Rust製のMCP(モデルコンテキストプロトコル)サーバーです。

なぜ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関数、構造体、列挙型、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クラス、オブジェクト、トレイト、関数、vals
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+ 組み込み可視化Web 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はエディターを検出し、最適なプリセットを自動的に適用します。

エディタープリセットツール数コンテキストトークン理由
ZedMinimal26~4,686高速起動、最小限のコンテキスト
VS CodeBalanced51~8,948機能のバランスが良好
Claude DesktopFull90~12,001最大限の機能

トークン節約:

  • Minimalプリセット: Full比で61%少ないトークン
  • Balancedプリセット: Full比で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

5つのグラフビュー:

ビュー説明
コールグラフ深さ制御と方向フィルタリングによる関数呼び出し関係
インポートグラフコードベース全体のファイルレベルのインポート依存関係
シンボルグラフファイルクラスタリング付きのシンボルへの全参照
ハイブリッド分割予算によるコールグラフとインポートグラフの組み合わせ
制御フロー基本ブロック、分岐、ループバックエッジを含む実際のCFG

機能:

  • ドラッグ、ズーム、ダブルクリックドリルダウンが可能なインタラクティブなCytoscape.jsグラフ
  • カラーコーディング(緑/黄/オレンジ/赤)による複雑度メトリクスオーバーレイ
  • テイントソースとシンクを強調表示するセキュリティ脆弱性オーバーレイ
  • 6つのレイアウトアルゴリズム(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を通じて使用できます。これは、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サプライチェーンセキュリティを分析
スキル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>

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_path2つの関数間のパスを検索
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特定のコミットの差分
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 gzip圧縮)
export_ccg_fullレイヤー3完全詳細 (~1-20MB N-Quads gzip圧縮)
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 のセキュリティパターン (unsafe transmute、FFI 境界、コマンドインジェクション、TOCTOU)
  • elixir.yaml - Elixir/BEAM のパターン (アトム枯渇、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 - Infrastructure as Code (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 カーネル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 ランキング)
  • ハイブリッド検索 (BM25 + TF-IDF with RRF)
  • AST を認識したコードチャンキング
  • Git blame/履歴統合
  • 複雑度メトリクス付きコールグラフ分析
  • 制御フローグラフ (CFG) 分析
  • 到達定義付きデータフロー分析 (DFG)
  • デッドコードおよびデッドストア検出
  • インジェクション脆弱性のためのテイント分析
  • セキュリティルールエンジン (OWASP、CWE、暗号、シークレット)
  • SBOM 生成 (CycloneDX、SPDX)
  • 依存関係の脆弱性チェック (OSV)
  • ライセンスコンプライアンス分析
  • 循環依存検出付きインポートグラフ
  • 言語横断的なシンボル解決
  • マークルツリーによる増分インデックス作成
  • インデックスの永続化
  • ファイル変更の監視モード
  • LSP 統合
  • リモートリポジトリサポート
  • ストリーミングレスポンス

新着情報

v1.6.x (現在)

  • クラッシュプルーフチャンキング - chunk_file()extract_signature() で、マルチバイト UTF-8 文字 (絵文字、CJK、アクセント付き文字) を含むファイルを処理する際に hybrid_searchsearch_chunksget_chunk_stats がクラッシュする原因となっていた安全でないバイトレベルの文字列スライスを修正しました。すべてのバイトスライスは、フォールバック付きの安全な content.get() を使用するようになりました。
  • NaN 安全なソート操作 - 検索、埋め込み、git、インデックス、抽出モジュールにわたる 5 箇所で、partial_cmp().unwrap() が NaN float 値でパニックする問題を修正しました。すべてのソートは unwrap_or(Ordering::Equal) を使用するようになりました。
  • 多層防御チャンキング - リポジトリ全体の chunk_file() ループすべてに catch_unwind ラッパーを追加し、1 つのファイルでパニックが発生しても 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 フロントエンドビルド - 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 セキュリティルール - アトム枯渇、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 に拡張された制御フローおよびデータフロー分析
  • Infrastructure as Code スキャン - 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 - シリアライゼーション