jarvis について
jarvisは、コーディングエージェント向けのローカル優先コードナビゲーションMCPサーバーです。リポジトリを事前にインデックス化し、シンボル検索とテキスト検索を提供します。コードとインデックスはローカルに保持されます。
主な機能
- 01シンボル定義と参照の検索
- 02呼び出し・型階層の確認
- 03テキスト・正規表現検索
- 04リポジトリ横断の依存範囲確認
- 05インデックス状態と作成
- 06ローカルダッシュボード
活用シーン
- 01リポジトリ内でシンボルの使用箇所を追跡
- 02関数の呼び出し元と呼び出し先を調査
- 03不要な結果を抑えてコードを検索
- 04インデックス済みリポジトリ間の依存を確認
MCP 対応
stdio経由で、コードナビゲーション、検索、インデックス管理、状態確認など10種類のツールをMCPクライアントに公開します。独立したHomebrew版ではsemanticSearchも登録されていますが、利用できません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
jarvis
コーディングエージェントが grep にコンテキストウィンドウを費やすべきではありません。
エージェントが 「AuthService はどこで使われていますか?」 と尋ねると、grep はコメント、
Markdown、テスト用データ、名前の似たシンボルをノイズまみれの結果として返します。エージェントはノイズから必要な情報を見分けるためにファイルを読み直し、コンテキストを消費します。それでも呼び出し箇所を見落とすことがあります。
jarvis はローカルのコードインテリジェンスレイヤーを事前に構築するため、エージェントは正確な出現箇所を調べる findReferences、定義範囲を調べる goToDefinition、呼び出し経路を調べる callHierarchy、精密な字句検索を行う searchCode を呼び出せます。Claude Code、Cursor、その他の MCP クライアント向けの 10 個の MCP ツールを提供します。
コードとインデックスがマシンの外に出ることはありません。
| jarvis を使わない場合 | Grep → コメント、テスト、インポートが実際の結果と混在 → 絞り込むためにファイルを開く → 呼び出し箇所を推測 → 推論ではなく検索にコンテキストを消費 |
| jarvis を使う場合 | findReferences("AuthService") → ファイルと範囲が特定された正確な出現箇所 → グラフを callHierarchy で確認 → searchCode("token refresh") → すべての一致箇所を開かずに回答 |
クイックスタート · MCP ツール · ダッシュボード · 制限事項 · 詳細 · ドキュメント
クイックスタート
1. スタンドアロンバイナリをインストールします:
brew install jarvis-intelligence/jarvis/jarvis
Linux ユーザーは、まず Homebrew/Linuxbrew をインストールする必要があります。このフォーミュラは macOS arm64/x86_64 と Linux arm64/x86_64 に対応し、jarvis と jarvis-server の両方をインストールします。また、Python 3.12、ダッシュボードのアセット、tree-sitter ライブラリ、watch、scip、zoekt-git-index、zoekt-webserver が含まれています。Homebrew が universal-ctags を提供します。Python、uv、pip、PyPI によるインストールは不要です。
brew upgrade jarvis でアップグレードできます。破損したインストールは brew reinstall jarvis で復旧できます。
2. リポジトリをインデックス化します(スラッグのデフォルトはディレクトリ名です):
jarvis index /path/to/your/repo
3. MCP サーバーを登録します:
claude mcp add jarvis --scope user -- jarvis-server
エージェントに 「AuthService へのすべての参照を探して」 と尋ねると、grep の代わりに findReferences を呼び出します。
その他の MCP クライアント(Cursor、Claude Desktop、stdio クライアント全般)
{
"mcpServers": {
"jarvis": {
"command": "jarvis-server"
}
}
}
クライアントが PATH 上の jarvis-server を見つけられない場合(GUI アプリはシェルの環境を引き継がないことがよくあります)、which jarvis-server で取得した絶対パスを使用してください。
Claude Code プラグイン(MCP を登録し、エージェントスキルを同梱)
まず Homebrew バイナリをインストールしてください。このプラグインは jarvis スキルを追加し、インストール済みの jarvis-server を登録できます。
/plugin marketplace add jarvis-intelligence/jarvis-index
/plugin install jarvis@jarvis
オプションの言語インデクサー
スタンドアロンパッケージには SCIP コンバーターと 2 つの Zoekt バイナリが含まれています。Homebrew フォーミュラには setup.sh が含まれていません。jarvis のソースチェックアウトから、リポジトリに必要な言語別インデクサーをインストールしてください:
| 言語 | インストーラー | ツールチェーン |
|---|---|---|
| TypeScript/TSX | sh setup.sh --only scip-typescript | Node.js/npm |
| Python | sh setup.sh --only scip-python | Node.js/npm |
| Java/Kotlin | sh setup.sh --only scip-java | JDK。Kotlin リポジトリでは Kotlin 2.2.0 を正確に指定する必要があります |
| Swift | sh setup.sh --only scip-swift | macOS arm64 上の Xcode |
macOS で Maven を使ってビルドする Java リポジトリでは、brew install bash で最新の Bash もインストールし、同じソースチェックアウトから sh setup.sh --only bash-shim を実行してください。インデクサーを追加した後、再度インデックス化してください。対応するインデクサーがない場合でも、カバレッジがある範囲では Tree-sitter を使って documentSymbols と goToDefinition が動作します。
findReferences、callHierarchy、typeHierarchy は復旧方法を案内します。
含まれない機能
semanticSearch は MCP との互換性のために登録されていますが、スタンドアロン配布には含まれていません。ソースビルドの手順を示す Homebrew 固有の利用不可エラーを返します。字句検索とシンボル検索は引き続き利用できます。
セマンティック検索をソースからビルドする
スタンドアロンの Homebrew パッケージには、セマンティック検索の依存関係が含まれていません。ソースチェックアウトで、次のコマンドを実行してインストールしてください:
uv run jarvis install-semantic
次に、明示的にインデックス化します:
uv run jarvis index /path/to/repo --semantic
install-semantic は埋め込みモデル(BAAI/bge-m3、約 4.3 GB、初回のみ)も共有 Hugging Face キャッシュ(~/.cache/huggingface/)に事前ダウンロードします。インデックス化するリポジトリはすべて、このモデルを再利用します。ダウンロードが中断された場合、次回の jarvis index で自動的に再試行されます。
MCP ツール
| ツール | 説明 |
|---|---|
goToDefinition | シンボルの定義ファイルと範囲を特定します |
findReferences | インデックス化されたリポジトリ全体で、シンボルが出現するすべての箇所を検索します |
callHierarchy | シンボルへの呼び出し元/呼び出し先を表示します |
typeHierarchy | スーパータイプ/サブタイプを表示します |
documentSymbols | 1 つのファイルで定義されているすべてのシンボルのアウトラインを表示します |
searchCode | Zoekt による字句/正規表現検索を行います。必要に応じて 1 つのリポジトリに絞り込めます |
semanticSearch | Homebrew 配布版でセマンティック検索を利用できないことを示すエラーを返します |
blastRadius | 最大 2 ホップ先まで、他のどのインデックス化済みリポジトリがパッケージに依存しているかを示します |
getIndexStatus | 公開済みコミット、最新度、作業ツリーとの差分を示します |
indexRepo | path の git リポジトリのインデックスを構築します |
ダッシュボード
jarvis dashboard # serves http://127.0.0.1:6080 and opens a browser
CLI と MCP サーバーが読み取るものと同じ ~/.jarvis データを表示する、localhost 上の Web コンソールです。
要件と制限事項
- macOS arm64/x86_64 と Linux arm64/x86_64 のみ対応しています。 Windows はサポートされていません。
- Homebrew ディストリビューションでは、セマンティック検索を利用できません。
- リポジトリごとに1つの言語 — git で追跡されているファイルの拡張子の最多数から検出します。
--languageで上書きできます。 - jarvis はコードを編集しません。 jarvis は検索を担い、リネームやリファクタリングには Serena を併用できます。
- インデックス作成は明示的に行います — クエリを実行する前に
jarvis index(またはjarvis watch)を実行してください。
詳細
仕組み
インデックス作成 CLI が事前計算済みインデックスを ~/.jarvis に書き込み、stdio
ランタイムがそれを読み込みます。この2つは、ほかの契約を共有しません。
- 公開はアトミックに行われます — 再インデックスでは新しいスナップショットを書き込んだ後、
os.replaceでcurrentポインターを切り替えます。古いスナップショットを読み取っているクエリは引き続き動作し、ダウンタイムは発生しません。 - ランタイムの処理では書き込みを行いません — すべてのクエリは公開済みのスナップショットを読み取り専用で開きます(
mode=ro&immutable=1)。 - パッケージグラフは蓄積せずに再構築します — 再インデックスのたびに、そのリポジトリの出力エッジをすべて消去してから再計算します。
詳しくは、docs/system-architecture.md を参照してください。
インデックス作成 CLI リファレンス
jarvis index /path/to/your/repo # slug defaults to the directory name
jarvis index /path/to/your/repo --slug foo # or pick one explicitly
jarvis index /path/to/your/repo --scheme MyScheme # Swift repo with an ambiguous Xcode scheme
jarvis index /path/to/your/repo --language python # force the language instead of detecting it
jarvis index /path/to/your/repo --no-scip # skip optional SCIP enrichment; syntax baseline + Zoekt still publish
jarvis index /path/to/your/repo --scip # re-enable SCIP enrichment (both flags persist per repo)
jarvis list
jarvis status foo
jarvis reindex foo
jarvis forget foo
jarvis watch /path/to/your/repo [--debounce 5.0] # debounced auto-reindex on file changes (foreground)
上流プロジェクトの既知の制限事項
scip-javaは Android/Gradle リポジトリのインデックスを作成できません — Gradle プラグインは、AGP に置き換えられる標準ソースセットを前提としているためです(scip-java#177)。自動的に検出され、検索のみのモードに切り替わります。- Kotlin のインデックス作成には、Kotlin のバージョンを完全に一致させる必要があります —
scip-kotlincは固定された特定のリリース(現在は2.2.0)に対してコンパイルされています。自動的に検出されます。 - Maven でビルドされた Java リポジトリを macOS で使うには、bash ≥ 4.4 が必要です —
brew install bashで解決できます。 - Swift のインデックス作成には
scip >= v0.9.0が必要です — 古いコンバーターは出現箇所の範囲を警告なしに破棄します。jarvis indexは、壊れたインデックスを公開しないよう、古いscipの使用を拒否します。
設定
| 変数 | 用途 |
|---|---|
JARVIS_DATA_DIR | すべてのインデックスとレジストリで、デフォルトの ~/.jarvis を上書きします |
ソース開発用のセマンティックパスには、モデルプレフィックスを追加で上書きする設定があります。 これらはスタンドアロンディストリビューションには影響しません。
ドキュメント
docs/project-overview-pdr.md— 対象範囲、価値提案、対象外項目docs/system-architecture.md— アーキテクチャ上の保証、ストレージ構成、クエリパスdocs/codebase-summary.md— モジュール一覧、テストカバレッジdocs/code-standards.md— コードパターンと規約docs/dashboard.md— ダッシュボードのビュー、アクション、セキュリティモデル
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。