Skip to main content
Glama
cvandesande

project-code-intelligence

by cvandesande

프로젝트 코드 인텔리전스

코딩 에이전트를 위한 저장소 인텔리전스 및 변경 안전성 증거.

프로젝트 코드 인텔리전스(PCI)는 Git 저장소를 인덱싱하고 코딩 에이전트에게 연구, 리팩토링, 유지보수, 보안 작업을 위한 구조화된 증거를 제공합니다. 에이전트는 개념이나 식별자로 검색하고, 후보 관계를 검사하고, 변경의 폭발 반경(blast radius)을 추정하고, 반복되는 구현 형태를 찾고, 코드를 편집하기 전에 정적 분석 결과를 조회할 수 있습니다.

PCI는 자율 검토자가 아니며, 그 그래프는 컴파일러 수준의 호출 그래프가 아닙니다. 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는 의도적으로 더 강력한 인덱스 사실과 근사적·휴리스틱 증거를 구분합니다.

  • 후보 관계 엣지는 타입 검사된 호출 그래프 사실이 아닙니다.

  • 폭발 반경은 변경이 안전하다는 것을 증명할 수 없습니다.

  • 중복 점수는 두 함수가 추상화를 공유해야 하는지 결정할 수 없습니다.

  • 정적 분석 결과는 원래 분석기의 한계를 그대로 유지합니다.

  • 커밋되지 않거나 새로 커밋된 변경 후 인덱스가 오래될 수 있습니다.

  • 의미론적 검색은 관련 코드를 놓치거나 그럴듯한 이웃을 반환할 수 있습니다.

중요한 호출자와 결과를 실제 소스에서 검증하세요. 알려진 경로와 작은 제한된 질문에는 직접 파일 읽기를 사용하세요. 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

flakes가 활성화된 NixOS 또는 다른 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 호환 엔드포인트를 게시합니다. 이 엔드포인트를 공유하므로 한 번에 하나의 로컬 백엔드만 실행하세요.

하드웨어

백엔드

런타임 참고 사항

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

원격 엔드포인트는 소스에서 파생된 텍스트를 수신합니다. 인덱싱 중인 저장소에 허용되는 경우에만 활성화하세요.

저장소 인덱싱

하나의 저장소를 인덱싱합니다:

pci index /path/to/repo

여러 저장소를 워크스페이스로 인덱싱합니다:

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

PCI는 경로에서 컬렉션과 저장소 이름을 유추합니다. MCP 클라이언트는 절대 파일 시스템 경로가 아닌 이러한 논리적 이름으로 필터링합니다. 인덱싱은 증분식입니다. 호환 가능한 스냅샷이 있으면 변경되지 않은 파일이 재사용됩니다.

인덱싱된 저장소 경로에서 발견된 SARIF 보고서는 자동으로 수집됩니다. 하나의 저장소를 재설정하고 다시 빌드하려면:

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는 다음과 같은 경우에 도움이 되는 경향이 있습니다:

  • 저장소 또는 워크스페이스가 크거나 익숙하지 않은 경우;

  • 작업 시작 시 식별자를 모르는 경우;

  • 생성된 파일로 인해 광범위한 읽기가 비용이 많이 들거나 노이즈가 많은 경우;

  • 리팩토링에 호출자, 테스트, 연결 증거가 필요한 경우;

  • 유지보수 작업에 반복 패턴 발견이 필요한 경우;

  • 정적 분석 결과를 소스와 연관시켜야 하는 경우;

  • 여러 저장소를 하나의 인터페이스로 검색해야 하는 경우.

작고 익숙한 저장소, 알려진 파일 및 줄 범위, 또는 제한된 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