ontomics について
ontomics は、コーディングエージェントがコードベースのドメイン知識を一度のツール呼び出しで参照できるように索引を構築する MCP サーバーです。すべての処理は手元のマシン上で行われ、エージェントセッションでのトークン消費を抑えたい開発者を対象としています。
主な機能
- 01ドメイン概念のクラスタリングと語彙の検索
- 02命名規則の検出と識別子のチェック
- 03関数本体の埋め込みによる振る舞いの類似性検索
- 04モジュールごとの概念マップと型のデータフロー分析
- 05ポータブルな YAML としてのドメイン知識のエクスポート
- 06git の参照に対する語彙の差分表示
活用シーン
- 01エージェントがリポジトリ内の用語の意味を素早く把握する
- 02新しい識別子がプロジェクトの命名規則に従うか確認する
- 03振る舞いが似ており重複の可能性がある関数を見つける
MCP 対応
本プロジェクトは MCP サーバーであり、概念の検索、命名チェック、類似ロジックの検索などのツールを MCP クライアントに提供します。セッション概要用に ontomics://briefing リソースも公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ontomics
ontomics は、あらゆるコーディングエージェントにコードベースの知識を即座に提供します。ツールの呼び出しは19回ではなく1回。トークン数は約20分の1です。
https://github.com/user-attachments/assets/01afa8a0-1bc2-4686-94d7-965fef7610c3
画像レジストレーションの教師なし学習ライブラリである voxelmorph プロジェクトの可視化
ベンチマーク
Claude Sonnet でテストしました。同じ質問を、ontomics を使った場合と使わない場合で比較しています。
voxelmorph で「このコードベースにおける『transform』の意味は何ですか?」(トランスクリプト全文):
| ontomics あり | なし | |
|---|---|---|
| ツール呼び出し数 | 1 | 19 |
| トークン数 | 約3.7k | 約76k |
| 時間 | 5秒 | 1分15秒 |
| 回答の品質 | 完全 | 完全 |
ScribblePrompt で「このコードベースにおける主なドメイン概念は何ですか?」(トランスクリプト全文):
| ontomics あり | なし | |
|---|---|---|
| ツール呼び出し数 | 1 | 26 |
| トークン数 | 約3.7k | 約61.6k |
| 時間 | 約5秒 | 56秒 |
| 回答の品質 | 完全 | 完全 |
どちらの場合も、完全で正確な回答が得られました。ontomics は1回の呼び出しで回答にたどり着きました。
検索ではできないこと
検索では、文字列がどこに現れるかがわかります。LSP では、シンボルがどこで定義され、参照されているかがわかります。しかし、どちらも次の問いには答えられません。このコードベースのドメイン概念は何か。それらはどのように関連しているか。どのような命名規則が定着したか。前回のリリース以降、ドメインの語彙はどのように変化したか。名前に関係なく、どの関数が似た振る舞いをするか。
ontomics はプロジェクトのドメインのセマンティックインデックスを構築します。関連するシンボルを概念ごとにクラスタリングし、使用頻度から命名規則を検出し、略語を解決し、振る舞いの類似性で関数をグループ化し、語彙が時間とともにどのように変化するかを追跡します。このインデックスはポータブルなアーティファクトとしてエクスポートでき、ほかのリポジトリに規約を取り入れる際の初期データとして利用できます。
振る舞いの類似性
ontomics は、命名や概念に加えて、CodeRankEmbed(768次元、対照学習によるコード検索)を使って関数本体を直接埋め込み、振る舞いの類似性でクラスタリングします。これにより、命名や呼び出しグラフでは明らかにならない関係を見つけられます。
❯ What functions behave like spatial_transform()?
random_transform() nn/functional.py:352 0.80
spatial_transform() functional.py:596 0.69
random_transform() functional.py:1399 0.67
random_disp() nn/functional.py:275 0.65
integrate_disp() functional.py:764 0.65
compose() nn/functional.py:216 0.63
disp_to_trf() functional.py:343 0.62
また、この結果から、random_transform が異なる類似度スコアで2か所に現れることもわかります。これは実装が重複している兆候であり、概念レベルの検索では完全に見落とされます。
インストール
一度インストールすれば、すべてのプロジェクトで利用できます。設定は不要です。ontomics はリポジトリを自動検出し、初回実行時にインデックスを作成します。
ontomics を使うには、Git リポジトリ(.git/ ディレクトリ)が必要です。ホーム、ルート、一時ディレクトリのインデックス作成は拒否されます。Git リポジトリではないディレクトリにインデックスを作成するには、--force を指定してください。
1. バイナリをインストールする
npm(macOS/Linux):
npm install -g @ontomics/ontomics
macOS(Homebrew):
brew install EtienneChollet/tap/ontomics
シェルインストーラー(macOS/Linux):
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/EtienneChollet/ontomics/releases/latest/download/ontomics-installer.sh | sh
ソースからインストール:
git clone https://github.com/EtienneChollet/ontomics.git
cd ontomics
cargo build --release
2. ハーネスに登録する
Claude Code:
claude mcp add -s user ontomics -- ontomics
Codex:
codex mcp add ontomics -- ontomics
OpenClaw:
openclaw mcp set ontomics '{"command":"ontomics"}'
pi-coding-agent:
pi install npm:@ontomics/ontomics
チームと共有する — リポジトリのルートに .mcp.json を配置します:
{
"mcpServers": {
"ontomics": {
"command": "npx",
"args": ["-y", "@ontomics/ontomics", "--repo", "."]
}
}
}
対応言語
Python、TypeScript、JavaScript、Rust。ファイル拡張子から自動検出します。
ツール
概念と用語
| ツール | 機能 |
|---|---|
query_concept | 用語のすべてのバリエーション、関連する概念、出現箇所を検索します |
locate_concept | 概念に対応する主要なシグネチャ、クラス、ファイルを検索します |
describe_symbol | 関数またはクラスのシグネチャ、docstring、関連性を取得します |
trace_concept | 呼び出しチェーンをたどり、コードベース内で概念がどのように流れるかを追跡します |
list_concepts | 出現頻度の高いドメイン概念を一覧表示します |
list_conventions | 検出された命名パターン(接頭辞、接尾辞、変換)をすべて一覧表示します |
list_entities | 概念、役割、種類で絞り込んだコードエンティティ(クラス、関数)を一覧表示します |
check_naming | 識別子がプロジェクトの規約に沿っているか確認し、標準的な形式を提案します |
suggest_name | プロジェクトの用語に合った識別子名を生成します |
vocabulary_health | 規約の適用範囲、命名の一貫性、クラスターのまとまりを測定します |
ontology_diff | git の参照以降に追加、変更、削除されたドメイン概念を表示します |
export_domain_pack | 他のリポジトリで使用できるよう、ドメイン知識をポータブルな YAML としてエクスポートします |
振る舞いの類似性
| ツール | 機能 |
|---|---|
find_similar_logic | 振る舞いが類似した実装の関数を検索し、埋め込みの類似度順に表示します |
describe_logic | 関数の振る舞いの説明、本文、ロジッククラスターへの所属情報を取得します |
compact_context | LLM での利用に最適化した、シンボルの階層化コンテキスト(概念+ロジック)を組み立てます |
コードベースの構造
| ツール | 機能 |
|---|---|
describe_file | ファイル内のエンティティ、概念、関連性の概要を表示します |
concept_map | 各ドメイン概念を含むモジュールを表示します |
type_flows | コードベース内の主要な型とデータの流れを表示します |
trace_type | 特定の型がファイルや呼び出し箇所をまたいでどのように伝播するかを追跡します |
リソース
| リソース | 機能 |
|---|---|
ontomics://briefing | セッション概要:主な規約、略語、重要な概念、対照的なペア、用語に関する警告。ontomics briefing CLI からも利用できます。 |
仕組み
ontomics はすべての処理をお使いのマシン上で実行する多段階パイプラインです。API キーは必要ありません:
- 解析 — tree-sitter がソースファイルからすべての識別子、シグネチャ、呼び出し箇所を抽出します
- 分析 — TF-IDF スコアリングにより、ドメイン固有の概念を特定し、命名規約を検出します
- 埋め込み(概念) — BGE-small(384-dim)が意味的類似性に基づいて関連する概念をクラスター化します
- 埋め込み(ロジック) — CodeRankEmbed(768-dim)が関数本体の生テキストを埋め込み、振る舞いの類似性に基づいてクラスター化します
- 中心性 — PageRank が構造上の重要度に基づいてエンティティをスコアリングします
どちらの埋め込みモデルも初回実行時に一度だけダウンロードされ、ローカルにキャッシュされます。インデックスは <repo>/.ontomics/index.db に保存されます。以降の起動時にはキャッシュから読み込まれ、ファイルの変更が監視されます。
設定はリポジトリのルートにある .ontomics/config.toml で行います。すべてのフィールドには適切な既定値が設定されています。設計仕様の全容については SPEC.md を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。