project-code-intelligence
Project Code Intelligence
Интеллект репозитория и доказательства безопасности изменений для агентов кодирования.
Project Code Intelligence (PCI) индексирует Git-репозитории и предоставляет агентам кодирования структурированные доказательства для исследований, рефакторинга, сопровождения и работы по безопасности. Агенты могут искать по концепции или идентификатору, проверять кандидатные связи, оценивать радиус поражения изменения, находить повторяющиеся формы реализации и запрашивать результаты статического анализа перед редактированием кода.
PCI не является автономным рецензентом, а его граф — не граф вызовов компиляторного уровня. Он сужает область поиска и предоставляет доказательства; агент по-прежнему проверяет важные выводы в исходном коде.
С чем он помогает
Исследование и ориентация
Поиск точных идентификаторов, имён файлов, ключей конфигурации и известных строк.
Поиск по поведению, когда соответствующие имена неизвестны.
Просмотр языков репозитория, ролей файлов, снимков, покрытия парсером и свежести индекса.
Получение ограниченных записей с путями, диапазонами строк, метаданными и фрагментами исходного кода.
Работа с несколькими репозиториями через именованные коллекции и фильтры репозиториев.
Более безопасные изменения
Поиск кандидатных вызывающих, вызываемых, ссылок, тестов и связей на уровне модулей.
Проверка доказательств радиуса поражения перед удалением, переименованием или изменением символа.
Выявление сигналов точек входа, осиротевших элементов и покрытия тестами.
Внедрение близлежащих доказательств в поддерживаемых агентов кодирования при добавлении или удалении определений.
Сопровождение и избыточность
Поиск групп функций, повторяющих мотив формы вызова.
Ранжирование кандидатов на избыточность по сходству, оценке стоимости абстракции и вероятной чистой ценности.
Проведение аудита репозитория на устаревшие индексы, дублирующиеся имена, кандидатов на избыточность и статические находки.
Безопасность и статический анализ
Приём отчётов SARIF вместе с записями исходного кода.
Поиск нормализованных находок по инструменту, правилу, уровню, состоянию базовой линии или пути.
Получение диагностики, потоков кода и метаданных запуска без необходимости разбирать агентом сырые артефакты SARIF.
Related MCP server: Graft
Как это работает
pci index разбирает файлы репозитория в ограниченные записи, извлекает метаданные и кандидатные связи и сохраняет снимки в Postgres/pgvector. Семантические эмбеддинги необязательны: лексический поиск и большинство структурных доказательств остаются доступными с --no-embed.
pci mcp предоставляет доступ к индексу через локальный MCP-сервер stdio. Агенты кодирования используют его инструменты, ориентированные на фильтры, для обнаружения вероятно релевантного кода, а затем читают и проверяют живой исходный код перед действием.
Архитектура локального развёртывания по умолчанию:
Postgres/pgvector: Docker или Podman Compose.
Сервисы эмбеддингов для Linux: модули Podman Quadlet, управляемые пользовательским systemd.
Эмбеддинги на Apple Silicon: нативный сервис MLX.
Интеграция с агентами: MCP-сервер stdio с опциональными хуками для доказательств изменений.
Удалённые 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 .Основные инструменты агента
Инструмент | Назначение |
| Свежесть индекса, область действия, количество записей и возможности запросов. |
| Инвентаризация файлов, отфильтрованных по языку, роли, пути или статусу сгенерированности/тестов. |
| Точный индексированный поиск символов, имён файлов, ключей и известных строк. |
| Поиск по концепции, когда идентификаторы неизвестны. |
| Получение полных индексированных записей и метаданных. |
| Кандидатные доказательства вызывающих, вызываемых, ссылок и связанных символов. |
| Вызывающие, тесты, связи, сигналы точек входа и семантические соседи для предлагаемого изменения. |
| Повторяющиеся группы форм вызова, ранжированные по вероятной ценности рефакторинга. |
| Фильтрация нормализованных находок SARIF. |
| Получение диагностики, потоков кода и деталей запуска статического анализа. |
Запустите 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
На NixOS или другом Linux-хосте с включёнными flakes:
nix build
nix run . -- doctor --skip-db --embedding skip
nix developУстановите постоянно в пользовательский профиль:
nix profile install .#project-code-intelligenceЗакрытие Nix содержит CLI, MCP-сервер, зависимости Python и встроенные ресурсы Compose и Quadlet. Тяжёлые среды выполнения эмбеддингов для Linux остаются в контейнерах Podman, а не становятся нативными зависимостями Nix на хосте.
Локальная база данных
Запустите только встроенную базу данных 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-embeddingPCI обнаруживает доступное оборудование, материализует только выбранный бэкенд в ~/.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Контейнеризованные бэкенды публикуют OpenAI-совместимую конечную точку по адресу http://127.0.0.1:18081/v1/embeddings по умолчанию. Запускайте один локальный бэкенд за раз, так как они используют эту конечную точку совместно.
Оборудование | Бэкенд | Примечания по среде выполнения |
CPU | FastEmbed | Переносимый запасной вариант; Podman Quadlet. |
Apple Silicon | MLX | Нативный процесс с использованием GPU Apple. |
AMD Ryzen AI NPU | Lemonade FLM | Экспериментально; требует поддерживаемого оборудования XDNA, драйвера и прошивки. |
AMD GPU | llama.cpp ROCm | Podman Quadlet с |
NVIDIA GPU | llama.cpp CUDA | Требует драйвера NVIDIA, Container Toolkit и поддержки CDI в Podman. |
Остановите сервисы эмбеддингов, не затрагивая базу данных:
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-libPCI выводит имена коллекций и репозиториев из путей. 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 использует мост MCP в локальном для проекта .pi/extensions/. 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 для соглашений проекта и мер защиты публикации.
Документация
docs/MCP_SETUP.md — клиенты MCP, области действия, учетные данные и модель безопасности
docs/PUBLIC_API.md — CLI, окружение, MCP и поверхности совместимости с Python
docs/EVALUATING_VALUE.md — оценка PCI на реальных сессиях кодирования
docs/SYSTEM_PROMPT.md — инструкции для агента по использованию PCI
docs/SYSTEM_PROMPT_RATIONALE.md — обоснование дизайна промптов
docs/SESSION_RETROSPECTIVE_PROMPT.md — промпт оценки в конце сессии
.env.example — справочник по конфигурации окружения
CONTRIBUTING.md — процесс разработки
Лицензия
MIT. См. LICENSE.
Available Tools
8 toolscode_intel_statusC
Check code intelligence snapshot, file, record, edge, and embedding state.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | No | ||
| repo | No | ||
| snapshot_id | No | ||
| include_historical | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| finding_id | Yes | ||
| flow_index | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No | ||
| collection | No | ||
| repo | No | ||
| record_type | No | ||
| language | No | ||
| file_role | No | ||
| content_class | No | ||
| confidence_kind | No | ||
| source_path | No | ||
| symbol | No | ||
| metadata_key | No | ||
| metadata_value | No | ||
| metadata_contains | No | ||
| snapshot_id | No | ||
| include_historical | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| limit | No | ||
| collection | No | ||
| repo | No | ||
| record_type | No | ||
| language | No | ||
| file_role | No | ||
| content_class | No | ||
| confidence_kind | No | ||
| source_path | No | ||
| symbol | No | ||
| metadata_key | No | ||
| metadata_value | No | ||
| metadata_contains | No | ||
| snapshot_id | No | ||
| include_historical | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| collection | No | ||
| repo | No | ||
| tool | No | ||
| rule_id | No | ||
| level | No | ||
| baseline_state | No | ||
| source_path | No | ||
| snapshot_id | No | ||
| include_historical | No |
TDQS
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.
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.
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.
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.
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.
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. Dates show when Glama detected each change.
8 tool updates
v0.1.0- First observed
code_intel_status - First observed
get_code_intel_record - First observed
get_static_code_flow - First observed
get_static_finding - First observed
related_code_intel - First observed
search_code_intel_semantic - First observed
search_code_intel_text - First observed
search_static_findings
TDQS
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 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.
With 8 tools, the count is well-scoped for a code intelligence server covering status, retrieval, search, and relationships. Neither sparse nor bloated.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Ground-truth code graph for your codebase: exact callers, callees, symbols & dependencies.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
Related MCP Servers
- AlicenseAqualityAmaintenanceLocal-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.3644878MIT
- AlicenseBqualityDmaintenanceLocal-first codebase context engine that parses code into a ranked dependency graph and serves it to AI tools via MCP for deep structural understanding.5271MIT
- AlicenseAqualityAmaintenanceHigh-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.1542,343MIT
- AlicenseNot gradedqualityBmaintenanceA 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.Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cvandesande/project-code-intelligence'
If you have feedback or need assistance with the MCP directory API, please join our Discord server