Kodit: A Code Indexing MCP Server について
Kodit は、Git リポジトリのインデックスを作成し、MCP と REST API を通じて検索を提供するコード・ドキュメント インテリジェンス サーバーです。自社プロジェクトの実例を必要とするコーディングアシスタント向けで、コードと文書の両方を扱います。
主な機能
- 01BM25 キーワード、セマンティック、正規表現、ビジュアル検索
- 02検索方式ごとに個別の MCP ツールとして公開
- 03検索とリポジトリ管理のための REST API
- 04任意で LLM による補足ドキュメントを生成
- 05PDF、Office 文書、画像のビジュアル検索
- 06内蔵の埋め込みモデルと SQLite で動作
活用シーン
- 01コーディングアシスタントに自社リポジトリの実例を提供
- 02コードと PDF・表計算ファイルを横断して検索
- 03共有サーバーで複数のリポジトリを一括インデックス化
MCP 対応
Kodit は MCP サーバーとして /mcp エンドポイントで検索、ファイル読み取り、ドキュメント関連のツールを公開し、Claude Code、Cursor、Cline などのクライアントから利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm registry.helix.ml/helix/kodit:latestローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
registry.helix.ml/helix/kodit:lateststdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Kodit
Git リポジトリをインデックス化し、MCP および REST API を通じて検索を提供する、コードとドキュメントのインテリジェンスサーバーです。
AI コーディングアシスタントは、コードベースの実例にアクセスできると、より適切に動作します。Kodit はリポジトリをインデックス化し、ソースファイルを検索可能なスニペットに分割して、MCP 対応のあらゆるアシスタントに提供します。アシスタントが新しいコードを書く必要があるときは、まず Kodit に問い合わせ、あなた自身のプロジェクトから取得した、関連性の高い最新の例を受け取ります。
Kodit はドキュメントにも対応しています。PDF、Word ファイル、PowerPoint の資料、スプレッドシートをラスタライズしてインデックス化するため、コードとドキュメントの両方を一か所で検索できます。
できること:
- 複数の検索方法:BM25 キーワード検索、セマンティックベクトル検索、正規表現 grep、ビジュアルドキュメント検索を含み、それぞれが個別の MCP ツールとして公開されるため、アシスタントはクエリごとに適切な方法を選択できます
- MCP サーバー:Claude Code、Cursor、Cline、Kilo Code など、MCP 対応のあらゆるアシスタントで動作します
- REST API:検索、リポジトリ、エンリッチメント、インデックス化のステータスにプログラムからアクセスできます
- AI エンリッチメント(オプション):アーキテクチャドキュメント、API ドキュメント、データベーススキーマ検出、クックブックの例、コミットの要約などを LLM で生成できます
- ドキュメントインテリジェンス:マルチモーダル埋め込みを使用して、PDF のページ、Office ドキュメント、画像をビジュアル検索できます
- 基本動作に外部依存関係は不要:組み込みの埋め込みモデルと SQLite ストレージを使用します
クイックスタート
Docker(推奨)
docker run -p 8080:8080 registry.helix.ml/helix/kodit:latest
これにより、SQLite ストレージと組み込みの埋め込みモデルを使用して Kodit が起動します。API キーは必要ありません。
ビルド済みバイナリ
リリースページからバイナリをダウンロードして、次のように実行します。
chmod +x kodit
./kodit serve
動作確認
http://localhost:8080/docsでインタラクティブな API ドキュメントを開きます。
または、小さなリポジトリをインデックス化して検索を実行します。
# Index a repository
curl http://localhost:8080/api/v1/repositories \
-X POST -H "Content-Type: application/json" \
-d '{
"data": {
"type": "repository",
"attributes": {
"remote_uri": "https://gist.github.com/philwinder/7aa38185e20433c04c533f2b28f4e217.git"
}
}
}'
# Check indexing progress
curl http://localhost:8080/api/v1/repositories/1/status
# Search (once indexing is complete)
curl http://localhost:8080/api/v1/search \
-X POST -H "Content-Type: application/json" \
-d '{
"data": {
"type": "search",
"attributes": {
"keywords": ["orders"],
"text": "code to get all orders"
}
}
}'
AI アシスタントへの接続
Kodit は /mcp に MCP エンドポイントを公開しています。アシスタントを接続して、コード検索ツールとして Kodit を使い始めましょう。
Claude Code
claude mcp add --transport http kodit http://localhost:8080/mcp
Cursor
~/.cursor/mcp.jsonに追加します。
{
"mcpServers": {
"kodit": {
"url": "http://localhost:8080/mcp"
}
}
}
Cline
MCP サーバー設定(Remote Servers タブ)に追加します。
{
"mcpServers": {
"kodit": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"type": "streamableHttp",
"url": "http://localhost:8080/mcp"
}
}
}
Kilo Code
MCP 設定(Edit Project/Global MCP)に追加します。
{
"mcpServers": {
"kodit": {
"type": "streamable-http",
"url": "http://localhost:8080/mcp",
"alwaysAllow": [],
"disabled": false
}
}
}
リモートで実行している場合は、http://localhost:8080をサーバーの URL に置き換えてください。
アシスタントに Kodit を使わせる
アシスタントによっては、Kodit のツールを自動的に呼び出さないことがあります。使用を徹底するには、プロジェクトのルールまたはシステムプロンプトに次の内容を追加してください。
For every request that involves writing or modifying code, the assistant's first
action must be to call the kodit search MCP tools. Only produce or edit code after
the tool call returns results.
Cursor では、これをalwaysApply: trueのフロントマターを付けて.cursor/rules/kodit.mdcとして保存してください。
MCP ツール
Kodit は、接続された AI アシスタントに以下のツールを公開します。
| ツール | 説明 |
|---|---|
kodit_repositories | インデックス済みのすべてのリポジトリを一覧表示します |
kodit_semantic_search | コード全体を対象に意味的類似性で検索します |
kodit_keyword_search | BM25 キーワード検索を行います |
kodit_visual_search | ドキュメントのページ画像を検索します |
kodit_grep | 正規表現パターンに一致するものを検索します |
kodit_ls | glob パターンでファイルを一覧表示します |
kodit_read_resource | URI でファイルの内容を読み取ります |
kodit_architecture_docs | リポジトリのアーキテクチャドキュメント |
kodit_api_docs | 公開 API ドキュメント |
kodit_database_schema | データベーススキーマのドキュメント |
kodit_cookbook | 使用例とパターン |
kodit_commit_description | コミットの説明 |
kodit_wiki | Wiki の目次 |
kodit_wiki_page | 特定の Wiki ページを読み取ります |
kodit_version | サーバーのバージョン |
エンリッチメントツール(architecture_docs、api_docs、database_schema、cookbook、wiki、commit_description)を使用するには、LLM プロバイダーの設定が必要です。「Configuration Reference」の「Enrichment Providers」を参照してください。
Go ライブラリ
Kodit は Go ライブラリとして直接組み込めます。Helix はこの方法で Kodit を自社プラットフォームに統合しています。
import "github.com/helixml/kodit"
client, err := kodit.New(
kodit.WithSQLite(".kodit/data.db"),
)
if err != nil {
log.Fatal(err)
}
defer client.Close()
// Index a repository
_, _, err = client.Repositories.Add(ctx, &service.RepositoryAddParams{
URL: "https://github.com/kubernetes/kubernetes",
})
// Search
results, err := client.Search.Query(ctx, "create a deployment",
service.WithLimit(10),
)
for _, result := range results.Enrichments() {
fmt.Println(result.Subtype(), result.Content())
}
ライブラリのオプション
| オプション | 説明 |
|---|---|
WithSQLite(path) | ストレージに SQLite を使用します |
WithPostgresVectorchord(dsn) | VectorChord を使用して PostgreSQL を使用します |
WithOpenAI(apiKey) | 埋め込みとテキスト生成に OpenAI を使用します |
WithAnthropic(apiKey) | テキスト生成に Anthropic Claude を使用します(別途、埋め込みプロバイダーが必要です) |
WithTextProvider(p) | カスタムのテキスト生成プロバイダー |
WithEmbeddingProvider(p) | カスタムの埋め込みプロバイダー |
WithRAGPipeline() | LLM によるエンリッチメントを省略し、インデックス作成と検索のみを行います |
WithFullPipeline() | すべてのエンリッチメントを必須にします(テキストプロバイダーがない場合はエラーになります) |
WithDataDir(dir) | データディレクトリ(デフォルト:~/.kodit) |
WithCloneDir(dir) | リポジトリのクローン先ディレクトリ |
WithAPIKeys(keys...) | HTTP 認証用の API キー |
WithWorkerCount(n) | バックグラウンドワーカーの数(デフォルト:1) |
WithPeriodicSyncConfig(cfg) | リポジトリの自動同期設定 |
検索オプション
| オプション | 説明 |
|---|---|
WithSemanticWeight(w) | 意味検索とキーワード検索の重み(0.0~1.0) |
WithLimit(n) | 結果の最大数 |
WithOffset(n) | ページネーションのオフセット |
WithLanguages(langs...) | プログラミング言語で絞り込みます |
WithRepositories(ids...) | リポジトリ ID で絞り込みます |
WithMinScore(score) | 最小スコアのしきい値 |
WithEnrichmentTypes(types...) | 特定のエンリッチメントタイプに結果を絞り込みます |
WithSnippets(include) | 結果にコードスニペットを含めます |
WithDocuments(include) | 結果にエンリッチメントドキュメントを含めます |
Go HTTP クライアント
Go からリモートの Kodit サーバーを呼び出すための、生成済み HTTP クライアントを利用できます。
go get github.com/helixml/kodit/clients/go
import koditclient "github.com/helixml/kodit/clients/go"
client, err := koditclient.NewClient("https://kodit.example.com")
// List repositories
resp, err := client.GetRepositories(ctx, nil)
// Search
text := "create a deployment"
resp, err := client.PostSearch(ctx, koditclient.PostSearchJSONRequestBody{
Data: &koditclient.DtoSearchData{
Attributes: &koditclient.DtoSearchAttributes{
Text: &text,
},
},
})
型は OpenAPI 仕様から自動生成されます。すべてのエンドポイントの一覧については、/docs のインタラクティブ API ドキュメントを参照してください。
本番環境へのデプロイ
本番環境で使用する場合は、スケーラブルなベクトル検索のために PostgreSQL(VectorChord)を使用し、エンリッチメント用の専用 LLM プロバイダーとともにデプロイしてください。
Docker Compose
これを docker-compose.yaml として保存します。
services:
kodit:
image: registry.helix.ml/helix/kodit:latest
ports:
- "8080:8080"
command: ["serve"]
restart: unless-stopped
depends_on:
- vectorchord
environment:
DATA_DIR: /data
DB_URL: postgresql://postgres:mysecretpassword@vectorchord:5432/kodit
# Enrichment LLM (optional, enables AI-generated docs)
ENRICHMENT_ENDPOINT_BASE_URL: http://ollama:11434
ENRICHMENT_ENDPOINT_MODEL: ollama/qwen3:1.7b
# External embedding provider (optional, replaces built-in model)
# EMBEDDING_ENDPOINT_API_KEY: sk-proj-xxxx
# EMBEDDING_ENDPOINT_MODEL: openai/text-embedding-3-small
LOG_LEVEL: INFO
API_KEYS: ${KODIT_API_KEYS:-}
volumes:
- kodit-data:/data
vectorchord:
image: tensorchord/vchord-suite:pg17-20250601
environment:
POSTGRES_DB: kodit
POSTGRES_PASSWORD: mysecretpassword
volumes:
- vectorchord-data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
kodit-data:
vectorchord-data:
Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: vectorchord
spec:
replicas: 1
selector:
matchLabels:
app: vectorchord
template:
metadata:
labels:
app: vectorchord
spec:
containers:
- name: vectorchord
image: tensorchord/vchord-suite:pg17-20250601
env:
- name: POSTGRES_DB
value: kodit
- name: POSTGRES_PASSWORD
value: mysecretpassword
ports:
- containerPort: 5432
---
apiVersion: v1
kind: Service
metadata:
name: vectorchord
spec:
selector:
app: vectorchord
ports:
- port: 5432
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kodit
spec:
replicas: 1
selector:
matchLabels:
app: kodit
template:
metadata:
labels:
app: kodit
spec:
containers:
- name: kodit
image: registry.helix.ml/helix/kodit:latest # pin to a specific version
args: ["serve"]
env: [] # see Configuration Reference for environment variables
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: kodit
spec:
type: LoadBalancer
selector:
app: kodit
ports:
- port: 8080
認証
API_KEYS 環境変数に、カンマ区切りのキー一覧を設定します。書き込みエンドポイント(リポジトリの作成、同期の開始)では、Authorization: Bearer <key> ヘッダーに有効なキーが必要です。検索エンドポイントはデフォルトで公開されています。
設定リファレンス
設定は環境変数で行います。.env ファイルも使用できます。
kodit serve --env-file .env
サーバー
| 変数 | デフォルト | 説明 |
|---|---|---|
HOST | 0.0.0.0 | リッスンアドレス |
PORT | 8080 | リッスンポート |
DATA_DIR | ~/.kodit | モデル、クローン、データベース用のデータディレクトリ |
DB_URL | (empty) | PostgreSQL 接続文字列(空の場合は SQLite を使用) |
LOG_LEVEL | INFO | ログの詳細度:DEBUG、INFO、WARN、ERROR |
LOG_FORMAT | pretty | ログ形式:pretty または json |
API_KEYS | (empty) | 書き込みエンドポイント用の、カンマ区切りの API キー |
WORKER_COUNT | 1 | バックグラウンドワーカーの数 |
SEARCH_LIMIT | 10 | デフォルトの検索結果数の上限 |
DISABLE_TELEMETRY | false | 匿名の使用状況テレメトリーを無効化します |
HTTP_CACHE_DIR | (empty) | HTTP POST レスポンスをディスクにキャッシュするディレクトリ。開発中に API が繰り返し呼び出されるのを防ぎます |
REPORTING_LOG_TIME_INTERVAL | 5 | 進捗を報告する間隔(秒) |
埋め込みプロバイダー
これらは外部の埋め込みモデルを設定します。設定されていない場合、Kodit は組み込みモデルを使用します。
| 変数 | デフォルト | 説明 |
|---|---|---|
EMBEDDING_ENDPOINT_BASE_URL | (empty) | 埋め込みサービスのベース URL |
EMBEDDING_ENDPOINT_MODEL | (empty) | モデル識別子 |
EMBEDDING_ENDPOINT_API_KEY | (empty) | API キー |
EMBEDDING_ENDPOINT_MAX_TOKENS | 0 | リクエストあたりの最大トークン数(0 = プロバイダーのデフォルト) |
EMBEDDING_ENDPOINT_MAX_BATCH_CHARS | 16000 | 1 回の埋め込みバッチに含める文字数の合計上限 |
EMBEDDING_ENDPOINT_MAX_BATCH_SIZE | 1 | バッチあたりの最大項目数 |
EMBEDDING_ENDPOINT_TIMEOUT | 60 | リクエストのタイムアウト時間(秒) |
EMBEDDING_ENDPOINT_NUM_PARALLEL_TASKS | 1 | 同時に実行する埋め込みリクエスト数 |
EMBEDDING_ENDPOINT_EXTRA_PARAMS | (empty) | 埋め込みプロバイダー用の追加パラメーター(JSON 形式) |
EMBEDDING_ENDPOINT_QUERY_INSTRUCTION | (empty) | 非対称検索用にクエリの先頭に付加する指示 |
EMBEDDING_ENDPOINT_DOCUMENT_INSTRUCTION | (empty) | 非対称検索用にドキュメントの先頭に付加する指示 |
EMBEDDING_ENDPOINT_SOCKET_PATH | (empty) | ローカルプロバイダー用の Unix ソケットパス(BASE_URL の代替) |
EMBEDDING_ENDPOINT_MAX_RETRIES | 5 | リクエスト失敗時の最大再試行回数 |
EMBEDDING_ENDPOINT_INITIAL_DELAY | 2.0 | 再試行までの初期待機時間(秒) |
EMBEDDING_ENDPOINT_BACKOFF_FACTOR | 2.0 | 再試行のバックオフ倍率 |
ビジョン埋め込みプロバイダー
画像およびテキストのビジョン埋め込みを行うリモートサービスを設定します。設定されていない場合、Kodit は組み込みの SigLIP2 モデルを使用します。
| 変数 | デフォルト | 説明 |
|---|---|---|
VISION_EMBEDDING_ENDPOINT_BASE_URL | (empty) | ビジョン埋め込みサービスのベース URL |
VISION_EMBEDDING_ENDPOINT_MODEL | (empty) | モデル識別子 |
VISION_EMBEDDING_ENDPOINT_API_KEY | (empty) | API キー |
VISION_EMBEDDING_ENDPOINT_MAX_TOKENS | 0 | リクエストあたりの最大トークン数(0 = プロバイダーのデフォルト) |
VISION_EMBEDDING_ENDPOINT_MAX_BATCH_CHARS | 16000 | 埋め込みバッチあたりの最大合計文字数 |
VISION_EMBEDDING_ENDPOINT_MAX_BATCH_SIZE | 1 | バッチあたりの最大項目数 |
VISION_EMBEDDING_ENDPOINT_TIMEOUT | 60 | リクエストのタイムアウト(秒) |
VISION_EMBEDDING_ENDPOINT_NUM_PARALLEL_TASKS | 1 | 同時に実行するビジョン埋め込みリクエスト数 |
VISION_EMBEDDING_ENDPOINT_EXTRA_PARAMS | (empty) | ビジョン埋め込みプロバイダー用の JSON エンコードされた追加パラメーター |
VISION_EMBEDDING_ENDPOINT_QUERY_INSTRUCTION | (empty) | 非対称検索のためにクエリの先頭に付加する指示 |
VISION_EMBEDDING_ENDPOINT_DOCUMENT_INSTRUCTION | (empty) | 非対称検索のためにドキュメントの先頭に付加する指示 |
VISION_EMBEDDING_ENDPOINT_SOCKET_PATH | (empty) | ローカルプロバイダー用の Unix ソケットパス(BASE_URL の代替) |
VISION_EMBEDDING_ENDPOINT_MAX_RETRIES | 5 | リクエスト失敗時の最大再試行回数 |
VISION_EMBEDDING_ENDPOINT_INITIAL_DELAY | 2.0 | 初回再試行までの遅延時間(秒) |
VISION_EMBEDDING_ENDPOINT_BACKOFF_FACTOR | 2.0 | 再試行のバックオフ倍率 |
エンリッチメントプロバイダー
アーキテクチャドキュメント、API ドキュメント、データベーススキーマ、クックブック、コミットの要約、Wiki ページを生成するための LLM を設定します。設定しない場合、Kodit はコードのインデックス作成と検索を行いますが、AI ドキュメントは生成しません。
| 変数 | デフォルト | 説明 |
|---|---|---|
ENRICHMENT_ENDPOINT_BASE_URL | (empty) | LLM サービスのベース URL |
ENRICHMENT_ENDPOINT_MODEL | (empty) | モデル識別子 |
ENRICHMENT_ENDPOINT_API_KEY | (empty) | API キー |
ENRICHMENT_ENDPOINT_NUM_PARALLEL_TASKS | 1 | 同時に実行するエンリッチメントリクエスト数 |
ENRICHMENT_ENDPOINT_TIMEOUT | 60 | リクエストのタイムアウト(秒) |
ENRICHMENT_ENDPOINT_EXTRA_PARAMS | (empty) | LLM 用の JSON エンコードされた追加パラメーター |
ENRICHMENT_ENDPOINT_MAX_TOKENS | 0 | レスポンスあたりの最大トークン数(0 = プロバイダーのデフォルト) |
ENRICHMENT_ENDPOINT_SOCKET_PATH | (empty) | ローカルプロバイダー用の Unix ソケットパス(BASE_URL の代替) |
ENRICHMENT_ENDPOINT_MAX_RETRIES | 5 | リクエスト失敗時の最大再試行回数 |
ENRICHMENT_ENDPOINT_INITIAL_DELAY | 2.0 | 初回再試行までの遅延時間(秒) |
ENRICHMENT_ENDPOINT_BACKOFF_FACTOR | 2.0 | 再試行のバックオフ倍率 |
ENRICHMENT_ENDPOINT_MAX_BATCH_CHARS | 16000 | バッチあたりの最大合計文字数 |
ENRICHMENT_ENDPOINT_MAX_BATCH_SIZE | 1 | バッチあたりの最大項目数 |
ENRICHMENT_ENDPOINT_QUERY_INSTRUCTION | (empty) | 非対称検索のためにクエリの先頭に付加する指示 |
ENRICHMENT_ENDPOINT_DOCUMENT_INSTRUCTION | (empty) | 非対称検索のためにドキュメントの先頭に付加する指示 |
各エンリッチメントで LLM プロバイダーへの往復通信が必要になるため、インデックス作成で最も時間がかかるのは通常エンリッチメントです。NUM_PARALLEL_TASKS を増やすと処理を高速化できますが、プロバイダーのレート制限を守ってください。低い値から始め、時間をかけて増やしてください。
プロバイダーの例:
# OpenAI
ENRICHMENT_ENDPOINT_BASE_URL=https://api.openai.com/v1
ENRICHMENT_ENDPOINT_MODEL=gpt-4o-mini
ENRICHMENT_ENDPOINT_API_KEY=sk-proj-xxxx
# Ollama (local)
ENRICHMENT_ENDPOINT_BASE_URL=http://localhost:11434
ENRICHMENT_ENDPOINT_MODEL=ollama/qwen3:1.7b
# Helix (private cloud)
ENRICHMENT_ENDPOINT_BASE_URL=https://app.helix.ml/v1
ENRICHMENT_ENDPOINT_MODEL=Qwen/Qwen3-8B
ENRICHMENT_ENDPOINT_API_KEY=your-helix-key
定期同期
| 変数 | デフォルト | 説明 |
|---|---|---|
PERIODIC_SYNC_ENABLED | true | 一定間隔でリポジトリを自動同期する |
PERIODIC_SYNC_INTERVAL_SECONDS | 1800 | 同期間隔(デフォルト:30 分) |
PERIODIC_SYNC_RETRY_ATTEMPTS | 3 | 同期失敗時の再試行回数 |
チャンク分割
| 変数 | デフォルト | 説明 |
|---|---|---|
CHUNK_SIZE | 1500 | 1 チャンクあたりの文字数 |
CHUNK_OVERLAP | 200 | 隣接するチャンク間の重複文字数 |
CHUNK_MIN_SIZE | 50 | チャンクの最小サイズ |
REST API
API の詳細なドキュメントは、Kodit の実行中のインスタンスで /docs からインタラクティブに確認できます。OpenAPI 3.0 仕様は /docs/openapi.json で利用できます。
主なエンドポイント:
| メソッド | パス | 説明 |
|---|---|---|
POST | /api/v1/repositories | インデックス作成するリポジトリを追加します |
GET | /api/v1/repositories | インデックス作成済みのリポジトリを一覧表示します |
GET | /api/v1/repositories/{id}/status | インデックス作成の進捗を確認します |
POST | /api/v1/repositories/{id}/sync | 同期を開始します |
DELETE | /api/v1/repositories/{id} | リポジトリを削除します |
POST | /api/v1/search | キーワード検索とセマンティック検索を組み合わせて実行します |
GET | /api/v1/search/semantic | セマンティック検索のみを実行します |
GET | /api/v1/search/keyword | キーワード検索のみを実行します |
GET | /api/v1/search/visual | ドキュメントページを対象にビジュアル検索を実行します |
GET | /api/v1/search/grep | 正規表現パターンで検索します |
GET | /api/v1/search/ls | glob パターンでファイルを一覧表示します |
API_KEYS が設定されている場合、すべての書き込みエンドポイントで Authorization: Bearer <key> ヘッダーが必要です。
インデックス作成の仕組み
リポジトリを追加すると、Kodit は次のパイプラインを実行します。
- Git リポジトリをローカルストレージにクローンします
- コミット、ブランチ、タグをスキャンしてメタデータを抽出します
- ソースファイルを重複するテキストチャンクに分割してスニペットを抽出します
- BM25(キーワード)とベクトル埋め込み(セマンティック)を使用して検索インデックスを構築します
- LLM プロバイダーが設定されている場合、拡充情報を生成します(アーキテクチャドキュメント、API ドキュメント、データベーススキーマ、クックブックの例、コミットの要約、Wiki ページ)
Kodit は同期の間に変更されたファイルを追跡し、変更されたコンテンツのみを再処理します。リポジトリは設定可能な間隔(デフォルト:30 分ごと)で自動的に同期されます。
対応ソース
Kodit は、HTTPS、SSH、または Git プロトコル経由でアクセスできるあらゆる Git リポジトリをインデックス化します。GitHub、GitLab、Bitbucket、Azure DevOps、セルフホストサーバーが含まれます。
プライベートリポジトリ
プライベートリポジトリは、個人アクセストークンまたは SSH キーを使って利用できます。
# HTTPS with token
https://username:[email protected]/username/repo.git
# SSH (ensure your SSH key is configured)
[email protected]:username/repo.git
プライバシー
Kodit は .gitignore ファイルと .noindex ファイルに従います。これらのパターンに一致するファイルはインデックス作成から除外されます。
ストレージバックエンド
SQLite(デフォルト)
設定は不要です。Kodit はデータディレクトリに、キーワード検索用の FTS5 とプロセス内ベクトルストレージを備えた SQLite データベースを作成します。単一ユーザーや小規模チームでのデプロイに適しています。
VectorChord を使用した PostgreSQL
大規模なデプロイでは、VectorChord 拡張機能を備えた PostgreSQL を使用してください。これにより、スケーラブルなベクトル検索と同時アクセスが可能になります。DB_URL 環境変数に接続文字列を設定してください。
推奨される Docker イメージは tensorchord/vchord-suite:pg17-20250601 です。PostgreSQL 17 に VectorChord、vchord_bm25、pg_tokenizer が同梱されています。
ソースからのビルド
git clone https://github.com/helixml/kodit.git
cd kodit
make tools # Install development tools
make download-model # Download the built-in embedding model
make build # Build the binary
./bin/kodit version
./bin/kodit serve
テストを実行します。
make test # All tests
make test PKG=./internal/foo/... # Specific package
make check # Format, vet, lint, and test
トラブルシューティング
再起動後に MCP 接続エラーが発生する場合: Kodit サーバーの再起動後に No valid session ID provided が表示された場合は、アシスタント内で MCP クライアントを再読み込みしてください。MCP セッションはサーバーの再起動後も維持されません。
検索結果が見つからない場合: GET /api/v1/repositories/{id}/status を呼び出して、インデックス作成が完了していることを確認してください。ステータスにエラーが表示される場合は、LOG_LEVEL=DEBUG を指定してサーバーログを確認してください。
拡充情報が生成されない場合: 拡充情報の生成には LLM プロバイダーが必要です。ENRICHMENT_ENDPOINT_BASE_URL と ENRICHMENT_ENDPOINT_MODEL が設定されていることを確認してください。これらが設定されていない場合、Kodit はコードのインデックス作成と検索を行いますが、AI ドキュメントは生成しません。
テレメトリ
Kodit は開発の指針とするため、限定的な匿名テレメトリ(使用状況のメタデータのみで、ユーザーデータは含まれません)を収集します。次の方法で無効にできます。
DISABLE_TELEMETRY=true
商用サポート
Helix は、管理 UI、リポジトリの閲覧、チームでのコラボレーション、ホスト型インフラストラクチャなどの追加機能を備えた、Kodit ベースのマネージドプラットフォームを提供しています。商用サポートまたはエンタープライズ向けの統合については、[email protected] までお問い合わせください。
コントリビューション
ガイドラインについては、CONTRIBUTING.md をご覧ください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
