Skip to main content
Glama
cvandesande

project-code-intelligence

by cvandesande

Project Code Intelligence

コーディングエージェントのためのリポジトリインテリジェンスと変更安全性のエビデンス。

Project Code Intelligence (PCI) は Git リポジトリをインデックス化し、調査、リファクタリング、保守、セキュリティ作業のための構造化されたエビデンスをコーディングエージェントに提供します。エージェントは、概念や識別子で検索し、候補となる関係を調査し、変更の影響範囲 (blast radius) を見積もり、繰り返される実装パターンを見つけ、コードを編集する前に静的解析の結果を照会できます。

PCI は自律的なレビューアではなく、そのグラフはコンパイラ級のコールグラフでもありません。探索範囲を絞り込み、エビデンスを提供するものであり、重要な結論はエージェントがソース上で検証します。

役立つ用途

調査とオリエンテーション

  • 正確な識別子、ファイル名、設定キー、既知の文字列を検索します。

  • 関連する名前が不明な場合は、動作で検索します。

  • リポジトリの言語、ファイルの役割、スナップショット、パーサーのカバレッジ、インデックスの鮮度を確認します。

  • パス、行範囲、メタデータ、ソーススニペットを含む上限付きレコードを取得します。

  • 名前付きコレクションとリポジトリフィルターを使用して、複数のリポジトリにわたって作業します。

より安全な変更

  • 候補となる呼び出し元、呼び出し先、参照、テスト、モジュールレベルの配線を見つけます。

  • シンボルを削除、名前変更、または変更する前に、影響範囲のエビデンスを確認します。

  • エントリーポイント、孤立コード、テストカバレッジのシグナルを明らかにします。

  • 定義が追加または削除されたときに、サポートされているコーディングエージェントに近傍のエビデンスを注入します。

保守と冗長性

  • 呼び出し形状のモチーフを繰り返す関数グループを見つけます。

  • 冗長性の候補を、類似度、推定される抽象化コスト、推定される正味の価値でランク付けします。

  • 古いインデックス、重複する名前、冗長性の候補、静的解析の結果についてリポジトリ監査を実行します。

セキュリティと静的解析

  • ソースレコードとともに SARIF レポートを取り込みます。

  • 正規化された検出結果を、ツール、ルール、レベル、ベースライン状態、またはパスで検索します。

  • エージェントに生の SARIF アーティファクトを解析させることなく、診断情報、コードフロー、実行メタデータを取得します。

Related MCP server: Graft

仕組み

pci index はリポジトリのファイルを上限付きレコードに解析し、メタデータと候補となる関係を抽出し、スナップショットを Postgres/pgvector に保存します。セマンティック埋め込みはオプションです。--no-embed を使用しても、字句検索とほとんどの構造的エビデンスは引き続き利用できます。

pci mcp は、ローカルの stdio MCP サーバーを通じてインデックスを公開します。コーディングエージェントは、そのフィルター指向のツールを使用して関連性の高いコードを発見し、行動する前にライブソースを読んで検証します。

デフォルトのローカルアーキテクチャは次のとおりです。

  • Postgres/pgvector: Docker または Podman Compose。

  • Linux 埋め込みサービス: ユーザー systemd で管理される Podman Quadlet ユニット。

  • Apple Silicon 埋め込み: ネイティブの MLX サービス。

  • エージェント統合: オプションの編集エビデンスフックを備えた stdio MCP サーバー。

意図的なトレードオフがある場合、リモートの Postgres および OpenAI 互換の埋め込みエンドポイントがサポートされます。

クイックスタート

チェックアウトから CLI をインストールします:

uv tool install /path/to/project-code-intelligence
export PATH="$HOME/.local/bin:$PATH"

バンドルされたデータベースと、利用可能な最良のローカル埋め込みバックエンドを起動します:

pci doctor --start
pci doctor

Git リポジトリをインデックス化します:

cd /path/to/repo
pci index .

コーディングエージェント用の MCP 設定をインストールします:

pci mcp install --target codex

サポートされているターゲットには、claude、codex、opencode、pi、vscode、copilot、cline、zed が含まれます。クライアント固有のセットアップ、プロジェクトのスコープ設定、資格情報の処理については、docs/MCP_SETUP.md を参照してください。

埋め込みなしの字句検索の場合:

pci doctor --start-db
pci index --no-embed .

コアエージェントツール

ツール

目的

code_intel_status

インデックスの鮮度、スコープ、レコード数、クエリ機能。

list_code_intel_files

言語、役割、パス、または生成/テストステータスでフィルタリングされたファイルインベントリ。

search_code_intel_text

シンボル、ファイル名、キー、既知の文字列の正確なインデックス検索。

search_code_intel_semantic

識別子が不明な場合の概念検索。

get_code_intel_record

完全なインデックス化されたレコードとメタデータを取得します。

related_code_intel

候補となる呼び出し元、呼び出し先、参照、関連シンボルのエビデンス。

blast_radius

提案された変更に対する呼び出し元、テスト、配線、エントリーポイントシグナル、セマンティック近傍。

find_redundancy

リファクタリング価値の可能性でランク付けされた繰り返しの呼び出し形状グループ。

search_static_findings

正規化された SARIF 検出結果をフィルタリングします。

get_static_finding

診断情報、コードフロー、静的解析の実行詳細を取得します。

ツリー全体のエビデンスレポートについては、pci audit を実行してください。

エビデンスであって、判定ではない

PCI は、より強力なインデックス化された事実と、近似的かつヒューリスティックなエビデンスを意図的に区別しています。

  • 候補となる関係エッジは、型チェックされたコールグラフの事実ではありません。

  • 影響範囲は、変更が安全であることを証明できません。

  • 冗長性スコアは、2つの関数が抽象化を共有すべきかどうかを決定できません。

  • 静的解析の検出結果には、元のアナライザーの限界が引き継がれます。

  • 未コミットまたは新しくコミットされた変更の後、インデックスが古くなる可能性があります。

  • セマンティック検索は、関連するコードを見逃したり、もっともらしい近傍を返したりする可能性があります。

重要な呼び出し元と検出結果は、ライブソースで検証してください。既知のパスや小さな範囲の質問には、直接のファイル読み取りを使用してください。PCI は、場所、名前、または影響がまだ不明な場合に最も役立ちます。

インストール

Python CLI

uv を使用して現在のユーザーにインストールします:

uv tool install /path/to/project-code-intelligence

編集可能な開発インストールの場合:

cd /path/to/project-code-intelligence
python -m venv .venv
. .venv/bin/activate
python -m pip install -e .

Nix

NixOS または flakes が有効な別の Linux ホスト上で:

nix build
nix run . -- doctor --skip-db --embedding skip
nix develop

ユーザープロファイルに永続的にインストールします:

nix profile install .#project-code-intelligence

Nix クロージャには、CLI、MCP サーバー、Python 依存関係、バンドルされた Compose および Quadlet アセットが含まれます。重量級の Linux 埋め込みランタイムは、ホストネイティブの Nix 依存関係になるのではなく、Podman コンテナ内に残ります。

ローカルデータベース

バンドルされた Postgres/pgvector データベースのみを起動します:

pci doctor --start-db

インストールされた Compose ファイルはユーザーキャッシュに具体化されます。代わりにカスタムコピーを使用するには:

export PCI_COMPOSE_FILE=/path/to/docker-compose.yml
pci doctor --start-db

ローカル埋め込みサービス

CLI にはサービステンプレートが含まれています。別個の PCI 埋め込みパッケージはありません。Linux では、Podman をインストールし、systemctl --user が機能することを確認してから、次を実行します:

pci doctor
pci doctor --start-embedding

PCI は利用可能なハードウェアを検出し、選択されたバックエンドのみを ~/.config/containers/systemd/ の下に具体化し、ユーザー systemd をリロードして起動します。他の埋め込みバックエンド用の古い PCI ユニットは停止され、削除されます。イメージとデフォルトモデルは初回使用時にダウンロードされます。

必要に応じてバックエンドを明示的に選択します:

# AMD GPU
pci doctor --start-embedding --embedding-backend rocm

# NVIDIA GPU
pci doctor --start-embedding --embedding-backend cuda

# Portable CPU fallback
pci doctor --start-embedding --embedding-backend fastembed

# AMD Ryzen AI NPU (experimental)
pci doctor --start-embedding --embedding-backend lemonade

利用可能なセレクターは、auto、fastembed、lemonade、rocm、cuda、apple です。PCI は、要求されたバックエンドの必要なハードウェアまたはランタイムが利用できない場合、そのバックエンドを拒否します。apple は Quadlet 経由ではなくネイティブで実行されます。

データベースと明示的なバックエンドを一緒に起動するには:

pci doctor --start --embedding-backend rocm

コンテナ化されたバックエンドは、デフォルトで http://127.0.0.1:18081/v1/embeddings に OpenAI 互換のエンドポイントを公開します。このエンドポイントを共有するため、ローカルバックエンドは一度に1つだけ実行してください。

ハードウェア

バックエンド

ランタイムの注意事項

CPU

FastEmbed

ポータブルなフォールバック。Podman Quadlet。

Apple Silicon

MLX

Apple GPU を使用するネイティブプロセス。

AMD Ryzen AI NPU

Lemonade FLM

実験的。サポートされている XDNA ハードウェア、ドライバー、ファームウェアが必要。

AMD GPU

llama.cpp ROCm

/dev/kfd と /dev/dri を使用する Podman Quadlet。

NVIDIA GPU

llama.cpp CUDA

NVIDIA ドライバー、Container Toolkit、Podman CDI サポートが必要。

データベースに触れずに埋め込みサービスを停止します:

pci doctor --stop-embedding

生成されたローカルサービス、キャッシュ、バンドルされたデータベースボリュームを削除します:

pci doctor --clean

--clean は破壊的であり、データを削除する前にプロンプトを表示します。

リモート埋め込み

データベースのみを起動し、信頼できる OpenAI 互換プロバイダーを設定します:

pci doctor --start-db
export PCI_ALLOW_REMOTE_EMBEDDING=1
export PCI_EMBEDDING_ENDPOINT=https://api.openai.com/v1/embeddings
export PCI_EMBEDDING_ENDPOINT_MODEL=text-embedding-3-small
export OPENAI_API_KEY=...
pci doctor

リモートエンドポイントはソース由来のテキストを受け取ります。インデックス化されるリポジトリにとってそれが許容される場合にのみ有効にしてください。

リポジトリのインデックス化

1つのリポジトリをインデックス化します:

pci index /path/to/repo

複数のリポジトリをワークスペースとしてインデックス化します:

cd /path/to/workspace
pci index service-api web-ui shared-lib

PCI はパスからコレクション名とリポジトリ名を推測します。MCP クライアントは、絶対ファイルシステムパスではなく、これらの論理名でフィルタリングします。インデックス化は増分的です。互換性のあるスナップショットが存在する場合、変更されていないファイルは再利用されます。

インデックス化されたリポジトリパスの下にある SARIF レポートは自動的に取り込まれます。1つのリポジトリをリセットして再構築するには:

pci index --reset /path/to/repo

インデックス実行を検査するには pci status を、パーサー、埋め込み、コレクション、データベースのオプションについては pci index --help を使用してください。

MCP とエージェントフック

プロジェクトスコープの読み取り専用データベース資格情報を作成し、MCP 設定を出力します:

pci index --init-db --mcp-config codex .

再インデックス化せずに MCP 設定をインストールまたは削除します:

pci mcp install --target codex
pci mcp install --target codex --uninstall

生成されたクライアント設定にはデータベースパスワードは含まれません。資格情報は、ユーザーの PCI 設定ディレクトリの下にモード 0600 で保存されます。Pi はプロジェクトローカルの .pi/extensions/ MCP ブリッジを使用します。Cline は設定ファイルがユーザースコープであるため、--config-path が必要です。

オプションのフックは、エージェントにインデックスの使用を促し、定義を追加または削除する編集の近くにエビデンスを注入できます:

pci hook install --target codex

フックのサポートとインストールの詳細はクライアントによって異なります。フックは支援であり、強制や正当性を保証するメカニズムではありません。docs/MCP_SETUP.md と docs/SYSTEM_PROMPT.md を参照してください。

プライバシーとセキュリティ

ローカルのデフォルトでは、ソース由来のレコードと埋め込みはマシン上に保持されます。しかし、すべてのアーティファクトが公開しても安全であるとは限りません。

データベースダンプ、リストアアーティファクト、SARIF 出力、埋め込みキャッシュ、モデルファイル、ベクターインデックス、プライベートリポジトリから生成されたデータ、ローカル MCP 資格情報ファイルをコミットまたは配布しないでください。これらには、ソース由来のソーススニペット、パス、シンボル、検出結果、メタデータ、埋め込みが含まれる可能性があります。

コレクションはリポジトリを整理しますが、セキュリティ境界ではありません。リポジトリにより強力な分離が必要な場合は、別のデータベースまたはデータベースユーザーを使用してください。プロジェクトスコープの MCP 資格情報は通常のアクセスを制限しますが、ホストとデータベースのセキュリティを置き換えるものではありません。

PCI が適している場合

PCI は次の場合に役立ちます:

  • リポジトリまたはワークスペースが大規模または不慣れな場合;

  • タスクの開始時に識別子が不明な場合;

  • 生成されたファイルにより広範な読み取りが高コストまたはノイズが多い場合;

  • リファクタリングに呼び出し元、テスト、配線のエビデンスが必要な場合;

  • 保守作業に繰り返しパターンの発見が必要な場合;

  • 静的解析の検出結果をソースと関連付ける必要がある場合;

  • 複数のリポジトリを1つのインターフェースで検索する必要がある場合。

小さく馴染みのあるリポジトリ、既知のファイルと行範囲、または範囲を限定した1回の rg 検索やファイル読み取りで答えられる質問には、ほとんど価値を追加しないかもしれません。目標は標準的な開発者ツールを置き換えることではなく、その周辺の不確実な発見と変更計画のステップを改善することです。

トークンとコストの削減は有用な副次効果になり得ますが、PCI はそれを保証しません。docs/EVALUATING_VALUE.md と セッション振り返りプロンプト を使用して、インデックスが実際のセッションを改善するかどうかを測定してください。

開発

MCP サーバーは stdio を使用します。Docker Compose はローカルデータベース用であり、MCP プロセスをホストするためではありません。完全な開発ゲートを実行するには:

nix develop
make check

取り込み、データベース、または MCP の動作変更の場合は、次も実行します:

docker compose up -d pgvector
make integration-smoke

プロジェクトの規約と公開の保護策については、CONTRIBUTING.md と AGENTS.md を参照してください。

ドキュメント

ライセンス

MIT。 LICENSE を参照。

Available Tools

8 tools
code_intel_statusC

Check code intelligence snapshot, file, record, edge, and embedding state.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionNo
repoNo
snapshot_idNo
include_historicalNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries full burden. It implies a read-only operation ('Check'), but does not explicitly declare side-effect-free behavior, authentication needs, or any other behavioral traits. This is insufficient for a 4-param tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with a clear verb and list of resources. It is concise but lacks structure; could benefit from additional sentences or bullet points for clarity. Not overly verbose, but not optimally organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no output schema, and siblings that cover similar ground, the description is incomplete. It does not explain what the tool returns, how parameters interact, or how it relates to other tools. The agent would need to infer too much.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning none of the 4 parameters are described in the schema. The description does not add any parameter-level details, such as how 'collection', 'repo', 'snapshot_id', or 'include_historical' affect the result. This is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action 'Check' and lists the resources being checked (snapshot, file, record, edge, and embedding state). It distinguishes from sibling tools which focus on individual items or specific aspects, but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_code_intel_record or search_code_intel_semantic. Usage context is implied but not stated, leaving the agent without decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_code_intel_recordA

Fetch one code intelligence record by numeric ID, including display content.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It indicates a read operation ('Fetch') and adds that the result includes display content, but does not disclose other behavioral traits such as authentication requirements, rate limits, or potential side effects. For a simple fetch, this is minimally adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the verb and resource, and efficiently conveys the key details. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter, no output schema, and no annotations, the description is reasonably complete. It covers what the tool does and hints at the response content ('including display content'). Some may argue it is adequate enough to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It adds 'by numeric ID', which is already inferred from the integer type in the schema. It does not explain the meaning of the ID, valid range, or any other details beyond what the schema provides. This adds minimal value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetch', the resource 'code intelligence record', and the method 'by numeric ID', along with the additional feature 'including display content'. This distinguishes it from sibling search tools and other get tools like get_static_code_flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when the numeric ID is known, but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among the sibling tools. It gives clear context but lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_static_code_flowC

Fetch ordered SARIF/CodeQL code-flow steps for one static-analysis finding.

ParametersJSON Schema
NameRequiredDescriptionDefault
finding_idYes
flow_indexNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as whether the operation is read-only, error handling (e.g., if finding_id does not exist), or any side effects. The description only says 'Fetch' implying a read operation, but lacks further detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loading the key action and resource. However, it could include more context without becoming verbose, such as noting the optional parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema or annotations, the description leaves gaps: it does not explain the ordering of steps, the SARIF/CodeQL format, or the role of the optional flow_index. An agent might not know how to properly use flow_index or interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds minimal meaning beyond the schema. It implies finding_id identifies the finding, but does not explain flow_index or the structure of code-flow steps. The schema already defines types and requirements, so the description adds little value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches ordered SARIF/CodeQL code-flow steps for a single static-analysis finding, using a specific verb and resource. It distinguishes from siblings like get_static_finding which fetches a finding itself, and search_static_findings which searches for findings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor when not to use it or what prerequisites are needed. For example, it does not mention that finding_id likely comes from get_static_finding or search_static_findings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_static_findingC

Fetch one SARIF/static-analysis finding with rule, locations, and code-flow steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states the action and returned fields but does not disclose behavioral traits such as read-only nature, idempotency, authentication requirements, or any side effects. For a fetch tool, read-only hint would be expected but is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded with the verb 'Fetch'. However, it lacks important details about parameters and usage, which reduces its efficiency for an agent. Slightly better than average due to its brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is incomplete. It does not describe the parameter 'id', does not define what constitutes a 'finding', and does not provide any context for the return value. An agent would need additional information to correctly invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one integer parameter 'id' with no description. The schema description coverage is 0%, meaning the description adds no meaning beyond the schema's type definition. It does not explain what the 'id' represents (e.g., finding ID, expected format) or how to obtain it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action 'Fetch' and the resource 'one SARIF/static-analysis finding', and lists included fields (rule, locations, code-flow steps). This distinguishes it from siblings like 'get_static_code_flow' (which likely returns only code flow) and 'search_static_findings' (which lists findings).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool vs. alternatives like 'search_static_findings' or 'get_static_code_flow'. The use case (fetch a specific finding by ID) is implied but not explicitly stated, and no exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_code_intel_semanticC

Embed a query with the configured embedding backend and search embedded code intelligence records.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo
collectionNo
repoNo
record_typeNo
languageNo
file_roleNo
content_classNo
confidence_kindNo
source_pathNo
symbolNo
metadata_keyNo
metadata_valueNo
metadata_containsNo
snapshot_idNo
include_historicalNo

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits beyond the basic operation. There's no mention of safety, permissions, side effects, or output characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but under-specified. It lacks important details that would help the agent, so it does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (16 parameters, nested objects, no output schema, no annotations), the description is severely incomplete. It fails to convey search behavior, filtering logic, or return value structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and 16 parameters, the description adds no meaning to any parameter. No enum values or additional context are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'embed a query' and 'search embedded code intelligence records', indicating it performs semantic search. However, it could be more precise about what 'embedded' means and how it differs from text search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs siblings like search_code_intel_text or search_static_findings. The description lacks context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_code_intel_textC

Search or list code intelligence records with optional PostgreSQL full-text search and exact filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
limitNo
collectionNo
repoNo
record_typeNo
languageNo
file_roleNo
content_classNo
confidence_kindNo
source_pathNo
symbolNo
metadata_keyNo
metadata_valueNo
metadata_containsNo
snapshot_idNo
include_historicalNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It does not disclose whether the operation is read-only, any side effects, rate limits, or pagination behavior. The description is minimal and does not provide behavioral context beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with front-loaded purpose, but lacks structure such as breaking down search vs list modes. It is concise but could be more organized without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 16 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain pagination limits, return format, or how parameters interact, leaving the agent with insufficient information to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% with 16 parameters. The description adds no meaning beyond the schema parameter names, failing to explain how 'query', 'collection', 'metadata_contains', etc., function together. The baseline for 0% coverage is low, and the description does not compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches or lists code intelligence records, mentioning PostgreSQL full-text search and exact filters. It distinguishes from sibling 'search_code_intel_semantic' by implying a text-based approach, but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like semantic search or static findings search. There is no mention of prerequisites, excluded cases, or context for full-text vs exact filters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_static_findingsC

Search SARIF/static-analysis findings with exact filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
collectionNo
repoNo
toolNo
rule_idNo
levelNo
baseline_stateNo
source_pathNo
snapshot_idNo
include_historicalNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations and a terse description, important behavioral details are missing, such as how filters combine (AND/OR), pagination behavior, performance considerations, or what happens when no filters are applied. The agent is left to infer behavior from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but lacks structure. It could be improved by adding a second sentence to mention key behavioral aspects without adding much length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 10 parameters, no output schema, and no annotations, the description is severely incomplete. An agent cannot effectively use this tool without guessing parameter semantics and expected behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description must explain parameter meanings, but it does not mention any parameters beyond 'exact filters'. The agent has no information on how parameters like 'limit', 'collection', or 'include_historical' affect the search.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for SARIF/static-analysis findings with exact filters, which distinguishes it from sibling tools like search_code_intel_semantic and search_code_intel_text that likely perform semantic or text-based searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus its siblings, nor are there any exclusions or prerequisites mentioned. The description lacks context for appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.0
    • First observedcode_intel_status
    • First observedget_code_intel_record
    • First observedget_static_code_flow
    • First observedget_static_finding
    • First observedrelated_code_intel
    • First observedsearch_code_intel_semantic
    • First observedsearch_code_intel_text
    • First observedsearch_static_findings

TDQS

B3/5.0

Scored across 8 tools

Disambiguation4/5

Tools are mostly distinct in purpose: status overview, individual retrieval of records/findings/flow, semantic/text search, and graph relationships. However, 'get_code_intel_record' and 'related_code_intel' both involve records, but descriptions clarify the difference.

Naming Consistency3/5

Naming mixes patterns: 'get_code_intel_record' vs 'get_static_finding' (different ordering), 'search_code_intel_semantic' vs 'search_static_findings' (inconsistent prefix). 'code_intel_status' and 'related_code_intel' lack verb prefixes, breaking the verb_noun pattern.

Tool Count5/5

With 8 tools, the count is well-scoped for a code intelligence server covering status, retrieval, search, and relationships. Neither sparse nor bloated.

Completeness4/5

Covers core needs: status, record/finding retrieval, two search modes, and graph edges. Missing explicit listing endpoints, but search can substitute. No clear dead ends for a read-only intelligence server.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Local-first code intelligence MCP server with hybrid BM25 + ONNX vector search, symbol-level impact analysis, diff-aware PR review with risk scoring, and persistent memory tied to git state.
    36
    398 npm
    82
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Local-first codebase context engine that parses code into a ranked dependency graph and serves it to AI tools via MCP for deep structural understanding.
    5
    9 npm
    1
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 159 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.
    8
    17
    46,667
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A local code-intelligence engine for AI agents that indexes repositories into a PostgreSQL-backed code graph and serves structured, token-budgeted context over MCP and HTTP, enabling targeted queries on symbols, dependencies, contracts, and impact analysis.
    7
    Apache 2.0